Dieser Artikel behandelt die neuen Parameter und Nutzungshinweise für Kimi K3. Auf AIHubMix ist K3 über die Chat Completions, Responses und Claude-kompatiblen Messages APIs verfügbar. Siehe auch: offizielle Moonshot-Plattformdokumentation.
Die "Verifizierten" Schlussfolgerungen und Beispielantworten in jedem Abschnitt stammen von tatsächlichen Aufrufen, die am 2026-07-17 über die AIHubMix APIs (Chat Completions / Responses / Messages) gemacht wurden.
1. Modell-Spezifikationen auf einen Blick
| Artikel | Wert |
|---|---|
| Kontextfenster | 1M Tokens |
| Maximale Ausgabe | max_completion_tokens standardmäßig 131.072, bis zu 1.048.576 |
| Eingabemodalitäten | Text, Bilder (für Videoeingaben siehe die offizielle Moonshot-Dokumentation) |
| Denkmodus | Standardmäßig aktiviert; reasoning_effort unterstützt nur "max" |
| Stoppsequenzen | stop erlaubt maximal 5 Einträge, jeder nicht länger als 32 Bytes |
Verifiziert: beidestopLimits sind validiert, und das Überschreiten eines der Limits führt zu 400; die Messages API wendet dieselbe Validierung aufstop_sequencesan.
❗ Wenn eine Stoppsequenz erreicht wird, folgt die Messages API nicht den Anthropic-Semantiken: In Tests iststop_reason"end_turn"(statt"stop_sequence"),stop_sequenceistnull, und der sichtbare Text vor dem Stoppwort kann leer sein. Clients, die sich auf diese beiden Felder zur Erkennung von Trunkierungen verlassen, sollten dies beachten.
# stop mit 6 Einträgen / ein 33-Byte-Eintrag -> HTTP 400
"Ungültige Anfrage: stop-Array zu lang. Erwartete ein Array mit maximaler Länge 5, erhielt jedoch ein Array mit Länge 6."
"Ungültige Anfrage: Stoppsequenz darf nicht länger als 32 sein, erhielt jedoch 33."
2. Denkmodus: reasoning_effort unterstützt nur max
Das Denken von K3 ist standardmäßig aktiviert, und reasoning_effort unterstützt nur eine einzige Stufe: "max".
Mehrturngespräche müssen die Denkgeschichte unverändert zurückgeben: Laut der offiziellen Dokumentation von Moonshot wird K3 mit bewahrtem Denken trainiert, sodass in Mehrturngesprächen die vorherige Assistentenmeldung vollständig und unverändert (einschließlich des Denkens) zurückgegeben werden muss. Fehlende Denkgeschichte führt zu instabiler Ausgabequalität. Wenn Sie ein Sitzungsmanagement-Framework oder eine Proxy-Schicht verwenden, bestätigen Sie, dass der Denkinhalt unverändert zurückgegeben wird.
Chat Completions
Denkinhalt wird im Feld reasoning_content der Antwort zurückgegeben; in Mehrturngesprächen muss die vorherige Assistentenmeldung (einschließlich reasoning_content) unverändert zurückgegeben werden.
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": "Eine Schnecke ist am Boden eines 10-Meter-Brunnens. Jeden Tag klettert sie 3 Meter, aber jede Nacht rutscht sie 2 Meter zurück. Wie viele Tage braucht sie, um die Spitze zu erreichen?"}
],
)
print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content)
# Mehrturn: die vorherige Assistentenmeldung unverändert zurückgeben
messages = [
{"role": "user", "content": "Was ist die Hauptstadt von Frankreich?"},
{"role": "assistant", "content": "Paris.", "reasoning_content": "<reasoning_content aus der vorherigen Antwort>"},
{"role": "user", "content": "Und die Bevölkerung?"}
]
Verifiziert: die Antwort gibtreasoning_contentzurück; nach der unveränderten Rückgabe der vorherigen Assistentenmeldung (einschließlichreasoning_content) antworten die nachfolgenden Runden normal.
Antworten
Denkinhalt wird als reasoning Ausgabeelement zurückgegeben; in Mehrturngesprächen fügen Sie die Ausgabeelemente der vorherigen Runde (reasoning + message) unverändert in input ein.
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="Antworte mit einem Wort: Hauptstadt von Frankreich",
)
# Beobachtete response.output Elementtypen: ["reasoning", "message"]; Text: "Paris"
# Mehrturn: input = [erste Benutzeranfrage] + response.output + [nächste Benutzeranfrage]
# Beobachtete Antwort der zweiten Runde mit zurückgegebenen Ausgabeelementen: "Berlin"
Nachrichten
Denkinhalt wird als native thinking Inhaltsblöcke zurückgegeben; in Mehrturngesprächen müssen die vorherigen Assistenteninhaltsblöcke (einschließlich der Denkblöcke) unverändert zurückgegeben werden.
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": "Antworte mit einem Wort: Hauptstadt von Frankreich"}
],
)
# Beobachtete response.content Blocktypen: ["thinking", "text"]; Text: "Paris"
# Mehrturn: response.content unverändert als Assistentenmeldung zurückgeben
3. Abtastparameter sind festgelegt
Die Abtastparameter von K3 sind vom Modellanbieter festgelegt: temperature 1.0, top_p 0.95, n 1 und presence_penalty / frequency_penalty 0. Die offizielle Empfehlung ist, diese Parameter aus den Anfragen wegzulassen.
Hinweis: Die festen Abtastwerte sind Teil der offiziellen Spezifikation und können nicht aus Antwortsignalen verifiziert werden; folgen Sie der offiziellen Empfehlung und lassen Sie diese Parameter weg.
4. Werkzeugaufruf und dynamisches Laden von Werkzeugen
tools unterstützt bis zu 128 Werkzeuge; tool_choice unterstützt das Erzwingen und Deaktivieren von Werkzeugaufrufen. K3 unterstützt auch das dynamische Laden von Werkzeugen: das Injizieren neuer Werkzeuge während des Gesprächs über das tools Feld einer Systemnachricht (eine Nachrichtenform, die spezifisch für die Chat-API ist).
Chat Completions
tool_choice unterstützt auto / none / required; required zwingt das Modell, ein Werkzeug aufzurufen. Dynamisches Laden von Werkzeugen: die systemnachricht, die das Werkzeug injiziert, enthält keinen content, die injizierten Werkzeuge treten für nachfolgende Runden in Kraft, und die Nachricht muss in jeder Anfrage erneut enthalten sein.
messages = [
{"role": "system", "content": "Du bist ein hilfreicher Assistent."},
{"role": "user", "content": "Hallo."},
{"role": "assistant", "content": "Hallo, wie kann ich Ihnen helfen?"},
# Ein neues Werkzeug während des Gesprächs injizieren: nur das tools-Feld, kein Inhalt
{
"role": "system",
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Holen Sie sich die aktuelle Zeit",
"parameters": {"type": "object", "properties": {}},
},
}
],
},
{"role": "user", "content": "Wie spät ist es jetzt?"},
]
# tool_choice="required" mit Eingabe "Hallo" -> das Modell wird gezwungen, das Werkzeug aufzurufen
"finish_reason": "tool_calls",
"tool_calls": [{"function": {"name": "get_weather", "arguments": "{\"city\":\"New York\"}"}}]
Verifiziert:tool_choice: "required"zwingt einen Werkzeugaufruf, selbst bei nicht verwandten Eingaben;"none"unterdrückt Werkzeugaufrufe; Werkzeuge, die während des Gesprächs über eine Systemnachricht ohnecontentinjiziert werden, können normal aufgerufen werden.
Antworten
Werkzeugdefinitionen verwenden eine flache Struktur (name auf der obersten Ebene); das Erzwingen eines Aufrufs verwendet ebenfalls tool_choice: "required", und Aufrufe werden als function_call Ausgabeelemente zurückgegeben. Die Unterstützung für dynamisches Laden von Werkzeugen ist in Arbeit; derzeit müssen alle Werkzeuge im obersten tools Parameter deklariert werden.
response = client.responses.create(
model="kimi-k3",
input="Hallo",
tools=[{
"type": "function",
"name": "get_weather",
"description": "Holen Sie sich das Wetter für eine Stadt",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
tool_choice="required",
)
# Beobachtete Ausgabe enthält: {"type": "function_call", "name": "get_weather", "arguments": "{\"city\":\"London\"}"}
Nachrichten
Werkzeuge verwenden das Anthropic-Format (input_schema); erzwingen Sie einen Aufruf mit tool_choice: {"type": "any"} und deaktivieren Sie Aufrufe mit {"type": "none"}. ❗ Der offizielle Messages (Anthropic-kompatible) Endpunkt von Kimi K3 unterstützt kein dynamisches Laden von Werkzeugen: In Tests gibt die injizierende Nachricht 200 zurück, aber das injizierte Werkzeug hat keine Wirkung (das Modell kann es nicht aufrufen). Deklarieren Sie alle Werkzeuge im obersten tools Parameter.
response = client.messages.create(
model="kimi-k3",
max_tokens=4096,
tools=[{
"name": "get_weather",
"description": "Holen Sie sich das Wetter für eine Stadt",
"input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
tool_choice={"type": "any"},
messages=[{"role": "user", "content": "Hallo"}],
)
# Beobachtet: stop_reason "tool_use"; der Inhalt enthält einen tool_use Block, der get_weather aufruft
5. Strukturierte Ausgabe
Strukturierte Ausgaben sorgen dafür, dass das Modell Inhalte zurückgibt, die strikt einem bestimmten JSON-Schema entsprechen.
Chat Completions
response_format unterstützt json_schema im strict Modus.
completion = client.chat.completions.create(
model="kimi-k3",
messages=[
{"role": "user", "content": "Paris ist die Hauptstadt von Frankreich. Extrahiere den Stadtnamen."}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "extract",
"strict": True,
"schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
},
)
# Beobachtete Antwortinhalte: {"city":"Paris"}
Verifiziert: die Ausgabe ist gültiges JSON, das dem Schema entspricht.
Antworten
Strukturierte Ausgaben werden über text.format deklariert.
response = client.responses.create(
model="kimi-k3",
input="Paris ist die Hauptstadt von Frankreich. Extrahiere den Stadtnamen.",
text={
"format": {
"type": "json_schema",
"name": "extract",
"strict": True,
"schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}
},
)
# Beobachteter Ausgabetext: {"city":"Paris"}
Nachrichten
❗ Der offizielle Messages (Anthropic-kompatible) Endpunkt von Kimi K3 unterstützt keine strukturierte Ausgabe: die Felder für strukturierte Ausgaben werden stillschweigend ignoriert: die Anfrage gibt HTTP 200 mit freiem Text zurück, ohne Fehler oder Rückfallhinweis, und die nachgelagerte JSON-Analyse schlägt fehl. Wenn Sie strukturierte Ausgaben benötigen, verwenden Sie die Chat Completions oder Responses API.
6. Kontext-Caching ist automatisch
Das Kontext-Caching von K3 ist automatisch aktiviert, ohne dass Parameter erforderlich sind. Wenn ein wiederholter langer Präfix den Cache erreicht, wird die Anzahl der Treffer in der Nutzung gemeldet (der Feldname variiert je nach API). Die Preise für den Cache finden Sie auf der Modellseite.
Chat Completions
# Nutzung des zweiten Aufrufs mit einem identischen langen Präfix
"prompt_tokens_details": {"cached_tokens": 1536}
Verifiziert: die zweite Anfrage mit einem identischen langen Präfix meldet den Treffer inusage.prompt_tokens_details.cached_tokens.
Antworten
# Nutzung des zweiten Responses-Aufrufs mit identischen langen Anweisungen
"input_tokens_details": {"cached_tokens": 1536}
Nachrichten
# Nutzung des zweiten Messages-Aufrufs mit einem identischen langen Systemprompt
"cache_read_input_tokens": 1536
7. partial Präfix-Vervollständigung
Die Präfix-Vervollständigung ermöglicht es dem Modell, die Generierung von einem gegebenen Präfix fortzusetzen, was sich gut für die Codevervollständigung und formatgesteuerte Ausgaben eignet.
Chat Completions
Geben Sie "partial": true in der letzten Assistentenmeldung an.
messages = [
{"role": "user", "content": "Schreibe ein Haiku über das Meer."},
{"role": "assistant", "content": "Wellen falten sich zu Schaum,", "partial": True},
]
# Präfix: "Wellen falten sich zu Schaum," -> Fortsetzung, die vom Modell zurückgegeben wird
# Salz hängt in der Luft—
# Mond zieht die Gezeiten nach Hause.
Verifiziert: die Generierung setzt sich vom gegebenen Präfix fort, ohne es zu wiederholen.
Antworten
Geben Sie das Präfix als Assistentenmeldung am Ende des input Arrays an; kein partial Parameter ist erforderlich.
response = client.responses.create(
model="kimi-k3",
input=[
{"role": "user", "content": "Schreibe ein Haiku über das Meer."},
{"role": "assistant", "content": "Wellen falten sich zu Schaum,"},
],
)
# Beobachtete Fortsetzung: "Salz hängt in der Luft— / Mond zieht die Gezeiten nach Hause."
Nachrichten
Die gleiche Fähigkeit wird mit der nativen Assistenten-Vorbefüllung des Protokolls erreicht, ohne dass ein partial Parameter erforderlich ist: Geben Sie das Präfix als letzte Assistentenmeldung an.
response = client.messages.create(
model="kimi-k3",
max_tokens=4096,
messages=[
{"role": "user", "content": "Schreibe ein Haiku über das Meer."},
{"role": "assistant", "content": "Wellen falten sich zu Schaum,"},
],
)
# Beobachtete Fortsetzung: "Salz wind trägt den Schrei der Möwe— / Gezeiten ziehen ..."
8. Visionseingabe
Bilder werden als base64 übergeben; das Format des Inhaltsblocks variiert je nach API.
Chat Completions
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Was ist die dominante Farbe dieses Bildes? Ein Wort."},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,<BASE64>"}},
],
}
]
# Beobachteter Antwortinhalt: "Rot" (Eingabe: ein 64x64 solides rotes PNG)
Verifiziert: base64-Bild-Eingaben funktionieren, und das Modell beschreibt das Testbild korrekt.
Antworten
input = [
{
"role": "user",
"content": [
{"type": "input_text", "text": "Was ist die dominante Farbe dieses Bildes? Ein Wort."},
{"type": "input_image", "image_url": "data:image/png;base64,<BASE64>"},
],
}
]
# Beobachteter Ausgabetext: "Rot"
Nachrichten
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Was ist die dominante Farbe dieses Bildes? Ein Wort."},
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "<BASE64>"}},
],
}
]
# Beobachteter Antworttext: "Rot"
9. Verifizierte Referenz: Latenz und Nutzung einer langen Einzelaufrufaufgabe
Das Denken von K3 ist auf dem maximalen Niveau festgelegt, sodass Einzelanfragen für komplexe Aufgaben deutlich länger dauern als bei typischen Modellen. Gemessene Daten aus einer Einzeldatei-HTML-Spielgenerierungsaufgabe (ein Prompt mit einem Referenzbild, das in einem Durchgang ohne Iteration generiert wurde): Die Einzelanfrage dauerte 2.541 Sekunden (etwa 42 Minuten), mit 74.994 Abschluss-Tokens, von denen 54.486 (73%) Denk-Tokens waren; die endgültige Ausgabe bestand aus 1.275 Zeilen direkt ausführbarem Code, mit finish_reason stop.
Empfehlungen auf der Client-Seite:
- Setzen Sie die Client-Timeouts auf Minuten oder länger und bevorzugen Sie Streaming für lange Aufgaben;
- Hinterlassen Sie ausreichend Spielraum in
max_completion_tokens: In diesem Fall verbrauchte das Denken allein 54.486 Tokens.
10. Fähigkeit × API-Unterstützungsmatrix
Jede Zelle in der folgenden Tabelle wurde am 2026-07-17 durch tatsächliche Aufrufe der AIHubMix Produktions-APIs verifiziert; jede Zelle zeigt die Parameter-/Feldsyntax für die entsprechende API.
| Fähigkeit | Chat Completions | Responses | Messages |
|---|---|---|---|
| Denkinhalt in der Antwort | ✅ reasoning_content Feld |
✅ reasoning Ausgabeelement |
✅ thinking Inhaltsblock |
| Denkgeschichte Rückgabe | ✅ Assistentenmeldung unverändert zurückgegeben | ✅ Ausgabeelemente unverändert zurückgegeben | ✅ Inhaltsblöcke unverändert zurückgegeben |
| Werkzeugaufrufe erzwingen/deaktivieren | ✅ tool_choice: "required" / "none" |
✅ tool_choice: "required" |
✅ {"type": "any"} / {"type": "none"} |
| Dynamisches Laden von Werkzeugen | ✅ Systemnachricht mit tools (kein content) |
➖ Unterstützung in Arbeit | ❗ Nicht unterstützt am offiziellen Messages (Anthropic-kompatiblen) Endpunkt |
| Strukturierte Ausgabe | ✅ response_format (json_schema + strict) |
✅ text.format (json_schema) |
❗ Nicht unterstützt am offiziellen Endpunkt; Felder werden stillschweigend ignoriert (200 + freier Text); verwenden Sie Chat / Responses stattdessen |
| Automatische Cache-Trefferzählung | ✅ usage.prompt_tokens_details.cached_tokens |
✅ usage.input_tokens_details.cached_tokens |
✅ usage.cache_read_input_tokens |
| Präfix-Vervollständigung | ✅ "partial": true |
✅ Assistenten-Vorbefüllung | ✅ Assistenten-Vorbefüllung (protokollnative) |
| Visionseingabe | ✅ image_url (base64) |
✅ input_image (base64) |
✅ image Inhaltsblock (base64) |
| Stoppsequenzen | ✅ stop (Limits validiert) |
➖ Unterstützung in Arbeit | ❗ stop_sequences Limits identisch validiert, aber bei einem Treffer wird weder stop_reason: "stop_sequence" noch der stop_sequence Wert zurückgegeben |
FAQ
Welche APIs unterstützt K3 auf AIHubMix?
Chat Completions (/v1/chat/completions), Responses (/v1/responses) und die Claude-kompatible Messages API (/v1/messages).
Kann das Denken deaktiviert oder verringert werden?
Nein. Das Denken von K3 ist standardmäßig aktiviert, und reasoning_effort unterstützt nur die einzelne "max" Stufe.
Warum muss reasoning_content in Mehrturngesprächen zurückgegeben werden?
K3 wird mit bewahrtem Denken trainiert; Moonshot verlangt, dass die vorherige Assistentenmeldung vollständig und unverändert zurückgegeben wird. Fehlende Denkgeschichte führt zu instabiler Ausgabequalität.
Was sind die Grenzen des stop Parameters?
Maximal 5 Stoppsequenzen, jede nicht länger als 32 Bytes; das Überschreiten eines der Limits führt zu einem 400-Fehler.
Unterstützt die Messages API strukturierte Ausgaben?
❗ Nein. Der offizielle Messages (Anthropic-kompatible) Endpunkt von Kimi K3 ignoriert stillschweigend strukturierte Ausgabefelder (gibt 200 mit freiem Text zurück und keinen Fehler). Für strukturierte Ausgaben verwenden Sie response_format bei Chat Completions oder text.format bei Responses.
Warum dauern Einzelanfragen an K3 so lange?
Das Denken von K3 ist auf dem maximalen Niveau festgelegt, und Denk-Tokens machen einen großen Anteil bei komplexen Aufgaben aus (73% der Abschluss-Tokens im gemessenen Fall). Setzen Sie die Client-Timeouts auf Minuten oder länger und verwenden Sie Streaming.
Für Preise und Echtzeitstatus siehe die Kimi K3 Modellseite; für weitere Modelle besuchen Sie die Modellgalerie.
Letzte Aktualisierung: 2026-07-17



