MoonshotAI: Kimi K3 (batch)
Kimi K3 ist das native multimodale Reasoning-Modell von Moonshot AI für lange Programmieraufgaben und Wissensarbeit. Es liest Text, Bilder und Video, erzeugt Text und unterstützt werkzeuggestützte Abläufe mit einem Kontext von 1.048.576 Tokens und bewahrtem Thinking-Verlauf über Schritte hinweg.
Über das Modell
Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.
Kimi K3 ist das multimodale agentische Modell von Moonshot AI mit offenen Gewichten für langfristige Programmieraufgaben, Wissensarbeit und schlussfolgerndes Denken. Es verbindet Text mit nativem visuellem Verständnis von Bildern und Video und erzeugt eine Textantwort oder Werkzeuganfrage. Der Hersteller hebt ausgedehnte Entwicklungssitzungen, große Repositories und Aufgaben hervor, die Screenshots oder visuelle Rückmeldungen neben Code verwenden. Ein nützliches Briefing definiert das gewünschte Artefakt, die zu verwendenden Belege und die Bedingung, die den Arbeitsabschluss kennzeichnet.
Architektur und langer Kontext
Die Modellkarte beschreibt eine dünn besetzte Mixture of Experts mit insgesamt 2,8 Billionen Parametern und 104 Milliarden aktivierten Parametern. Ihr Stable-LatentMoE-Entwurf wählt pro Token 16 von 896 Experten aus und verwendet Kimi Delta Attention und Attention Residuals zusammen mit Gated Attention. Die genaue Kontextlänge beträgt 1.048.576 Tokens. Das bietet Platz für einen umfangreichen Aufgabenkontext und ist kein Grund, Quellengrenzen oder den für das Ergebnis benötigten Platz zu verwerfen.
Das veröffentlichte native Artefakt verwendet quantisierungsbewusstes Training mit MXFP4-Gewichten und MXFP8-Aktivierungen. Das ist das Veröffentlichungsformat des Herstellers und unterscheidet sich von einer gesondert bereitgestellten quantisierten Ausgabe oder einer Behauptung darüber, wie eine bestimmte Route das Modell bereitstellt. Offene Gewichte und eine große Parameterzahl machen die Zahl aktiver Parameter nicht zum gesamten Speicher- oder Hardwarebedarf.
Eine umfangreiche Programmieraufgabe vorbereiten
Stellen Sie das relevante Repository-Material, das bestehende Verhalten, die gewünschte Änderung und die Kompatibilitätsvorgaben bereit. Benennen Sie Dateien oder Schnittstelle, die das Ergebnis betreffen muss, die erfolgsbestimmenden Prüfungen sowie bereitgestellte Fehler oder Eingaben, die das Problem offenlegen. Ein nützliches Ergebnis kann eine gezielte Codeänderung mit Erklärung und Belegen aus tatsächlich ausgeführten Prüfungen sein statt einer Beschreibung von Aktionen, die nie durchgeführt wurden.
Fügen Sie für eine visuelle Entwicklungsaufgabe einen Screenshot oder eine klare Ansicht des gewünschten Ergebnisses mit dem relevanten Code und einer konkreten Abweichung bei. Der Hersteller beschreibt Abläufe über Frontend-Arbeit, Spiele und CAD hinweg, die visuelle Rückmeldungen verwenden. Verlangen Sie die Änderung, die den Code mit dem beobachteten Ergebnis verbindet, und bewahren Sie die Referenz, damit das gelieferte Artefakt anhand dieser geprüft werden kann.
Bilder, Video und Vorbereitung von Wissensarbeit
Die Schnellstartanleitung des Herstellers verwendet typisierte Inhaltsobjekte für visuelle Nachrichten; content ist ein Array und keine serialisierte Darstellung dieses Arrays. Ihr Bildablauf verwendet kodierte Bilddaten oder eine unterstützte Dateireferenz statt einer öffentlichen Bildadresse. Das Videobeispiel lädt eine Videodatei hoch und stellt die entstandene Referenz mit einer Frage zu ihrem Inhalt bereit. Liefern Sie eine gut lesbare Quelle und geben Sie die wichtige Beobachtung, das Intervall oder die Beziehung an. Der Vision-Ablauf des Herstellers akzeptiert Bilder in JPEG, PNG, GIF, WebP, BMP, HEIC und HEIF sowie Video in MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV und 3GPP. Animierte GIF- oder WebP-Dateien können als Video dekodiert werden. Stellen Sie SVG-Quellcode als Text bereit. Der Hersteller empfiehlt Bilder bis zu 4096 × 2160 und Video bis zu 1920 × 1080; das sind Auflösungsempfehlungen und keine Ablehnungsschwellen. Halten Sie den Anfragekörper innerhalb der dokumentierten Größenbegrenzung von 100M und laden Sie große oder wiederholt verwendete Medien als Dateien hoch.
Kennzeichnen Sie für dokumentintensive Recherche die Quellen und nennen Sie die Fragen, die der abschließende Bericht beantworten soll. Benennen Sie für eine Videoerklärung die zu analysierenden Ereignisse oder Abläufe, statt uneingeschränkte Kommentare zu verlangen. K3 verwendet visuelle Inhalte als Belege für Reasoning und liefert Text oder Werkzeuganfragen zurück. Eine Anwendung kann diese Anfragen an Medienwerkzeuge weitergeben, um gesonderte Bild- oder Videoartefakte zu erstellen.
Thinking ist immer aktiviert
In der Herstellerschnittstelle von K3 ist Thinking immer aktiviert. Die oberste Einstellung reasoning_effort akzeptiert low, high und max, wobei max der Standard ist. Diese Auswahlmöglichkeiten sind modellspezifisch; eine Einstellung ohne Thinking oder ein Aufwandswert einer anderen Familie sollte nicht vorausgesetzt werden. Die Migrationsanleitung des Herstellers unterscheidet K3 von K2.x durch die Verwendung von reasoning_effort, statt die ältere thinking-Konfiguration zu übernehmen.
Der Hersteller dokumentiert getrennte reasoning_content- und endgültige Antwortinhalte in gestreamten Ergebnissen. Für ein Gespräch mit mehreren Runden oder einen Werkzeugablauf verlangt er, dass die vollständige zurückgegebene Assistentennachricht unverändert zurückgegeben wird, einschließlich reasoning_content und tool_calls. Wird nur die sichtbare endgültige Antwort bewahrt, gehen Informationen verloren, die der Ablauf mit bewahrtem Thinking des Modells im nächsten Schritt erwartet.
Strukturierte Endantworten und teilweise Fortsetzung
Die Schnellstartanleitung dokumentiert eine strikte JSON-Schema-Ausgabe für den Inhalt der endgültigen Nachricht. Definieren Sie die Felder und ihre Bedeutungen entsprechend dem Artefakt, das die Anwendung benötigt, und parsen Sie diesen endgültigen Inhalt, statt ihn mit dem Reasoning-Feld zu verbinden. Ein strukturiertes Ergebnis kann aus bereitgestelltem Material extrahierte Informationen oder ein definiertes Berichtsformat darstellen; das Schema beschränkt seine Form, während die Quellbelege bestimmen, ob seine Werte richtig sind.
Der Partial-Modus kann ein bereitgestelltes Textpräfix fortsetzen. Das Beispiel des Herstellers platziert eine teilweise Assistentennachricht am Ende des Verlaufs und verbindet dieses Präfix für die Anzeige mit der zurückgegebenen Fortsetzung. Verwenden Sie dies, wenn das erforderliche Artefakt einen sinnvollen festen Anfang hat, und halten Sie das Präfix vom erzeugten Rest getrennt.
Werkzeuge und Kontinuität ihrer Ergebnisse
K3 unterstützt benutzerdefinierte Funktionswerkzeuge. Das Herstellerbeispiel verlangt in der ersten Runde ein Werkzeug, bewahrt die vollständige Assistentennachricht, führt jeden zurückgegebenen Aufruf aus und hängt ein passendes Werkzeugergebnis an, bevor die endgültige Antwort angefordert wird. Ein vorgeschlagener Aufruf ist kein Beleg, dass die Operation erfolgreich war; das tatsächlich zurückgegebene Ergebnis wird zum Beleg für den nächsten Schritt.
Sein Ablauf für dynamisches Laden führt an einem bestimmten Punkt im Nachrichtenverlauf eine vollständige Werkzeugdefinition ein. Die Definition benötigt Namen, Zweck und Parameter und muss im nachfolgenden Verlauf erhalten bleiben, weil der Server diese Deklaration nicht unabhängig speichert. Halten Sie Werkzeugfähigkeiten, bereitgestellte Argumente und reale Beobachtungen einander zugeordnet, damit eine lange Aufgabe von bereits abgeschlossener Arbeit aus fortgesetzt werden kann.
Ausgabesteuerung und wiederholter Kontext
Der Hersteller dokumentiert einen standardmäßigen Vervollständigungsrahmen von 131.072 Tokens, der innerhalb der gesamten Kontextvorgaben des Modells bis auf 1.048.576 konfiguriert werden kann. Seine aktuelle K3 API legt temperature auf 1.0, top_p auf 0.95, ein Ergebnis sowie presence- und frequency-Strafen von null fest und weist Aufrufer an, diese Sampling-Steuerungen wegzulassen. Das sind die Einstellungen des genauen Herstellermodellprofils und keine übertragbare Liste anpassbarer Steuerungen.
Kontext-Caching erfolgt automatisch für geeignete wiederholte Präfixe, mit dokumentierten TTL-Optionen von 5 Minuten und 1 Stunde sowie 5 Minuten als Standard. Teilweise Cacheblöcke bleiben Fehlzugriffe. Halten Sie wiederverwendbaren Kontext stabil und prüfen Sie die tatsächliche Nutzung, statt allein aus wiederholtem Text einen Cachetreffer abzuleiten. Bewahren Sie für das abschließende Artefakt die bereitgestellten Quellen, tatsächlichen Werkzeugbelege und erforderliche Ausgabestruktur und prüfen Sie, ob eine lange Antwort oder ein Entwicklungsergebnis die genannten Abschlusskriterien erfüllt.
Ailoot Ultra · Stapelverarbeitung POST /v1/batches moonshotai/kimi-k3:batch
moonshotai/kimi-k3:batchEinstieg
Kimi K3 ist das native multimodale Reasoning-Modell von Moonshot AI für lange Programmieraufgaben und Wissensarbeit. Es liest Text, Bilder und Video, erzeugt Text und unterstützt werkzeuggestützte Abläufe mit einem Kontext von 1.048.576 Tokens und bewahrtem Thinking-Verlauf über Schritte hinweg.
- Zulässige Eingaben
- Text
- Ergebnisse
- Text
In Ailoot verfügbar · Eingaben und Methoden
Ailoot Ultra · Stapelverarbeitung POST /v1/batches
- Eingabe
text- Ausgabe
text- Ausgabeformat
- eingebettetes JSON unter results[].response.body
| Feld | Typ | Anforderung | Werte und Limits | Standard |
|---|---|---|---|---|
Feldendpoint | Typstring | AnforderungErforderlich | Werte und Limits /v1/chat/completions | Standard— |
Feldmodel | Typstring | AnforderungErforderlich | Werte und Limits moonshotai/kimi-k3:batch | Standard— |
Feldrequests | Typbatch_item[] | AnforderungErforderlich | Werte und Limits Mindestanzahl Elemente: 1 | Standard— |
Feldrequests[].custom_id | Typstring | AnforderungErforderlich | Werte und Limits | Standard— |
Feldrequests[].body.messages | Typmessage[] | AnforderungErforderlich | Werte und Limits | Standard— |
Feldcompletion_window | Typstring | AnforderungOptional | Werte und Limits 24h | Standard— |
Feldprovider | Typobject|null | AnforderungOptional | Werte und Limits | Standard— |
Feldrequests[].body.model | Typstring | AnforderungOptional | Werte und Limits moonshotai/kimi-k3:batch, moonshotai/kimi-k3 | Standard— |
Feldprovider.only | Typstring[] | AnforderungOptional | Werte und Limits deepinfra/bf16 | Standard— |
Feldprovider.allow_fallbacks | Typboolean|null | AnforderungOptional | Werte und Limits false, null | Standard— |
Methodenparameter und Lebenszyklus
| Parameter | Vertrag |
|---|---|
Parametercontent_type | Vertragapplication/json |
Parameterrequired | Vertragendpoint, model, requests |
Parametermaterial_types | Vertragtext |
Parameterrepresentation | Vertrageingebettete requests[]; jedes Element enthält custom_id und body |
Parameterrequest_endpoint_profile | Vertrag/v1/chat/completions |
Parameterfile_material | VertragDer Aufrufer kann tatsächliches UTF-8-JSONL lokal in requests[] einlesen. Es werden weder ein Upload-Zweck noch input_file_id oder eine Dateireferenz verwendet. Fehlendes oder leeres Kundenmaterial stoppt die Vorbereitung vor POST. |
Parameterserialization_order | Vertragendpoint, model, provider (falls angegeben), completion_window (falls angegeben), requests als letztes Feld |
Parameteroptional_controls | Vertragprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | VertragAnfragekörper für Text Chat Completions in der dokumentierten Inline-Batch-Struktur. |
Lebenszyklus: asynchronous
GET /v1/batches/{operation_id} · die tatsächliche response.id der ursprünglichen Erstellungsantwort; derselbe Nutzer/Schlüssel/dieselbe Gruppe
Tarife
Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.
- Schnellmodus
- Nicht angegeben Wenn der Schnellmodus ausgewählt ist
- Flex-Modus
- Nicht angegeben Wenn der Modus flex ausgewählt ist
- Maximaler Denkaufwand
- Nicht angegeben Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird
- Preise für explizites Caching
- Nicht aktiviert Wenn explizites Caching angefordert wird
Ailoot-Tarife
Preise nach Konfiguration
Ordnen Sie jede Gebühr den angezeigten Bedingungen zu. Verwenden Sie für jede Gruppe alternativer Konfigurationen einen Tarif.
| Konfiguration | Tarifstaffel | Kontexttoken, mehr als | Kontexttoken, bis einschließlich | Gebühr |
|---|---|---|---|---|
| KonfigurationBasistarife für Token | TarifstaffelGrundtarif | Kontexttoken, mehr als— | Kontexttoken, bis einschließlichKeine Obergrenze | Gebühr Eingabe · Eingabetoken $0.00456 / 1K Tokens Ausgabe · Ausgabetoken $0.0228 / 1K Tokens Eingabe · Cache lesen $0.000456 / 1K Tokens Eingabe · In Cache schreiben — / 1K Tokens Eingabe · In Cache schreiben, 1 Stunde — / 1K Tokens |
| KonfigurationAnfragelängenstufe 1 | Tarifstaffel— | Kontexttoken, mehr als0 | Kontexttoken, bis einschließlichKeine Obergrenze | Gebühr Eingabe · Eingabetoken $0.00456 / 1K Tokens Ausgabe · Ausgabetoken $0.0228 / 1K Tokens Eingabe · Cache lesen $0.000456 / 1K Tokens Eingabe · In Cache schreiben — / 1K Tokens Eingabe · In Cache schreiben, 1 Stunde — / 1K Tokens |
Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →
Beispielanfragen
Ailoot Ultra · Stapelverarbeitung
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json
from pathlib import Path
body=json.loads('{"endpoint":"/v1/chat/completions","model":"moonshotai/kimi-k3:batch","requests":[{"custom_id":"req-0001","body":{"messages":[{"role":"user","content":"Hello!"}],"max_tokens":16}}]}')
Path("batch-request.json").write_text(json.dumps(body,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json
import json, os
from pathlib import Path
from urllib.request import Request, urlopen
def prepare_requests(customer_path):
path = Path(customer_path)
if not path.is_file(): raise ValueError("Customer JSONL file is missing")
items = [json.loads(line) for line in path.read_text(encoding="utf-8").splitlines() if line.strip()]
if not items: raise ValueError("Customer JSONL contains no requests")
ids = set()
for item in items:
if set(item) != {"custom_id", "body"}: raise ValueError("Each item needs custom_id and body")
cid = item["custom_id"]
if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError("custom_id must be nonempty and unique")
ids.add(cid)
if not isinstance(item["body"], dict) or not item["body"].get("messages"): raise ValueError("Supply actual text messages")
supplied_model = item["body"].get("model")
if supplied_model is not None and supplied_model not in ['moonshotai/kimi-k3:batch', 'moonshotai/kimi-k3']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"moonshotai/kimi-k3:batch", "requests":items}
if __name__ == "__main__":
material = os.environ.get("AILOOT_BATCH_REQUESTS_JSONL", "")
if not material: raise SystemExit("Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file")
body = prepare_requests(material)
key = os.environ.get("AILOOT_API_KEY", "")
if not key: raise SystemExit("Set AILOOT_API_KEY")
request = Request("https://api.ailoot.ai/v1/batches", data=json.dumps(body, ensure_ascii=False).encode("utf-8"), headers={"Authorization":"Bearer " + key, "Content-Type":"application/json"}, method="POST")
with urlopen(request) as response:
raw = response.read()
Path("batch-create-response.json").write_bytes(raw)
print(raw.decode("utf-8"))
import json
from pathlib import Path
raw = Path("batch-status-response.json").read_bytes()
response = json.loads(raw)
if response.get("status") != "completed":
raise SystemExit("Keep the original operation; read its status without resubmitting")
results = response.get("results")
if not isinstance(results, list) or not results:
raise SystemExit("Preserve the original response; completed results are missing")
Path("batch-results.jsonl").write_text("".join(json.dumps(item, ensure_ascii=False) + "\n" for item in results), encoding="utf-8")
# Preserve batch-status-response.json with aggregate usage and every result/error.
Ergebnisse abrufen und speichern
Ailoot Ultra · Stapelverarbeitung
eingebettetes JSON unter results[].response.body
GET /v1/batches/{operation_id}
Auftragsstatus prüfen
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
BATCH_OPERATION_ID="$(python3 - <<'PY_ID'
import json
from pathlib import Path
from urllib.parse import quote
response = json.loads(Path("batch-create-response.json").read_text(encoding="utf-8"))
operation = response.get("id")
if not isinstance(operation, str) or not operation: raise SystemExit("No actual original operation ID; preserve the response and do not resubmit")
print(quote(operation, safe=""))
PY_ID
)"
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o batch-status-response.json
Alle fertiggestellten Ergebnisse aufbewahren
Bewahren Sie jede vollständig zurückgegebene Antwort, Datei und jeden Inhaltsteil auf.
Das vollständige ursprüngliche Status-JSON, jedes Ergebnis/jede custom_id und den vollständigen Antwort- oder Fehlerkörper aufbewahren. Abgeschlossene results[] ohne Filterung als JSONL speichern.
Wenn die ursprüngliche Antwort geprüft werden muss
Die ursprüngliche Vorgangs-ID beibehalten. Bei 503 result_pending_check gilt X-Should-Retry:false; einen ursprünglichen Batch mit unbekanntem Ausgang niemals erneut einreichen.
Antwortfelder
| Feld | Typ |
|---|---|
Feldresults[].custom_id | Typstring |
Feldresults[].response.body.choices[].message.content | Typstring|null |
Feldresults[].error | Typobject|null |
Feldusage | Typobject|null |
Feldid | Typstring |
Feldmodel | Typstring |
Feldendpoint | Typstring |
Feldstatus | Typstring |
Feldrequest_counts | Typobject |
Feldresults[].id | Typstring |
Feldresults[].response.status_code | Typinteger |
Feldresults[].response.request_id | Typstring |
Fehler und nächste Schritte
| Antwort | Bedingung | Nächster Schritt |
|---|---|---|
Antwort400 · invalid_request_error | BedingungUngültige Struktur der dokumentierten Inline-Einbettung, doppelte Schlüssel, ungültige Identitätsangaben zu einem Element oder ein Konflikt mit den konfigurierten Modellfähigkeiten. | Nächster SchrittDie angegebenen Felder vor jeder neuen Einreichung korrigieren. |
Antwort401 · authentication_error | BedingungUngültiger API-Schlüssel. | Nächster SchrittDen autorisierten Ailoot-Schlüssel verwenden. |
Antwort403 · permission_error | BedingungGruppe für Stapelverarbeitung nicht verfügbar. | Nächster SchrittDie Berechtigung des Schlüssels bzw. der Gruppe prüfen. |
Antwort422 · invalid_request_error | BedingungStapelverarbeitung wird über das Guthaben abgerechnet; die Erstellung über ein Abonnement wird abgelehnt. | Nächster SchrittDie autorisierte Gruppe mit Guthabenabrechnung verwenden. |
Antwort422 · price_unavailable | BedingungFür die Batch-Eingabe kann kein Preisangebot erstellt werden. | Nächster SchrittAntwort aufbewahren; die dokumentierte Eingabe der API-Familie verwenden. |
Antwort402 · billing_error | BedingungReservierung für Stapelverarbeitung nicht verfügbar. | Nächster SchrittDie Zulassung klären, bevor eine neue Anfrage gestellt wird. |
Antwort503 · price_unavailable | BedingungMethodenpreis bzw. native Tarife für Stapelverarbeitung nicht verfügbar. | Nächster SchrittAntwort aufbewahren; keine anderen Preise einsetzen. |
Antwort503 · api_error | BedingungDie genaue Anbieterroute ist nicht verfügbar. | Nächster SchrittAntwort zur Reparatur der Route aufbewahren. |
Antwort503 · result_pending_check | BedingungDas ursprüngliche Ergebnis muss geprüft werden; X-Should-Retry:false. | Nächster SchrittDie ursprüngliche operation_id/id beibehalten und ihren Status lesen; den ursprünglichen POST niemals wiederholen. |
Antwort404 · not_found | BedingungDer Batch-Vorgang, dessen Status abgefragt wird, ist nicht vorhanden oder gehört einer anderen Identität. | Nächster SchrittDie genaue ursprüngliche id und denselben Nutzer/Schlüssel/dieselbe Gruppe verwenden. |
Aliasnamen
Modellaliasnamen
Ailoot Ultra moonshotai/kimi-k3:batch
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
FAQ · MoonshotAI: Kimi K3 (batch)
- Welche Eingaben und Ergebnisse sind verfügbar?
POST /v1/batches·moonshotai/kimi-k3:batch:text→text- Welche Felder verwendet die Anfrage?
POST /v1/batches·moonshotai/kimi-k3:batch:endpoint,model,requests,completion_window,provider- Welche Grenzen gelten?
POST /v1/batches·moonshotai/kimi-k3:batch:requests.min_items:1