İçeriğe atla
Tüm belgeler

Kod

OpenAI Agents SDK

Agents SDK, sohbet tamamlamaları üzerinden nokeep’te çalışır. Ona nokeep’in temel URL’sine bağlı bir AsyncOpenAI istemcisi ver ve modeli OpenAIChatCompletionsModel ile sar.

29 Ekim 2026 tarihinde kontrol edildi

Kurulum ve bağlantı

Shell
pip install openai-agents
export NOKEEP_API_KEY="sk-nokeep-test"  # your own key once it connects
agent.py
import os
from openai import AsyncOpenAI
from agents import Agent, OpenAIChatCompletionsModel, set_tracing_disabled

client = AsyncOpenAI(
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
)
set_tracing_disabled(True)  # traces go to OpenAI's dashboard, which a nokeep key can't reach

model = OpenAIChatCompletionsModel(model="deepseek-v4.1-flash-uncensored", openai_client=client)

from agents import Runner

agent = Agent(name="Editor", instructions="You are a blunt editor.", model=model)
result = Runner.run_sync(agent, "Cut this opening line to ten words: ...")
print(result.final_output)

Aksi söylenmedikçe SDK, Responses API’yi (/v1/responses) çağırır; nokeep’te ise yalnızca sohbet tamamlamaları vardır. Modeli OpenAIChatCompletionsModel ile sarmak her şeyi çalıştıran adımdır.

Ya da tüm ajanlar için bir kez ayarla

Python
import os
from openai import AsyncOpenAI
from agents import Agent, set_default_openai_api, set_default_openai_client, set_tracing_disabled

set_default_openai_client(AsyncOpenAI(base_url="https://nokeep.ai/v1", api_key=os.environ["NOKEEP_API_KEY"]), use_for_tracing=False)
set_default_openai_api("chat_completions")
set_tracing_disabled(True)

agent = Agent(name="Editor", instructions="You are a blunt editor.", model="deepseek-v4.1-flash-uncensored")

Ajanlar bundan sonra model kimliğini düz bir metin olarak alır. Ajanlar arasındaki devirler (handoff) de aynı şekilde çalışır.

Araçlar

Python
from agents import Agent, Runner, function_tool

@function_tool
def get_weather(city: str) -> str:
    """Get the weather in a city."""
    return f"18°C and clear in {city}"

agent = Agent(
    name="Weather",
    instructions="Answer questions about the weather.",
    model=model,
    tools=[get_weather],
)
print(Runner.run_sync(agent, "What's the weather in Lisbon?").final_output)

SDK her aracı strict: true ile gönderir ve döngüyü yürütür: model bir araç ister, SDK onu çalıştırır ve sonucu geri gönderir; model yanıt verene kadar. Bkz. Araç çağrıları.

Akış ve kullanım

Python
import asyncio
from agents import Runner
from openai.types.responses import ResponseTextDeltaEvent

async def main():
    result = Runner.run_streamed(agent, "Tell me a story in three lines.")
    async for event in result.stream_events():
        if event.type == "raw_response_event" and isinstance(event.data, ResponseTextDeltaEvent):
            print(event.data.delta, end="", flush=True)
    print("\n", result.context_wrapper.usage)

asyncio.run(main())

SDK bir akışta kullanım ister; bu yüzden context_wrapper.usage tüm çalıştırmanın token sayılarını, her model çağrısı toplanmış halde tutar.

Akıl yürütme çabası ve diğer ayarlar

Python
from agents import Agent, ModelSettings
from openai.types.shared import Reasoning

planner = Agent(
    name="Planner",
    instructions="Plan before you answer.",
    model=model,
    model_settings=ModelSettings(
        reasoning=Reasoning(effort="high"),  # sent as reasoning_effort
        max_tokens=4000,
        extra_body={"min_p": 0.05},  # fields ModelSettings has no argument for
    ),
)

Düşünme max_tokens içinde sayılır; bu yüzden düşünen bir ajana yer bırak. Bkz. Düşünme.

Dikkat edilecekler

  • `reasoning_effort` yalnızca modelin kendi değerlerini kabul eder. deepseek-v4.1-flash-uncensored none, low, high, max alır; glm-5.3-flash-uncensored low, high alır. Diğer uygulamaların minimal, medium ve xhigh değerleri modelin en yakın düzeyinde çalışır (medium high olarak, xhigh modelde varsa max olarak); başka her değer 400 invalid_reasoning_effort hatası verir. Bkz. Düşünme.
  • GLM araçlarını kendi seçer. glm-5.3-flash-uncensored yalnızca auto ya da none tool_choice değeri kabul eder. Bir aracı zorlamak (required ya da bir işlev adı vermek) 400 unsupported_tool_choice hatası verir. Bir aracı zorlaman gerekiyorsa DeepSeek kullan. SDK’da bu ModelSettings(tool_choice="required") ya da bir araç adıdır.
  • Bir modelin alamayacağı alanlar reddedilmez, atılır. Çağrı yine yanıt verir ve x-nokeep-ignored yanıt başlığı, dışarıda bırakılanları söyler. GLM yalnızca tools, tool_choice ve reasoning_effort alanlarını tutar; bu yüzden temperature ve response_format atılır. Bkz. her modelin hangi alanları aldığı.
  • Yalnızca sohbet tamamlamaları. /v1/responses ve /v1/embeddings yoktur; bunlardan birini varsayılan alan bir çerçeveyi sohbet tamamlamalarına yönlendirmen gerekir, gömmeler için başka bir sağlayıcı gerekir.

Web araması, dosya araması ve kod yorumlayıcısı gibi barındırılan araçlar, Responses API üzerinden OpenAI’nin kendi sunucularında çalışır. nokeep dahil başka hiçbir API ile çalışmazlar. Bunları işlev aracı olarak yaz.

Sorular

Ayrıca bir OpenAI anahtarı gerekir mi?

Hayır. Her model çağrısı nokeep anahtarınla nokeep’e gider. İzleme (tracing) verisi OpenAI’nin panosuna yüklenir; izleme açıkken ve OpenAI anahtarı ayarlı değilken SDK OPENAI_API_KEY is not set, skipping trace export yazar ve ajan yine de çalışır. set_tracing_disabled(True) bunu susturur.

Bir ajan hangi modeli kullanmalı?

deepseek-v4.1-flash-uncensored: bir aracı çağırmaya zorlanabilir, resim okur ve her ayarı alır. glm-5.3-flash-uncensored daha ucuzdur ve aracı modelin kendisinin seçtiği ajanlarda işini görür.