Bu makale Kimi K3 için yeni parametreleri ve kullanım notlarını kapsar. AIHubMix üzerinde K3, Chat Completions, Responses ve Claude uyumlu Messages API'leri aracılığıyla kullanılabilir. Ayrıca bakınız: Moonshot resmi platform dokümantasyonu.
Her bölümdeki "Doğrulandı" sonuçları ve örnek yanıtlar, 2026-07-17 tarihinde AIHubMix API'leri (Chat Completions / Responses / Messages) üzerinden yapılan gerçek çağrılardan elde edilmiştir.
1. Model Özellikleri Bir Bakışta
| Öğe | Değer |
|---|---|
| Bağlam penceresi | 1M token |
| Maksimum çıktı | max_completion_tokens varsayılanı 131,072, üst sınırı 1,048,576 |
| Girdi modaliteleri | Metin, görseller (video girdisi için Moonshot resmi dokümanlarına bakın) |
| Düşünme modu | Varsayılan olarak açık; reasoning_effort yalnızca "max" değerini destekler |
| Durdurma dizileri | stop en fazla 5 girdi kabul eder, her biri 32 bayttan uzun olamaz |
Doğrulandı: her ikistopsınırı da doğrulanır ve herhangi biri aşılırsa 400 döner; Messages API,stop_sequencesiçin aynı doğrulamayı uygular.
❗ Bir durdurma dizisine ulaşıldığında Messages API, Anthropic semantiğini izlemez: testlerdestop_reason"end_turn"olarak döner ("stop_sequence"yerine),stop_sequencenullolur ve durdurma kelimesinden önceki görünür metin boş olabilir. Bu iki alana bakarak kesilmeyi tespit eden istemciler bunu dikkate almalıdır.
# stop with 6 entries / a 33-byte entry -> HTTP 400
"Invalid request: stop array too long. Expected an array with maximum length 5, but got an array with length 6 instead"
"Invalid request: stop sequence must not be longer than 32, but got 33 instead"
2. Düşünme Modu: reasoning_effort Yalnızca max Destekler
K3'ün düşünme modu varsayılan olarak açıktır ve reasoning_effort yalnızca tek bir seviyeyi destekler: "max".
Çok turlu konuşmalarda düşünme geçmişi olduğu gibi geri gönderilmelidir: Moonshot'un resmi dokümantasyonuna göre K3, korunmuş düşünme ile eğitilmiştir; bu nedenle çok turlu konuşmalarda önceki asistan mesajı eksiksiz ve değiştirilmemiş biçimde (düşünme içeriği dahil) geri gönderilmelidir. Düşünme geçmişi eksik olursa çıktı kalitesi istikrarsız hale gelir. Bir oturum yönetim çerçevesi veya proxy katmanı kullanıyorsanız, düşünme içeriğinin kırpılmadan geri gönderildiğinden emin olun.
Chat Completions
Düşünme içeriği yanıtın reasoning_content alanında döner; çok turlu konuşmalarda önceki asistan mesajını (reasoning_content dahil) olduğu gibi geri gönderin.
from openai import OpenAI
client = OpenAI(
base_url="https://aihubmix.com/v1",
api_key="<AIHUBMIX_API_KEY>",
)
completion = client.chat.completions.create(
model="kimi-k3",
reasoning_effort="max",
messages=[
{"role": "user", "content": "A snail is at the bottom of a 10-meter well. Each day it climbs 3 meters, but each night it slides back 2 meters. How many days does it take to reach the top?"}
],
)
print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content)
# Multi-turn: pass the previous assistant message back verbatim
messages = [
{"role": "user", "content": "What is the capital of France?"},
{"role": "assistant", "content": "Paris.", "reasoning_content": "<reasoning_content from the previous response>"},
{"role": "user", "content": "And its population?"},
]
Doğrulandı: yanıtreasoning_contentdöndürür; önceki asistan mesajı (reasoning_contentdahil) olduğu gibi geri gönderildikten sonra sonraki turlar normal şekilde yanıtlanır.
Responses
Düşünme içeriği bir reasoning çıktı öğesi olarak döner; çok turlu konuşmalarda önceki turun çıktı öğelerini (reasoning + message) input içine olduğu gibi ekleyin.
from openai import OpenAI
client = OpenAI(
base_url="https://aihubmix.com/v1",
api_key="<AIHUBMIX_API_KEY>",
)
response = client.responses.create(
model="kimi-k3",
input="Answer in one word: capital of France",
)
# Observed response.output item types: ["reasoning", "message"]; text: "Paris"
# Multi-turn: input = [first user message] + response.output + [next user message]
# Observed second-turn answer with output items passed back: "Berlin"
Messages
Düşünme içeriği yerel thinking içerik blokları olarak döner; çok turlu konuşmalarda önceki asistan içerik bloklarını (düşünme blokları dahil) olduğu gibi geri gönderin.
from anthropic import Anthropic
client = Anthropic(
api_key="<AIHUBMIX_API_KEY>",
base_url="https://aihubmix.com"
)
response = client.messages.create(
model="kimi-k3",
max_tokens=4096,
messages=[
{"role": "user", "content": "Answer in one word: capital of France"}
],
)
# Observed response.content block types: ["thinking", "text"]; text: "Paris"
# Multi-turn: pass response.content back verbatim as the assistant message
3. Örnekleme Parametreleri Sabittir
K3'ün örnekleme parametreleri model sağlayıcısı tarafından sabitlenmiştir: temperature 1.0, top_p 0.95, n 1 ve presence_penalty / frequency_penalty 0. Resmi öneri, bu parametrelerin isteklerden çıkarılmasıdır.
Not: sabit örnekleme değerleri resmi spesifikasyonun parçasıdır ve yanıt sinyalleriyle doğrulanamaz; resmi öneriyi izleyin ve bu parametreleri çıkarın.
4. Araç Çağrısı ve Dinamik Araç Yükleme
tools en fazla 128 aracı destekler; tool_choice araç çağrılarını zorlamayı ve devre dışı bırakmayı destekler. K3 ayrıca dinamik araç yüklemeyi de destekler: konuşma sırasında bir sistem mesajının tools alanı aracılığıyla yeni araçlar eklenebilir (Chat API'ye özgü bir mesaj yapısıdır).
Chat Completions
tool_choice değerleri auto / none / required desteklenir; required modelin bir aracı çağırmasını zorlar. Dinamik araç yükleme: araç ekleyen sistem mesajında content bulunmaz, eklenen araçlar sonraki turlarda geçerli olur ve bu mesaj her istekte yeniden eklenmelidir.
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello."},
{"role": "assistant", "content": "Hi, how can I help you?"},
# Inject a new tool mid-conversation: tools field only, no content
{
"role": "system",
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Get the current time",
"parameters": {"type": "object", "properties": {}},
},
}
],
},
{"role": "user", "content": "What time is it now?"},
]
# tool_choice="required" with prompt "Hello" -> the model is forced to call the tool
"finish_reason": "tool_calls",
"tool_calls": [{"function": {"name": "get_weather", "arguments": "{\"city\":\"New York\"}"}}]
Doğrulandı:tool_choice: "required"ilgisiz istemlerde bile araç çağrısını zorlar;"none"araç çağrılarını bastırır; konuşma sırasındacontentiçermeyen bir sistem mesajıyla eklenen araçlar normal şekilde çağrılabilir.
Responses
Araç tanımları düz bir yapı kullanır (name en üst düzeyde); çağrıyı zorlamak için de tool_choice: "required" kullanılır ve çağrılar function_call çıktı öğeleri olarak döner. Dinamik araç yükleme desteği üzerinde çalışılmaktadır; şimdilik tüm araçları en üst düzeydeki tools parametresinde tanımlayın.
response = client.responses.create(
model="kimi-k3",
input="Hello",
tools=[{
"type": "function",
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
tool_choice="required",
)
# Observed output contains: {"type": "function_call", "name": "get_weather", "arguments": "{\"city\":\"London\"}"}
Messages
Araçlar Anthropic formatını kullanır (input_schema); çağrıyı tool_choice: {"type": "any"} ile zorlayın ve {"type": "none"} ile çağrıları devre dışı bırakın. ❗ Kimi K3'ün resmi Messages (Anthropic uyumlu) uç noktası dinamik araç yüklemeyi desteklemez: testlerde araç ekleyen mesaj 200 döner, ancak eklenen araçın bir etkisi olmaz (model onu çağıramaz). Tüm araçları en üst düzeydeki tools parametresinde tanımlayın.
response = client.messages.create(
model="kimi-k3",
max_tokens=4096,
tools=[{
"name": "get_weather",
"description": "Get weather for a city",
"input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
tool_choice={"type": "any"},
messages=[{"role": "user", "content": "Hello"}],
)
# Observed: stop_reason "tool_use"; content contains a tool_use block calling get_weather
5. Yapılandırılmış Çıktı
Yapılandırılmış çıktı, modelin belirli bir JSON Şemasına tam uyan içerik döndürmesini sağlar.
Chat Completions
response_format, strict modu ile json_schema değerini destekler.
completion = client.chat.completions.create(
model="kimi-k3",
messages=[
{"role": "user", "content": "Paris is the capital of France. Extract the city name."}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "extract",
"strict": True,
"schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
},
)
# Observed response content: {"city":"Paris"}
Doğrulandı: çıktı, şemaya uyan geçerli bir JSON'dur.
Responses
Yapılandırılmış çıktı text.format üzerinden tanımlanır.
response = client.responses.create(
model="kimi-k3",
input="Paris is the capital of France. Extract the city name.",
text={
"format": {
"type": "json_schema",
"name": "extract",
"strict": True,
"schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}
},
)
# Observed output text: {"city":"Paris"}
Messages
❗ Kimi K3'ün resmi Messages (Anthropic uyumlu) uç noktası yapılandırılmış çıktıyı desteklemez: yapılandırılmış çıktı alanları sessizce yok sayılır; istek HTTP 200 ile serbest biçimli metin döndürür, hata veya geri dönüş bildirimi verilmez ve sonraki JSON ayrıştırma işlemleri başarısız olur. Yapılandırılmış çıktıya ihtiyacınız varsa Chat Completions veya Responses API'sini kullanın.
6. Bağlam Önbellekleme Otomatiktir
K3'ün bağlam önbellekleme özelliği otomatik olarak etkinleştirilir ve herhangi bir parametre gerektirmez. Tekrarlanan uzun bir önek önbellekten yanıtlandığında, isabet miktarı usage içinde raporlanır (alan adı API'ye göre değişir). Önbellek fiyatlandırması model sayfasında yer almaktadır.
Chat Completions
# usage of the second call with an identical long prefix
"prompt_tokens_details": {"cached_tokens": 1536}
Doğrulandı: aynı uzun öneke sahip ikinci istek, isabetiusage.prompt_tokens_details.cached_tokensiçinde bildirir.
Responses
# usage of the second Responses call with identical long instructions
"input_tokens_details": {"cached_tokens": 1536}
Messages
# usage of the second Messages call with an identical long system prompt
"cache_read_input_tokens": 1536
7. partial Önek Tamamlama
Önek tamamlama, modelin verilen bir önekten devam ederek üretim yapmasını sağlar; kod tamamlama ve biçim kontrollü çıktılar için uygundur.
Chat Completions
Son asistan mesajında "partial": true gönderin.
messages = [
{"role": "user", "content": "Write a haiku about the sea."},
{"role": "assistant", "content": "Waves fold into foam,", "partial": True},
]
# Prefix: "Waves fold into foam," -> continuation returned by the model
# salt hangs in the air—
# moon pulls the tide home.
Doğrulandı: üretim, verilen öneki tekrarlamadan devam eder.
Responses
Öneki input dizisinin sonunda bir asistan mesajı olarak gönderin; partial parametresi gerekmez.
response = client.responses.create(
model="kimi-k3",
input=[
{"role": "user", "content": "Write a haiku about the sea."},
{"role": "assistant", "content": "Waves fold into foam,"},
],
)
# Observed continuation: "salt hangs in the air— / moon pulls the tide home."
Messages
Aynı yetenek, protokolün yerel asistan prefill özelliğiyle sağlanır; partial parametresi gerekmez: öneki son asistan mesajı olarak gönderin.
response = client.messages.create(
model="kimi-k3",
max_tokens=4096,
messages=[
{"role": "user", "content": "Write a haiku about the sea."},
{"role": "assistant", "content": "Waves fold into foam,"},
],
)
# Observed continuation: "salt wind carries the gull's cry— / tide pulls ..."
8. Görsel Girdi
Görseller base64 olarak gönderilir; içerik bloğu biçimi API'ye göre değişir.
Chat Completions
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "What is the dominant color of this image? One word."},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,<BASE64>"}},
],
}
]
# Observed response content: "Red" (input: a 64x64 solid red PNG)
Doğrulandı: base64 görsel girdisi çalışır ve model test görselini doğru şekilde tanımlar.
Responses
input = [
{
"role": "user",
"content": [
{"type": "input_text", "text": "What is the dominant color of this image? One word."},
{"type": "input_image", "image_url": "data:image/png;base64,<BASE64>"},
],
}
]
# Observed output text: "Red"
Messages
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "What is the dominant color of this image? One word."},
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "<BASE64>"}},
],
}
]
# Observed response text: "Red"
9. Doğrulanmış Referans: Uzun Tek Çağrılı Bir Görevin Gecikmesi ve Kullanımı
K3'ün düşünme seviyesi max olarak sabittir; bu nedenle karmaşık görevlerdeki tekil istekler, tipik modellere göre belirgin şekilde daha uzun sürer. Tek dosyalık bir HTML oyun üretim görevinden (bir referans görselle birlikte tek bir istem, yineleme yapılmadan tek seferde üretildi) alınan ölçüm verileri: tek istek 2.541 saniye (yaklaşık 42 dakika) sürdü, 74.994 tamamlama token'ı kullanıldı; bunların 54.486'sı (%73) düşünme token'ıydı; nihai çıktı doğrudan çalıştırılabilir 1.275 satırlık kod oldu ve finish_reason değeri stop oldu.
İstemci tarafı önerileri:
- İstemci zaman aşımlarını dakikalar veya daha uzun olarak ayarlayın ve uzun görevler için akış (streaming) yöntemini tercih edin;
max_completion_tokensdeğerinde bol pay bırakın: bu durumda yalnızca düşünme 54.486 token tüketti.
10. Yetenek × API Destek Matrisi
Aşağıdaki tablodaki her hücre, 2026-07-17 tarihinde AIHubMix üretim API'lerine yapılan gerçek çağrılarla doğrulanmıştır; her hücre ilgili API için parametre / alan sözdizimini gösterir.
| Yetenek | Chat Completions | Responses | Messages |
|---|---|---|---|
| Yanıttaki düşünme içeriği | ✅ reasoning_content alanı |
✅ reasoning çıktı öğesi |
✅ thinking içerik bloğu |
| Düşünme geçmişinin geri gönderilmesi | ✅ asistan mesajı olduğu gibi geri gönderilir | ✅ çıktı öğeleri olduğu gibi geri gönderilir | ✅ içerik blokları olduğu gibi geri gönderilir |
| Araç çağrılarını zorlama / devre dışı bırakma | ✅ tool_choice: "required" / "none" |
✅ tool_choice: "required" |
✅ {"type": "any"} / {"type": "none"} |
| Dinamik araç yükleme | ✅ tools içeren sistem mesajı (content olmadan) |
➖ Destek üzerinde çalışılıyor | ❗ Resmi Messages (Anthropic uyumlu) uç noktasında desteklenmiyor |
| Yapılandırılmış çıktı | ✅ response_format (json_schema + strict) |
✅ text.format (json_schema) |
❗ Resmi uç noktada desteklenmiyor; alanlar sessizce yok sayılır (200 + serbest biçimli metin); bunun yerine Chat / Responses kullanın |
| Otomatik önbellek isabeti ölçümü | ✅ usage.prompt_tokens_details.cached_tokens |
✅ usage.input_tokens_details.cached_tokens |
✅ usage.cache_read_input_tokens |
| Önek tamamlama | ✅ "partial": true |
✅ asistan prefill | ✅ asistan prefill (protokole özgü) |
| Görsel girdi | ✅ image_url (base64) |
✅ input_image (base64) |
✅ image içerik bloğu (base64) |
| Durdurma dizileri | ✅ stop (sınırlar doğrulanır) |
➖ Destek üzerinde çalışılıyor | ❗ stop_sequences sınırları aynı şekilde doğrulanır, ancak bir eşleşmede ne stop_reason: "stop_sequence" ne de stop_sequence değeri döner |
SSS
K3, AIHubMix üzerinde hangi API'leri destekliyor?
Chat Completions (/v1/chat/completions), Responses (/v1/responses) ve Claude uyumlu Messages API'si (/v1/messages).
Düşünme kapatılabilir veya azaltılabilir mi?
Hayır. K3'ün düşünme modu varsayılan olarak açıktır ve reasoning_effort yalnızca tek seviye olan "max" değerini destekler.
Çok turlu konuşmalarda reasoning_content neden geri gönderilmelidir?
K3, korunmuş düşünme (preserved thinking) ile eğitilmiştir; Moonshot, önceki asistan mesajının eksiksiz ve değiştirilmeden geri gönderilmesini gerektirir. Düşünme geçmişinin eksik olması, çıktı kalitesinin istikrarsız hale gelmesine yol açar.
stop parametresinin sınırları nelerdir?
En fazla 5 stop dizisi kullanılabilir ve her biri 32 bayttan uzun olamaz; bu sınırlardan herhangi birinin aşılması 400 hatası döndürür.
Messages API yapılandırılmış çıktıyı destekliyor mu?
❗ Hayır. Kimi K3'ün resmi Messages (Anthropic uyumlu) uç noktası, yapılandırılmış çıktı alanlarını sessizce yok sayar (hata vermeden, serbest biçimli metinle 200 yanıtı döndürür). Yapılandırılmış çıktı için Chat Completions'ta response_format, Responses'ta ise text.format kullanın.
Tek bir K3 isteği neden bu kadar uzun sürüyor?
K3'ün düşünme seviyesi en yüksek düzeyde sabittir ve karmaşık görevlerde düşünme token'ları tamamlama token'larının büyük bir kısmını oluşturur (ölçülen örnekte %73). İstemci zaman aşımlarını dakikalar veya daha uzun olacak şekilde ayarlayın ve akış (streaming) kullanın.
Fiyatlandırma ve gerçek zamanlı durum için Kimi K3 model sayfasına bakın; diğer modeller için model galerisini ziyaret edin.
Son güncelleme: 2026-07-17



