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ı
pip install openai-agents
export NOKEEP_API_KEY="sk-nokeep-test" # your own key once it connectsimport 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
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
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
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
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-uncensorednone,low,high,maxalır;glm-5.3-flash-uncensoredlow,highalır. Diğer uygulamalarınminimal,mediumvexhighdeğerleri modelin en yakın düzeyinde çalışır (mediumhigholarak,xhighmodelde varsamaxolarak); başka her değer400 invalid_reasoning_efforthatası verir. Bkz. Düşünme. - GLM araçlarını kendi seçer.
glm-5.3-flash-uncensoredyalnızcaautoya danonetool_choicedeğeri kabul eder. Bir aracı zorlamak (requiredya da bir işlev adı vermek)400 unsupported_tool_choicehatası verir. Bir aracı zorlaman gerekiyorsa DeepSeek kullan. SDK’da buModelSettings(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-ignoredyanıt başlığı, dışarıda bırakılanları söyler. GLM yalnızcatools,tool_choicevereasoning_effortalanlarını tutar; bu yüzdentemperatureveresponse_formatatılır. Bkz. her modelin hangi alanları aldığı. - Yalnızca sohbet tamamlamaları.
/v1/responsesve/v1/embeddingsyoktur; 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.