Introduction
Kimi K3 est le modèle d’agent à long contexte de Moonshot AI, proposé ici sous la forme d’un point de terminaison compatible OpenAI sur /v1/chat/completions. Il lit jusqu’à 1 000 000 de tokens répartis sur 256 messages au plus et peut renvoyer jusqu’à 1 048 576 tokens en une réponse.
La requête compte sept champs : messages, max_tokens, tools, tool_choice, response_format, reasoning_effort et stop. L’effort accepte low, high ou max et démarre à max ; temperature et top_p sont fixés par Moonshot et refusés ici. Les messages peuvent contenir des parties texte et image_url, et les réponses sont diffusées en Server-Sent Events.
Fonctionnalités et points forts
reasoning_effort, le seul réglage
L’échantillonnage étant fixé par Moonshot, ce que vous réglez, c’est l’effort du modèle : low pour de courts tours mécaniques, high pour une revue ordinaire, max pour les migrations et les démonstrations. Une valeur d’échantillonnage copiée d’un autre modèle échoue immédiatement au lieu d’être ignorée en silence : une requête veut dire la même chose dans tous les environnements.
Lire un paquet, rendre un fichier
Un million de tokens en entrée et jusqu’à 1 048 576 en retour : le code entre en entier et un fichier réécrit peut revenir en entier. Chaque passe voit toujours le reste du dépôt, précisément le contexte que les pipelines découpés perdent d’ordinaire.
Texte et images dans le même message
Un message utilisateur peut mêler des parties texte et image_url avec un niveau detail auto, low ou high, et chaque partie est comptée en tokens d’entrée. La capture d’un écran défaillant et le code qui l’affiche peuvent partir ensemble vers le modèle ; il n’existe pas de partie vidéo.
Paramètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
messages | Oui | 256 tours ordonnés au maximum. Le contenu est une chaîne ou un tableau de parties : text et |
max_tokens | Non | Plafonne la réponse à 1 048 576. Le défaut de 32 768 peut encore tronquer en silence la réécriture d’un fichier entier : dimensionnez-le selon le livrable. |
reasoning_effort | Non | low, high ou max, max par défaut — les niveaux et le défaut que Moonshot documente pour K3 : une requête qui omet le champ obtient déjà le réglage le plus soigné. |
stop | Non | Jusqu’à 4 séquences de 32 octets au plus chacune, sous forme de chaîne ou de tableau. 1 caractères minimum · 1 éléments minimum · 4 éléments maximum |
tools | Non | Jusqu’à 128 définitions de fonctions, déclarées à la première requête de la boucle. 128 éléments maximum |
tool_choice | Non | auto laisse le modèle sauter un appel ; required en impose un ; none les interdit tous. |
response_format | Non | Réclamez un objet JSON quand la sortie est de la donnée structurée plutôt que de la prose. |
Tarification
Entrée $2.70 / Sortie $13.50 par 1 million de tokens
Cas d’utilisation
Réécrire tout un dépôt, fichier par fichier
Envoyez chaque fichier d’un paquet et demandez un fichier migré à la fois plutôt qu’une description du diff. Le plafond de réponse élevé rapporte même un gros fichier en entier : rien ne se perd à une coupure de continuation au milieu d’une fonction.
Des boucles d’agent à surface fixe
Déclarez jusqu’à 128 outils, laissez tool_choice sur auto et lancez la boucle. Fixez reasoning_effort pour toute la boucle : seule la conversation change d’une itération à l’autre, ce qui garde la trace de l’agent lisible quand quelque chose tourne mal.
Traduire et restructurer des livres entiers
Chargez un manuscrit complet et un glossaire, puis demandez un chapitre traduit ou restructuré par appel, tandis que le modèle voit toujours le reste du livre. Termes et noms restent cohérents, puisque les chapitres précédents sont dans la même requête.
Guide de prompt et conseils pratiques
Choisir le niveau d’effort en connaissance de cause
Omettre reasoning_effort revient déjà à max – le réglage le plus soigneux et le plus gourmand en tokens de sortie. Décidez selon la tâche : max pour une migration ou une démonstration, high pour une revue, low pour de courts tours mécaniques.
Demander l’artefact, pas sa description
POST https://api.spicyapi.ai/v1/chat/completions avec {"model": "moonshot/kimi-k3", "messages": [{"role": "system", "content": "Return the migrated files in full. No commentary, no diffs, no omitted regions."}, {"role": "user", "content": "<every file in the package>"}], "max_tokens": 120000}. Dimensionnez max_tokens selon le fichier attendu : la valeur par défaut de 32 768 peut tronquer la réécriture d’un fichier entier sans lever d’erreur.
Streaming et limites
Un appel non diffusé en max sur une fenêtre pleine peut durer longtemps : diffusez-le en streaming ou dimensionnez le délai d’attente du client. La fenêtre est de 1 000 000 de tokens, un max_tokens supérieur à 1 048 576 est invalide, et temperature ou top_p dans le corps échouent à la validation.
Démarrage rapide de l’API
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "moonshot/kimi-k3/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
La référence API détaille l’authentification, le schéma complet, le polling et la gestion des erreurs.





