MoonshotAI: Kimi K3 (batch)
Kimi K3 is het native multimodale redeneermodel van Moonshot AI voor lange programmeertaken en kenniswerk. Het leest tekst, afbeeldingen en video, produceert tekst en ondersteunt workflows met tools binnen een context van 1.048.576 tokens, met een bewaarde denkgeschiedenis tussen stappen.
Over het model
Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.
Kimi K3 is het multimodale agentmodel met open gewichten van Moonshot AI voor langdurige programmeertaken, kenniswerk en redeneren. Het combineert tekst met native visueel begrip van afbeeldingen en video en produceert een tekstueel antwoord of toolverzoek. De fabrikant benadrukt uitgebreide ontwikkelsessies, grote repositories en taken die schermafbeeldingen of visuele feedback naast code gebruiken. Een bruikbare briefing definieert het gewenste artefact, het te gebruiken bewijs en de voorwaarde die het werk als voltooid markeert.
Architectuur en lange context
De modelkaart beschrijft een sparse Mixture of Experts met in totaal 2,8 biljoen parameters en 104 miljard geactiveerde parameters. Het Stable LatentMoE-ontwerp selecteert 16 van de 896 experts per token en gebruikt Kimi Delta Attention en Attention Residuals samen met gated attention. De exacte contextlengte is 1.048.576 tokens. Dit biedt ruimte voor een omvangrijke taakcontext en is geen reden om brongrenzen of de voor het resultaat benodigde ruimte te laten vervallen.
Het gepubliceerde native artefact gebruikt kwantisatiebewuste training met MXFP4-gewichten en MXFP8-activaties. Dit is het releaseformaat van de fabrikant, afzonderlijk van een apart geleverde gekwantiseerde editie of een bewering over hoe een specifieke route het model serveert. Open gewichten en een groot parameteraantal maken het actieve parameteraantal niet gelijk aan de totale opslag- of hardwarevereiste.
Bereid een omvangrijke programmeertaak voor
Lever het relevante repositorymateriaal, het bestaande gedrag, de gevraagde wijziging en compatibiliteitsvoorwaarden aan. Benoem de bestanden of interface die het resultaat moet raken, de controles die succes bepalen en eventuele aangeleverde fout of invoer die het probleem blootlegt. Een bruikbaar resultaat kan een gerichte codewijziging met uitleg en bewijs van daadwerkelijk uitgevoerde controles zijn, in plaats van een beschrijving van acties die nooit zijn uitgevoerd.
Voeg voor een visuele ontwikkeltaak een schermafbeelding of duidelijke weergave van het gewenste resultaat toe, met de relevante code en een specifieke afwijking. De maker beschrijft workflows voor frontendwerk, spellen en CAD die visuele feedback gebruiken. Vraag om de wijziging die de code met het waargenomen resultaat verbindt en bewaar de referentie zodat het geleverde artefact daartegen kan worden gecontroleerd.
Afbeeldingen, video en voorbereiding van kenniswerk
De snelstartgids van de producent gebruikt getypeerde contentobjecten voor visuele berichten; content is een array en geen geserialiseerde representatie van die array. De beeldworkflow gebruikt gecodeerde beeldgegevens of een ondersteunde bestandsverwijzing in plaats van een openbaar afbeeldingsadres. Het videovoorbeeld uploadt een videobestand en levert de resulterende verwijzing met een vraag over de inhoud. Geef een leesbare bron en specificeer de waarneming, het interval of de relatie die belangrijk is. De beeldworkflow van de producent accepteert JPEG-, PNG-, GIF-, WebP-, BMP-, HEIC- en HEIF-afbeeldingen en MP4-, MPEG-, MOV-, AVI-, FLV-, MPG-, WebM-, WMV- en 3GPP-video. Geanimeerde GIF of WebP kan als video worden gedecodeerd. Lever SVG-broncode als tekst aan. De maker beveelt afbeeldingen tot 4096 × 2160 en video tot 1920 × 1080 aan; dit zijn resolutieaanbevelingen, geen afwijzingsdrempels. Houd de verzoekinhoud binnen de gedocumenteerde groottebegrenzing van 100M en upload grote of herhaald gebruikte media als bestanden.
Label voor onderzoek met veel documenten de bronnen en vermeld de vragen die het uiteindelijke rapport moet beantwoorden. Benoem voor een videouitleg de te analyseren gebeurtenissen of volgorde in plaats van onbeperkte toelichting te vragen. K3 gebruikt visuele inhoud als bewijs voor redeneren en retourneert tekst of toolverzoeken. Een toepassing kan die verzoeken aan mediatools doorgeven om afzonderlijke beeld- of videoartefacten te maken.
Denken is altijd ingeschakeld
In de producentinterface van K3 is thinking altijd ingeschakeld. De instelling reasoning_effort op het hoogste niveau accepteert low, high en max, met max als standaard. Deze keuzes zijn modelspecifiek; een instelling zonder denken of een inspanningswaarde uit een andere familie mag niet worden aangenomen. Het migratieadvies van de maker onderscheidt K3 van K2.x door reasoning_effort te gebruiken in plaats van de oudere thinking-configuratie over te nemen.
De producent documenteert afzonderlijke reasoning_content en inhoud voor het definitieve antwoord in gestreamde resultaten. Voor een gesprek met meerdere beurten of toolworkflow vereist hij dat het volledige geretourneerde assistentbericht ongewijzigd wordt teruggegeven, inclusief reasoning_content en tool_calls. Alleen het zichtbare definitieve antwoord bewaren verliest informatie die de workflow met bewaard denken bij de volgende stap verwacht.
Gestructureerde eindantwoorden en gedeeltelijke voortzetting
De snelstartgids documenteert strikte JSON-schema-uitvoer voor de inhoud van het definitieve bericht. Definieer de velden en hun betekenis rond het artefact dat de toepassing nodig heeft en parseer die definitieve inhoud in plaats van haar met het redeneerveld te combineren. Een gestructureerd resultaat kan geëxtraheerde informatie uit aangeleverd materiaal of een gedefinieerd rapportformaat weergeven; het schema begrenst de vorm, terwijl het bronbewijs bepaalt of de waarden correct zijn.
De partial-modus kan een aangeleverde tekstprefix voortzetten. Het producentvoorbeeld plaatst een gedeeltelijk assistentbericht aan het eind van de geschiedenis en combineert die prefix met de geretourneerde voortzetting voor weergave. Gebruik dit wanneer het vereiste artefact een betekenisvol vast begin heeft en houd de prefix gescheiden van het gegenereerde vervolg.
Tools en continuïteit van hun resultaten
K3 ondersteunt aangepaste functietools. Het producentvoorbeeld vereist een tool in de eerste beurt, bewaart het volledige assistentbericht, voert elke geretourneerde aanroep uit en voegt een bijpassend toolresultaat toe voordat het definitieve antwoord wordt aangevraagd. Een voorgestelde aanroep bewijst niet dat de bewerking is geslaagd; het daadwerkelijke geretourneerde resultaat wordt het bewijs voor de volgende stap.
De workflow voor dynamisch laden introduceert een volledige tooldefinitie op een specifiek punt in de berichtgeschiedenis. De definitie heeft een naam, doel en parameters nodig en moet in de verdere geschiedenis blijven staan, omdat de server die declaratie niet zelfstandig bewaart. Houd toolmogelijkheden, aangeleverde argumenten en daadwerkelijke waarnemingen bij elkaar, zodat een lange taak kan voortbouwen op reeds afgerond werk.
Uitvoerinstellingen en herhaalde context
De producent documenteert een standaardruimte voor completion van 131.072 tokens, instelbaar tot 1.048.576 binnen de algemene contextvoorwaarden van het model. De huidige K3 API legt temperature vast op 1.0, top_p op 0.95, één resultaat en nul aanwezigheids- en frequentiestraffen, en instrueert aanroepers die samplinginstellingen weg te laten. Dit zijn de instellingen van het exacte producentmodelprofiel, geen overdraagbare lijst van instelbare parameters.
Contextcaching is automatisch voor geschikte herhaalde prefixen, met gedocumenteerde TTL-keuzes van 5 minuten en 1 uur en 5 minuten als standaard. Gedeeltelijke cacheblokken blijven cachemissers. Houd herbruikbare context stabiel en controleer daadwerkelijk gebruik in plaats van een cachetreffer te beweren op basis van alleen herhaalde tekst. Bewaar voor het uiteindelijke artefact de aangeleverde bronnen, het daadwerkelijke toolbewijs en de vereiste uitvoerstructuur en controleer of een lang antwoord of ontwikkelresultaat aan de genoemde voltooiingscriteria voldoet.
Ailoot Ultra · Batch POST /v1/batches moonshotai/kimi-k3:batch
moonshotai/kimi-k3:batchAan de slag
Kimi K3 is het native multimodale redeneermodel van Moonshot AI voor lange programmeertaken en kenniswerk. Het leest tekst, afbeeldingen en video, produceert tekst en ondersteunt workflows met tools binnen een context van 1.048.576 tokens, met een bewaarde denkgeschiedenis tussen stappen.
- Toegestane invoer
- Tekst
- Resultaten
- Tekst
Beschikbaar in Ailoot · invoer en methoden
Ailoot Ultra · Batch POST /v1/batches
- Invoertypen
text- Uitvoertypen
text- Uitvoerformaat
- inline results[].response.body JSON
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldendpoint | Typestring | VereisteVereist | Waarden en limieten /v1/chat/completions | Standaard— |
Veldmodel | Typestring | VereisteVereist | Waarden en limieten moonshotai/kimi-k3:batch | Standaard— |
Veldrequests | Typebatch_item[] | VereisteVereist | Waarden en limieten Minimumaantal items: 1 | Standaard— |
Veldrequests[].custom_id | Typestring | VereisteVereist | Waarden en limieten | Standaard— |
Veldrequests[].body.messages | Typemessage[] | VereisteVereist | Waarden en limieten | Standaard— |
Veldcompletion_window | Typestring | VereisteOptioneel | Waarden en limieten 24h | Standaard— |
Veldprovider | Typeobject|null | VereisteOptioneel | Waarden en limieten | Standaard— |
Veldrequests[].body.model | Typestring | VereisteOptioneel | Waarden en limieten moonshotai/kimi-k3:batch, moonshotai/kimi-k3 | Standaard— |
Veldprovider.only | Typestring[] | VereisteOptioneel | Waarden en limieten deepinfra/bf16 | Standaard— |
Veldprovider.allow_fallbacks | Typeboolean|null | VereisteOptioneel | Waarden en limieten false, null | Standaard— |
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractendpoint, model, requests |
Parametermaterial_types | Contracttext |
Parameterrepresentation | Contractinline requests[]; elk item bevat custom_id en body |
Parameterrequest_endpoint_profile | Contract/v1/chat/completions |
Parameterfile_material | ContractDe aanroeper mag daadwerkelijke JSONL-inhoud in UTF-8 lokaal in requests[] inlezen. Er wordt geen uploaddoel (purpose), input_file_id of bestandsverwijzing gebruikt. Ontbrekend of leeg klantmateriaal stopt de voorbereiding vóór POST. |
Parameterserialization_order | Contractendpoint, model, provider (indien opgegeven), completion_window (indien opgegeven), requests als laatste |
Parameteroptional_controls | Contractprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | ContractBody’s voor tekstaanvragen via Chat Completions in de gedocumenteerde inline Batch-envelop. |
Levenscyclus: asynchronous
GET /v1/batches/{operation_id} · de daadwerkelijke response.id uit het oorspronkelijke aanmaakantwoord; dezelfde gebruiker/sleutel/groep
Tarieven
Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.
- Snelle modus
- Niet opgegeven Wanneer de snelle modus is geselecteerd
- Flexmodus
- Niet opgegeven Wanneer de modus flex is geselecteerd
- Maximale redeneerinspanning
- Niet opgegeven Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt
- Tarieven voor expliciete caching
- Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd
Ailoot-tarieven
Prijzen per configuratie
Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.
| Configuratie | Tariefstaffel | Contexttokens, meer dan | Contexttokens, tot en met | Kosten |
|---|---|---|---|---|
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Contexttokens, meer dan— | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens $0.00456 / 1K tokens Uitvoer · Uitvoertokens $0.0228 / 1K tokens Invoer · Cache lezen $0.000456 / 1K tokens Invoer · Cache schrijven — / 1K tokens Invoer · Cache schrijven, 1 uur — / 1K tokens |
| ConfiguratieNiveau 1 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens $0.00456 / 1K tokens Uitvoer · Uitvoertokens $0.0228 / 1K tokens Invoer · Cache lezen $0.000456 / 1K tokens Invoer · Cache schrijven — / 1K tokens Invoer · Cache schrijven, 1 uur — / 1K tokens |
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
Ailoot Ultra · Batch
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.
Resultaten ophalen en opslaan
Ailoot Ultra · Batch
inline results[].response.body JSON
GET /v1/batches/{operation_id}
Taakstatus controleren
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 voltooide resultaten bewaren
Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.
Bewaar de volledige oorspronkelijke status-JSON, elk resultaat/custom_id en de volledige antwoord- of foutbody. Sla voltooide results[] zonder filtering op als JSONL.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Bewaar de oorspronkelijke bewerkings-ID. Bij 503 result_pending_check hoort X-Should-Retry:false; dien een oorspronkelijke batch met onbekende uitkomst nooit opnieuw in.
Antwoordvelden
| Veld | Type |
|---|---|
Veldresults[].custom_id | Typestring |
Veldresults[].response.body.choices[].message.content | Typestring|null |
Veldresults[].error | Typeobject|null |
Veldusage | Typeobject|null |
Veldid | Typestring |
Veldmodel | Typestring |
Veldendpoint | Typestring |
Veldstatus | Typestring |
Veldrequest_counts | Typeobject |
Veldresults[].id | Typestring |
Veldresults[].response.status_code | Typeinteger |
Veldresults[].response.request_id | Typestring |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeOngeldige gedocumenteerde inline envelop, dubbele sleutels, ongeldige itemidentiteit of een conflict met de geconfigureerde modelmogelijkheden. | Volgende stapCorrigeer de aangegeven velden voordat u een nieuwe aanvraag indient. |
Antwoord401 · authentication_error | VoorwaardeOngeldige API-sleutel. | Volgende stapGebruik de geautoriseerde Ailoot-sleutel. |
Antwoord403 · permission_error | VoorwaardeBatch-groep niet beschikbaar. | Volgende stapControleer de toegangsrechten van de sleutel/groep. |
Antwoord422 · invalid_request_error | VoorwaardeBij Batch worden kosten van het saldo afgeschreven; aanmaken via een abonnement wordt geweigerd. | Volgende stapGebruik de geautoriseerde groep waarvoor kosten van het saldo worden afgeschreven. |
Antwoord422 · price_unavailable | VoorwaardeVoor de Batch-invoer kan geen prijsopgave worden berekend. | Volgende stapBewaar het antwoord; gebruik de gedocumenteerde invoer voor deze familie. |
Antwoord402 · billing_error | VoorwaardeBatch-reservering niet beschikbaar. | Volgende stapLos het toelatingsprobleem op voordat u een nieuwe aanvraag indient. |
Antwoord503 · price_unavailable | VoorwaardePrijs voor de Batch-methode/native tarieven niet beschikbaar. | Volgende stapBewaar het antwoord; vervang de prijzen niet. |
Antwoord503 · api_error | VoorwaardeDe exacte leveranciersroute is niet beschikbaar. | Volgende stapBewaar het antwoord voor herstel van de route. |
Antwoord503 · result_pending_check | VoorwaardeHet oorspronkelijke resultaat moet worden gecontroleerd; X-Should-Retry:false. | Volgende stapBewaar de oorspronkelijke operation_id/id en lees de status ervan uit; herhaal de oorspronkelijke POST nooit. |
Antwoord404 · not_found | VoorwaardeDe bewerking voor de Batch-status ontbreekt of is eigendom van een andere identiteit. | Volgende stapGebruik exact de oorspronkelijke id en dezelfde gebruiker/sleutel/groep. |
Aliasnamen
Modelaliasnamen
Ailoot Ultra moonshotai/kimi-k3:batch
Aliasnamen voor methodepaden
Gebruik de hierboven getoonde methodepaden.
Gerelateerde aanroeper-ID’s
FAQ · MoonshotAI: Kimi K3 (batch)
- Welke invoer en resultaten zijn beschikbaar?
POST /v1/batches·moonshotai/kimi-k3:batch:text→text- Welke velden gebruikt het verzoek?
POST /v1/batches·moonshotai/kimi-k3:batch:endpoint,model,requests,completion_window,provider- Welke limieten gelden?
POST /v1/batches·moonshotai/kimi-k3:batch:requests.min_items:1