İçeriğe geç

Chat Completions

LLMTR gateway, OpenAI Chat Completions API’sine uyumludur. Tüm istekler https://llmtr.com/v1/chat/completions adresine POST edilir.

POST /v1/chat/completions
Authorization: Bearer llmtr-your_key
Content-Type: application/json
AlanTipZorunluAçıklama
modelstringevetCanonical model ID (örn. openai/gpt-4o)
messagesarrayevetOpenAI messages formatı
streambooleanhayırtrue ise SSE akışı döner
temperaturenumberhayır0-2 aralığında, default model’e göre değişir
max_tokensintegerhayırÇıktı token üst sınırı
top_pnumberhayırNucleus sampling
frequency_penaltynumberhayır-2 ile 2 arası
presence_penaltynumberhayır-2 ile 2 arası
stopstring/arrayhayırDurdurma dizileri
response_formatobjecthayır{ "type": "json_object" } destekleyen modellerde
toolsarrayhayırFunction calling (destekleyen modellerde)
tool_choicestring/objecthayırauto, none veya belirli tool
Terminal window
curl https://llmtr.com/v1/chat/completions \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "What is LLMTR?"}
],
"temperature": 0.3,
"max_tokens": 200
}'

Başarılı yanıt OpenAI formatıyla birebir aynıdır:

{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1739200000,
"model": "openai/gpt-4o",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "LLMTR is a unified gateway..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 52,
"total_tokens": 76
}
}

Tüm modeller canonical olarak provider/model şeklinde referanslanır:

  • openai/gpt-4o
  • anthropic/claude-sonnet-4.5
  • google/gemini-2.5-flash
  • deepseek/deepseek-v4-flash
  • mistral/mistral-large-latest

Tüm katalog için dashboard model listesini veya /api/models endpoint’ini kullanın.

Bazı sağlayıcılar ek body alanları veya özel seçenekler destekler. Desteklenen alanları doğrudan isteğinize ekleyebilirsiniz.

tencent/hy3 düşünmeyi varsayılan olarak kapalı tutar. Düşünmeyi açmak için canonical suffix veya standart body alanını kullanın:

{ "model": "tencent/hy3:low", "messages": [{ "role": "user", "content": "Bu kodu analiz et." }] }
{ "model": "tencent/hy3", "reasoning": { "effort": "high" }, "messages": [{ "role": "user", "content": "Bu kodu analiz et." }] }

Yalnız low ve high desteklenir. tools bulunan low istekleri, Hy3 adaptive-thinking davranışı nedeniyle upstream’de high olarak yürütülür. Yanıtta reasoning_content, usage.completion_tokens_details.reasoning_tokens ve cache hit olduğunda usage.prompt_tokens_details.cached_tokens alanları bulunabilir. Reasoning tokenları zaten completion_tokens içindedir ve ikinci kez ücretlendirilmez.

Çok adımlı tool calling sırasında dönen assistant mesajını tool_calls, content ve reasoning_content alanlarıyla birlikte geçmişe ekleyin. Alanı düşürmek modelin sonraki turdaki reasoning bağlamını bozar.

llmtr/qwen3-5-4b Türkiye’de barındırılan bir modeldir: istekler üçüncü taraf bir sağlayıcıya yönlendirilmez. 64K bağlam penceresi (prompt + cevap birlikte) sunar ve tool calling destekler.

Düşünme varsayılan olarak kapalıdır. Açmak için canonical suffix’i veya body alanını kullanın:

{ "model": "llmtr/qwen3-5-4b:think", "messages": [{ "role": "user", "content": "Bu problemi adım adım çöz." }], "max_tokens": 2048 }
{ "model": "llmtr/qwen3-5-4b", "reasoning": true, "messages": [{ "role": "user", "content": "Bu problemi adım adım çöz." }], "max_tokens": 2048 }

Düşünme açıkken model yanıttan önce uzun bir akıl yürütme üretir ve bu message.reasoning_content alanında döner. Akıl yürütme max_tokens bütçesinden harcanır: bütçe küçükse tamamı akıl yürütmede tükenir, content boş döner ve finish_reason length olur. Düşünmeyi açtığınızda max_tokens değerini en az 2048 verin. Kapalı hâlde ekstra akıl yürütme tokenı harcanmaz ve yanıtlar belirgin şekilde hızlıdır.

Model prompt cache destekler. Aynı prompt önekini (örneğin sabit bir sistem promptu) tekrar gönderdiğinizde cache devreye girer; cache’ten okunan token sayısı usage.prompt_tokens_details.cached_tokens alanında döner ve bu tokenlar indirimli cache read fiyatından faturalanır. Uzun sistem promptu kullanan RAG ve chatbot akışlarında maliyeti azaltmak için sabit içeriği mesaj dizisinin başında, değişen içeriği sonunda tutun.

Model yalnız metin kabul eder; görsel, ses ve video girdisi gönderilirse istek 400 unsupported_input döner.

moonshot/kimi-k3, moonshot/kimi-k2.7-code, moonshot/kimi-k2.6 ve moonshot/kimi-k2.5 modelleri thinking varsayılan açık çalışır. moonshot/kimi-k2.7-code için non-thinking mod desteklenmez; thinking alanını hiç göndermeyin veya { "type": "enabled" } kullanın. thinking: { "type": "disabled" } 400 invalid_request döner.

moonshot/kimi-k3 için thinking kapatılabilir: istek gövdesinde "reasoning": false gönderin veya model adına :fast suffix’i ekleyin (moonshot/kimi-k3:fast). :think suffix’i thinking’i açık tutar; suffix ve reasoning alanı verilmezse varsayılan davranış thinking açıktır. Thinking kapalıyken yanıt reasoning_content içermez ve reasoning tokenı üretilmez. Reasoning tokenları output olarak faturalandığı için kısa yanıtlarda bile max_tokens değerini yüksek tutun (en az 1024 önerilir).

Kimi K3, K2.7 Code, K2.6 ve K2.5 için sampling değerleri sabittir: temperature=1, top_p=0.95, n=1, presence_penalty=0, frequency_penalty=0. Farklı n, presence/frequency penalty veya Kimi’nin desteklemediği tool_choice biçimleri upstream hatası beklenmeden 400 döndürür. K2 ailesinde tool_choice yalnızca auto veya none kabul eder; kimi-k3 ek olarak required destekler. Belirli bir fonksiyonu zorlayan {"type": "function", ...} biçimi hiçbir Kimi modelinde desteklenmez.

kimi-k3 web araması desteklemez; $web_search içeren istekler 400 döner. Web araması gereken akışlarda kimi-k2.7-code veya kimi-k2.6 kullanın.

Çok adımlı tool calling sırasında Kimi, assistant tool-call mesajında reasoning_content alanı döndürebilir. Sonraki tool result turunda bu assistant mesajını tool_calls ve reasoning_content ile birlikte koruyun; LLMTR bu provider-specific alanı tur boyunca korur.

Medya girdilerinde remote URL yerine base64 data URL kullanın. Görsel ve video parçaları data: URL olarak gönderilmelidir; remote medya URL’leri 400 unsupported_input döner.

Aktif chat model kimlikleri: mimo/mimo-v2.5-pro, mimo/mimo-v2.5.

Eski MiMo V2 model kimlikleri 30 Haziran 2026 00:00 Beijing saati sonrasında model_retired (HTTP 410) hatası döner. Endpoint ve API key değişmez; model ID’yi aşağıdaki replacement kimliğe taşıyın.

Eski model IDReplacement model IDGeçiş davranışı
mimo/mimo-v2-promimo/mimo-v2.5-pro1 Haziran 2026’dan itibaren LLMTR tarafından otomatik yönlendirilir
mimo/mimo-v2-omnimimo/mimo-v2.51 Haziran 2026’dan itibaren LLMTR tarafından otomatik yönlendirilir
mimo/mimo-v2-flashmimo/mimo-v2.518 Haziran 2026’dan itibaren MiMo upstream tarafından otomatik yönlendirilir; 30 Haziran 2026 sonrası eski ID kabul edilmez

LLMTR’de MiMo TTS modeli şu an expose edilmez; TTS/ASR desteği geldiğinde ayrı endpoint ve doküman ile duyurulacaktır.

Web aramasını etkinleştirme. İki yöntem de kullanılabilir:

// Yöntem 1: Tool alanı ile
{ "tools": [{ "type": "web_search" }] }
// Yöntem 2: Body alanı ile
{ "webSearchEnabled": true }

Web araması kullanılan isteklerde ek sağlayıcı ücretleri oluşabilir. Üretim trafiği göndermeden önce ilgili modelin fiyatını kontrol edin.

Thinking kontrolü. Destekleyen modellerde body alanına thinking ekleyerek davranışı ayarlayabilirsiniz:

{ "thinking": { "type": "enabled" } } // veya "disabled"
HTTPerror.typeAnlamı
400invalid_request_errorGeçersiz parametre / eksik alan
401auth_errorGeçersiz veya süresi dolmuş API anahtarı
403forbiddenBu model için yetki yok
410model_retiredModel kullanımdan kaldırıldı; hata mesajındaki replacement model ID’sini kullanın
429rate_limit_exceededRate limit aşıldı
500internal_errorGateway iç hatası
502provider_errorSağlayıcı tarafında hata

Detay için Hatalar bölümüne bakın.