İç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-3.6-flash
  • deepseek/deepseek-v4-flash
  • mistral/mistral-large-latest

Tüm katalog için dashboard model listesini veya GET /v1/models ucunu kullanın.

Bir model sağlayıcı tarafından kullanımdan kaldırıldığında LLMTR isteği sessizce başka bir modele yönlendirmez. Emeklilik tarihinden sonra istek 410 ile reddedilir ve yanıt hangi modele geçmeniz gerektiğini söyler:

{
"error": {
"type": "model_retired",
"message": "Model \"google/gemini-2.5-flash\" was retired on 2026-10-16. Use \"google/gemini-3.6-flash\" instead.",
"details": {
"model": "google/gemini-2.5-flash",
"retirement_date": "2026-10-16",
"replacement_model": "google/gemini-3.6-flash",
"status": "retired"
}
}
}

Model sayfası ve katalog kartı, emeklilik tarihinden önce de uyarı gösterir; /v1/models çıktısı ise emekli modelleri listelemez.

Google, Gemini 2.5 metin modellerini Gemini Enterprise Agent Platform üzerinde kullanımdan kaldırıyor. LLMTR bu üç kimliği 16 Ekim 2026 tarihinde kapatır:

Kapanan modelÖnerilen karşılığı
google/gemini-2.5-flashgoogle/gemini-3.6-flash
google/gemini-2.5-flash-litegoogle/gemini-3.5-flash-lite
google/gemini-2.5-progoogle/gemini-3.1-pro-preview

Diğer google/gemini-2.5-* modelleri (görsel, TTS, native audio, computer use) bu kapanmanın kapsamında değildir.

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.

Model 256K pencere ile duyurulur, ancak tek bir istek en fazla 192K token (196.608) girdi kabul eder. Bu sınırın üzerindeki istemlerde sağlayıcı hata döndürmez: istemin baş tarafını sessizce düşürür, kalanla yanıt verir ve kaybı bildirmez. Bu yüzden /v1/models bu model için context_length değerini 196608 olarak bildirir; bağlam boyutunu bu alandan okuyan istemciler otomatik olarak sınırın altında kalır. İstemi elle boyutlandırıyorsanız uzun dokümanları bu sınırın altında tutun veya parçalara bölün.

tencent/hy4-preview, Hy3'ün aksine düşünmeyi varsayılan olarak açık tutar ve farklı bir alan kullanır: Hy3’ün reasoning.effort kademeleri yerine tek bir kapatma anahtarı sunar.

{ "model": "tencent/hy4-preview:none", "messages": [{ "role": "user", "content": "2+2 kaç eder? Sadece sayı." }] }
{ "model": "tencent/hy4-preview", "reasoning_effort": "none", "messages": [{ "role": "user", "content": "2+2 kaç eder? Sadece sayı." }] }

Yalnız none desteklenir. Sağlayıcı diğer seviyeleri kabul etse de ölçümde düşünme uzunluğunu düzenli biçimde değiştirmiyorlar; seçilebilir olsalardı hiçbir şeyi değiştirmeden düşünme tokenı faturalatırlardı. Desteklenmeyen bir seviye istenirse istek yukarı akışa gitmeden 400 ile reddedilir.

Yanıtta reasoning_content ve usage.completion_tokens_details.reasoning_tokens döner; reasoning tokenları zaten completion_tokens içindedir ve ikinci kez ücretlendirilmez. Model prompt cache destekler, cache’ten okunan tokenlar usage.prompt_tokens_details.cached_tokens alanında gelir ve indirimli cache okuma fiyatından faturalanır.

json_schema ile şema zorlamalı JSON çıktısı verir. Araç çağrısında iki sınırı vardır — tool_choice: "required" desteklenmez ve isimli seçimde finish_reason yanlış etiketlenir; ayrıntı için Tool Calling sayfasına bakın.

Model yalnızca metin kabul eder. Gönderilen görsel hata verilmeden düşürülür: istek 200 döner, prompt_tokens yalnızca metni sayar ve model görseli göremediğini söyler. Bu modele görsel göndermeyin.

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

Düşünme varsayılan olarak açıktır. Model yanıttan önce bir akıl yürütme üretir ve bunu message.reasoning_content alanında döndürür. 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. Varsayılan modda max_tokens değerini en az 2048 verin.

Düşünmeyi kapatmak için canonical suffix'i veya body alanını kullanın:

{ "model": "llmtr/qwen3-5-4b:fast", "messages": [{ "role": "user", "content": "Bu urunu tek cumlede ozetle." }], "max_tokens": 256 }
{ "model": "llmtr/qwen3-5-4b", "reasoning": false, "messages": [{ "role": "user", "content": "Bu urunu tek cumlede ozetle." }], "max_tokens": 256 }

Kapalı hâlde ekstra akıl yürütme tokenı harcanmaz, yanıt reasoning_content içermez ve yanıtlar belirgin şekilde hızlıdır. Kısa yanıt bekleyen sınıflandırma, etiketleme ve özetleme akışlarında bu modu tercih edin.

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.

Görsel girdi yalnızca base64 data URL olarak kabul edilir; uzak bir https:// görsel adresi 400 unsupported_input döner. Ayrıntı için LLMTR Qwen 3.5 4B sayfasına bakın. Ses ve video girdisi desteklenmez.

Aşağıdaki modeller sabit sampling ayarlarıyla çalışır ve temperature ile top_p değerlerini kabul etmez:

openai/o1, openai/o3, openai/o3-mini, openai/o4-mini, openai/gpt-5.5, openai/gpt-5.5-pro, openai/gpt-5.6-sol, openai/gpt-5.6-sol-pro, openai/gpt-5.6-terra, openai/gpt-5.6-terra-pro, openai/gpt-5.6-luna, openai/gpt-5.6-luna-pro, openai/gpt-6-astra

Bu modellere temperature veya top_p gönderirseniz istek reddedilmez: LLMTR ilgili alanı gövdeden çıkarır ve isteği çalıştırır. Hangi alanların çıkarıldığı yanıtta bildirilir:

{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"choices": [],
"usage": {},
"llmtr_dropped_parameters": ["temperature", "top_p"]
}

llmtr_dropped_parameters alanı yalnızca gerçekten bir alan çıkarıldığında bulunur; diğer tüm yanıtlar OpenAI şemasıyla birebir aynıdır. Akış (streaming) modunda aynı alan son chunk'ta döner.

Bu modeller /v1/models çıktısında supported_parameters içinde temperature ve top_p listelemez, dolayısıyla bu alanı okuyan ajan çerçeveleri parametreyi kendiliğinden göndermez.

Not: Her reasoning modeli bu grupta değildir. openai/gpt-5.3-codex reasoning yapar ve temperature kabul eder. Ayrımı model bazında ölçüyoruz, model ailesine göre varsaymıyoruz.

openai/o1, openai/o3, openai/o3-mini ve openai/o4-mini düşünme derinliğini reasoning_effort ile kabul eder. Desteklenen seviyeler low, medium ve high. Model kimliğine suffix olarak da yazabilirsiniz:

{ "model": "openai/o4-mini:high", "messages": [{ "role": "user", "content": "Bu algoritmanin karmasikligini analiz et." }] }
{ "model": "openai/o4-mini", "reasoning_effort": "high", "messages": [{ "role": "user", "content": "Bu algoritmanin karmasikligini analiz et." }] }

Seviye verilmezse alan gönderilmez ve OpenAI kendi varsayılanını uygular.

xhigh bilerek desteklenmez. Sağlayıcı bu değeri kabul edip 200 döndürüyor, ancak ölçümde dört modelde de düşünme tokenı üretmiyor: seçilebilir olsaydı hiçbir şeyi değiştirmeden seçim sunardı. Desteklenmeyen bir seviye istenirse istek yukarı akışa gitmeden 400 ile reddedilir ve hata mesajı çalışan seviyeleri sayar.

Yanıtta düşünme tokenları usage.completion_tokens_details.reasoning_tokens alanında raporlanır; bu tokenlar zaten completion_tokens içindedir ve ikinci kez ücretlendirilmez.

moonshot/kimi-k2.5, 5 Eylül 2026'da emekli edilmiştir (model_retired, HTTP 410); yeni ve mevcut entegrasyonlarda moonshot/kimi-k2.6 kullanın.

moonshot/kimi-k3, moonshot/kimi-k2.7-code ve moonshot/kimi-k2.6 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 ve K2.6 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.