Sohbet
Sohbet tamamlamaları
OpenAI'ın Chat Completions API'si, tüm metin modelleri için: aynı istek ve yanıt, aynı akış, aynı SDK'lar.
/v1/chat/completionsİstek
modelstringzorunlu- Modeller sayfasından bir model kimliği, örneğin
claude-opus-5-5veyagpt-6-sol. messagesarrayzorunlu- Konuşma:
system(veyadeveloper),user,assistantvetoolmesajları.contentbir metin dizesi veya görsel, PDF, ses ya da video eklemek için parçalardan oluşan bir dizidir. streamboolean- Yanıtı oluşturulurken sunucu tarafından gönderilen olaylar olarak iletir. Aşağıdaki Akış bölümüne bakın.
stream_optionsobject{ "include_usage": true }, token kullanımını içeren son bir parça ekler.max_completion_tokensinteger- Akıl yürütme dahil, üretilecek en fazla token sayısı.
max_tokensda kullanılabilir. temperaturenumber- 0 ile 2 arasında. Düşük değerler daha odaklı, yüksek değerler daha çeşitli yanıtlar üretir. Bazı akıl yürütme modelleri bunu dikkate almaz. Opus 4.7 ve sonrasındaki Claude modelleri (Opus 5 ve 5.5, Fable 5 ve 5.1, Sonnet 5.5, Haiku 5.5) bunu kabul etmediği için bu modellerde isteğe eklemiyoruz.
top_pnumber- Çekirdek örnekleme, 0 ile 1 arasında. Ya bunu ya da temperature değerini değiştirin, ikisini birden değil. Aynı Claude modellerinde isteğe eklenmez; top_k da bu modellerde ve Muse Wonder'da isteğe eklenmez.
stopstring | array- Üretimi durduran en fazla 4 dizi.
toolsarray- Modelin çağırabileceği fonksiyonlar. Aşağıdaki Araç çağırma bölümüne bakın.
tool_choicestring | objectauto,none,requiredveya belirli bir fonksiyon. Modelin geliştiricisi bunlardan birini reddediyor ya da dikkate almıyorsa (Claude Opus 5.5, Sonnet 5.5 ve Fable 5.1'de zorunlu araç kullanımı; Muse Wonder'daautodışındaki her seçenek; bazı Gemini, DeepSeek Flash, MiMo, HY4 ve MiniMax modellerindenone), bunu modelin uyacağı bir biçimde gönderir ve modelden ne istediğinizi belirtiriz; adıyla zorunlu kılınan bir fonksiyon, sunulan tek fonksiyon olarak gönderilir.response_formatobject- JSON çıktısı:
{ "type": "json_object" }veya bir şemayla birliktejson_schema. Aşağıdaki Yapılandırılmış çıktı bölümüne bakın. reasoning_effortstring- Bir akıl yürütme modelinin ne kadar yoğun düşüneceği:
none,minimal,low,medium,high,xhighveyamax. Her model bunların bazılarını kabul eder (aşağıdaki Akıl yürütme bölümüne bakın); başka bir düzey seçilirse desteklediği en yakın düzeyde çalışır. Daha yüksek düzeyler daha uzun düşünür ve daha fazla çıktı token'ı harcar. seedinteger- Destekleyen modellerde, mümkün olduğunca tekrarlanabilir sonuçlar.
modelsarray- Bu istek için akıllı yönlendirme: model kullanılamıyorsa sırayla denenecek alternatifler. Bkz. Akıllı yönlendirme.
user ve metadata dışında modele değiştirilmeden iletilir. Modelin hangilerini uyguladığı (araçlar, JSON şemaları, akıl yürütme), kendi sağlayıcısında olduğu gibi modele bağlıdır. OpenAI Python SDK ile models değerini extra_body={"models": [...]} olarak gönderin.Yanıt
{ "id": "chatcmpl-AbC123...", "object": "chat.completion", "created": 1790870400, "model": "claude-opus-5-5", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Here's the summary..." }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 1204, "completion_tokens": 312, "total_tokens": 1516, "prompt_tokens_details": { "cached_tokens": 1024 }, "completion_tokens_details": { "reasoning_tokens": 128 } }}model, yanıt veren modeldir. Akıllı yönlendirme bir alternatifle yanıt vermediyse, istediğiniz modeldir.- Akıl yürüten modeller mesaja
reasoning_contentekleyebilir: modelin paylaştığı düşünme sürecidir. usage, ücretlendirilen kullanımdır.cached_tokens, modelin istem önbelleğinden okunan girdi tokenlarıdır; modelin önbellek fiyatı varsa bu fiyat üzerinden ücretlendirilir.
Her yanıtta şu başlıklar da bulunur:
Akış
stream: true ile yanıt, OpenAI’ın parça biçiminde sunucu tarafından gönderilen olaylar olarak gelir ve data: [DONE] ile biter. Tüm SDK’lar bunları sizin için okur.
import osfrom openai import OpenAIclient = OpenAI( base_url="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"],)stream = client.chat.completions.create( model="claude-sonnet-5-5", messages=[ { "role": "user", "content": "Write a limerick about databases." } ], stream=True, stream_options={ "include_usage": True },)for chunk in stream: if chunk.choices and chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True)- Model ilk tokenını üretmeden yanıt gönderilmez; böylece yeniden deneme veya başka bir yola geçiş sizin tarafınızda görünmez.
- Sessiz aralıklarda (model adımlar arasında düşünürken) her 15 saniyede bir SSE yorum satırları (
: keep-alive) gönderilir. İstemciler bunları yok sayar; bu satırlar proxy’lerin bağlantıyı kapatmasını önler. İlk tokenın gelmesi 20 saniyeden uzun sürerse (uzun bir istem veya takılıp değiştirilen bir yol nedeniyle), akış o anda açılır: siz beklerken başlıklar ve bağlantıyı açık tutan yorumlar gelir. Sonraki yol denenmeden önce her yola başlaması için en fazla 3 dakika (yüksek akıl yürütme çabasında 5) tanınır; bu nedenle istemcinizin zaman aşımını 10 dakika olarak ayarlayın. - İlk tokenından önce açılan bir akış, yalnızca başka bir model yanıt veremiyorsa (akıllı yönlendirme kapalıysa)
x-zurelay-modeliçerir. Akış açıldıktan sonra oluşan bir hata ise hata durum kodu yerine akış içinde bir hata olayı olarak gelir (hata gövdesiyle aynı yapıda). include_usageile[DONE]öncesindeki son parça, boş birchoiceslistesi veusageiçerir.
Araç çağırma
Fonksiyonları tools içinde tanımlayın; model birini çağırmak istediğinde metin yerine tool_calls ile yanıt verir. Fonksiyonu çalıştırın, sonucu çağrının kimliğiyle birlikte bir tool mesajı olarak geri gönderin; model devam eder.
import osfrom openai import OpenAIclient = OpenAI( base_url="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"],)response = client.chat.completions.create( model="gpt-6-sol", messages=[ { "role": "user", "content": "What's the weather in Lisbon right now?" } ], tools=[ { "type": "function", "function": { "name": "get_weather", "description": "Current weather for a city", "parameters": { "type": "object", "properties": { "city": { "type": "string" } }, "required": [ "city" ] } } } ],)print(response.choices[0].message.content)Yapılandırılmış çıktı
response_format ile JSON isteyin. json_schema, destekleyen modellerin şemanıza uymasını sağlar; json_object ise geçerli herhangi bir JSON ister (bunu isteminizde de belirtin).
import osfrom openai import OpenAIclient = OpenAI( base_url="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"],)response = client.chat.completions.create( model="gpt-6.1-sol", messages=[ { "role": "user", "content": "Extract the people: 'Ana met Ben and Chloe in Porto.'" } ], response_format={ "type": "json_schema", "json_schema": { "name": "people", "schema": { "type": "object", "properties": { "names": { "type": "array", "items": { "type": "string" } } }, "required": [ "names" ] } } },)print(response.choices[0].message.content)Akıl yürütme
Akıl yürüten modeller yanıt vermeden önce düşünür. Hız ve maliyet ile derinlik arasındaki dengeyi reasoning_effort ile ayarlayın: daha yüksek seviye, daha uzun düşünür, daha fazla zaman alır ve daha çok çıktı tokenı kullanır. Her model, kendi sağlayıcısının belgelediği seviyeleri destekler: none (düşünme yok) ile başlayıp minimal, low, medium, high ve xhigh (ekstra yüksek) üzerinden max seviyesine uzanır; aşağıdaki tabloda bunlar listelenmiştir. Belirtmezseniz model varsayılan seviyesini kullanır. Tüm OpenAI SDK’larında aynı şekilde çalışır; her seviyeyi kontrol panelindeki Deneme Alanı bölümünde deneyebilirsiniz.
from openai import OpenAIclient = OpenAI(base_url="https://api.zurelay.com/v1", api_key="YOUR_ZURELAY_KEY")response = client.chat.completions.create( model="zurelay-auto", reasoning_effort="high", messages=[{"role": "user", "content": "How many primes are there below 1,000?"}],)message = response.choices[0].messageprint(getattr(message, "reasoning_content", None)) # the thinking, when the model shares itprint(message.content)Düşünme sürecini paylaşan modellerde bu süreç, yanıtla birlikte message.reasoning_content içinde (akış sırasında delta.reasoning_content içinde) döner; bazıları bu alanı reasoning olarak adlandırır. Çıktı tokenı olarak ücretlendirilir ve her zaman completion_tokens kapsamındadır; model ayrıca raporluyorsa completion_tokens_details.reasoning_tokens bunu ayrı sayar. Yüksek çaba seviyesinde yanıtın başlaması dakikalar alabilir; bu nedenle istemcinize yeterince uzun bir zaman aşımı tanıyın (bkz. Güvenilirlik ve zaman aşımları).
Model bazında seviyeler
Her sağlayıcının kendi belgelerine dayanır. Modelin desteklemediği bir seviye, desteklediği en yakın seviyede çalışır (eşit uzaklıktaki iki seviyeden düşük olan seçilir; düşünme ise yalnızca none gönderdiğinizde kapanır). Böylece tek bir istek, akıllı yönlendirme dahil tüm modellerde çalışır. x-zurelay-reasoning-effort yanıt başlığı, hangi seviyenin kullanıldığını belirtir. Seviye olmayan bir kelime, modelin seviyelerini listeleyen bir 400 ile reddedilir.
Claude’un düşünme süreci
Bu uç noktada Claude, diğer modeller gibi reasoning_effort kabul eder: low, medium, high, xhigh veya max (Opus 4.6, xhigh desteklemez). Anthropic’in kendi biçiminde Claude, belirlenen seviyede uyarlamalı olarak düşünür: thinking: { type: "adaptive", display: "summarized" } ile birlikte output_config: { effort: "xhigh" } gönderin ve düşünme bloklarını okuyun. Bkz. Anthropic Messages.
Sorunuz mu var, yoksa bir şey mi eksik? Destek ekibimize sorun, genellikle bir dakika içinde e-postayla yanıtlayalım.