İçeriğe geç

LLMTR Nanbeige4.2 3B

Nanbeige4.2 3B, Türkiye'de barındırdığımız küçük bir sohbet modelidir. llmtr/nanbeige4-2-3b canonical model kimliği ile /v1/chat/completions üzerinden çağrılır. Kısa özetleme, sınıflandırma ve az adımlı araç çağırma akışları için uygundur.

Özellik Değer
Model kimliği llmtr/nanbeige4-2-3b
Bağlam penceresi 32.768 token (32K)
Fiyat (input / output / cache read) 1.00 / 3.00 / 0.25 $ per 1M token
Görsel girdi Yok
Prompt cache Var
Araç çağırma Var, yalnızca tool_choice: "auto"
JSON çıktısı Yok
Düşünme modu Var, varsayılan kapalı
Ses / video girdisi Yok
Görsel üretimi Yok
Terminal window
curl "$LLMTR_BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "llmtr/nanbeige4-2-3b",
"messages": [
{ "role": "system", "content": "Her zaman Turkce ve kisa cevap ver." },
{ "role": "user", "content": "Bu musteri mesajini olumlu, olumsuz ya da notr olarak siniflandir: Kargo gec geldi ama urun saglam." }
],
"max_tokens": 256
}'

Model çoğunlukla İngilizce ve Çince eğitilmiştir. Türkçe yanıt istiyorsanız bunu sistem mesajında açıkça belirtin ve çıktıyı kendi örneklerinizle kontrol edin.

Yanıtlar yavaş üretilir; birkaç yüz tokenlık bir cevap dakikalar sürebilir. Uzun bir istemin ilk gönderimi de cevap başlamadan önce zaman alır. Bu yüzden:

  • Kullanıcıya gösterilen yerlerde "stream": true kullanın; cevap üretildikçe görünür.
  • İstemci zaman aşımını en az 300 saniye yapın. Düşünme açıksa ya da uzun yanıt bekliyorsanız daha uzun tutun.
  • max_tokens değerini işin ihtiyacı kadar verin. Göndermezseniz yanıt 4.096 tokende kesilir ve finish_reason length olur.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://llmtr.com/v1",
api_key=os.environ["LLMTR_API_KEY"],
timeout=300.0,
)
stream = client.chat.completions.create(
model="llmtr/nanbeige4-2-3b",
messages=[
{"role": "system", "content": "Her zaman Turkce ve kisa cevap ver."},
{"role": "user", "content": "Bir faturada hangi alanlar bulunur? Uc madde yaz."},
],
max_tokens=512,
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)

Zaman aşımı ayarlarının ayrıntısı için Zaman aşımları sayfasına bakın.

Düz bir istekte model doğrudan yanıt verir; akıl yürütme adımı çalışmaz ve ek token harcanmaz. Düşünmeyi açmanın iki yolu vardır:

// Model kimliğine :think suffix'i
{ "model": "llmtr/nanbeige4-2-3b:think", "messages": [{ "role": "user", "content": "Bu iki tarihin arasinda kac is gunu var?" }], "max_tokens": 4096 }
// Veya istek gövdesinde reasoning alanı
{ "model": "llmtr/nanbeige4-2-3b", "reasoning": true, "messages": [{ "role": "user", "content": "Bu iki tarihin arasinda kac is gunu var?" }], "max_tokens": 4096 }

Düşünme açıkken akıl yürütme message.reasoning_content alanında döner ve ürettiği tokenlar max_tokens bütçenizden harcanır. Bütçe küçükse model cevaba geçemeden durur ve finish_reason length olur; bu durumda content boş gelebilir ya da yarıda kalan akıl yürütmeyi taşıyabilir. Yanıtı kullanmadan önce content alanına değil finish_reason değerine bakın. Düşünme yanıt süresini de belirgin biçimde uzatır; yalnızca beklemenin sorun olmadığı işlerde açın.

reasoning_effort bu modelde desteklenmez ve 400 döner; düşünme yalnızca açılıp kapanır. Akıl yürütme tokenları output olarak faturalanır ve completion_tokens içinde zaten sayılıdır.

Model standart OpenAI tools şemasını destekler ve gerçek tool_calls döndürür. Bu modelde araç çağrıları yalnızca düşünme açıkken güvenilirdir. Bu yüzden tools gönderdiğiniz istekte düşünme kendiliğinden açılır; ayrıca bir şey yapmanız gerekmez. Bu, isteğe kısa bir akıl yürütme adımı ekler ve o tokenlar output olarak faturalanır.

{
"model": "llmtr/nanbeige4-2-3b",
"max_tokens": 2048,
"messages": [{ "role": "user", "content": "Istanbul'da hava nasil?" }],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Bir sehrin hava durumunu getirir",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
}
]
}
{
"choices": [
{
"message": {
"role": "assistant",
"content": "",
"tool_calls": [
{
"id": "call_1",
"type": "function",
"function": { "name": "get_weather", "arguments": "{\"city\":\"Istanbul\"}" }
}
]
},
"finish_reason": "tool_calls"
}
]
}

Araç çağırırken uymanız gereken kurallar:

  • tool_choice için yalnızca auto kullanılabilir ya da alan hiç gönderilmez. required ya da adıyla seçilmiş bir fonksiyon 400 invalid_request döner. Aracın ne zaman kullanılacağını istemde söyleyin.
  • Araçları kapatmak için tool_choice: "none" göndermeyin; tools alanını istekten çıkarın. Araçlar ekliyken none 400 unsupported_input döner.
  • :fast, reasoning: false ya da chat_template_kwargs.enable_thinking: false ile düşünmeyi kapatıp tools gönderen istek 400 invalid_request döner.
  • Tek yanıtta birden fazla araç çağrısı gelebilir, garanti değildir; istemciniz tool_calls dizisinin tamamını işlemelidir.

response_format ile JSON nesnesi ya da JSON şeması bu modelde desteklenmez ve istek 400 invalid_request döner. Yapılandırılmış veri gerekiyorsa araç çağırmayı kullanın: fonksiyonun parameters şeması, modelin dolduracağı alanları tanımlar. { "type": "text" } kabul edilir.

Tekrar eden istem başlangıçları (sabit sistem mesajı, sohbet geçmişi) önbellekten karşılanabilir. Önbellekten gelen tokenlar prompt_tokens_details.cached_tokens alanında raporlanır ve input yerine cache read tarifesinden faturalanır:

"usage": {
"prompt_tokens": 4401,
"completion_tokens": 4,
"total_tokens": 4405,
"prompt_tokens_details": { "cached_tokens": 4386 }
}

Bu örnekte 4386 token 0.25 $/1M, kalan 15 token 1.00 $/1M üzerinden ücretlendirilir. Önbellekten gelen önek işlenmeyi de beklemediği için yanıt daha erken başlar. Sabit içeriği mesaj dizisinin başında, değişen içeriği sonunda tutun.

Önbellek isabeti garanti değildir: bir önek ilk gönderimde isabet etmez, sonraki tekrarlarda edebilir. Faturalama her zaman cached_tokens alanında bildirilen gerçek değere göre yapılır.

Bağlam penceresi istek başına 32.768 tokendır ve istem ile cevabı birlikte kapsar. İstem bu pencereden uzunsa istek 400 invalid_request döner:

{
"error": {
"message": "This request uses 40,040 input tokens, more than the 32,768-token window shared by the prompt and the answer. Shorten the conversation.",
"type": "invalid_request"
}
}

Uzun sohbetlerde eski mesajları kısaltın ya da özetleyin. İstem ile yanıt aynı pencereyi paylaştığından uzun bir istemin yanında uzun bir yanıt beklemeyin.

Model yalnızca metin kabul eder. Mesaj içinde image_url, ses, video veya dosya parçası gönderirseniz istek 400 unsupported_input döner. Görsel okuması gereken işler için katalogdaki görsel girdi destekleyen modellerden birini seçin.