Référence API
import { Tabs, TabItem } from “@astrojs/starlight/components”;
Paramètres de complétion
Section intitulée « Paramètres de complétion »Endpoint : POST https://api.astrolabe.chat/v1/chat/completions
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
model | string | — | mistral-small (défaut) — voir Modèles & tarifs |
messages | array | — | Tableau [{role, content}] — rôles : system, user, assistant. Le content peut être une chaîne ou un tableau de parties (texte + fichiers joints — voir Fichiers dans le chat) |
max_tokens | integer | — | Recommandé ≥ 300. Tokens alloués à la réponse (raisonnement inclus) |
temperature | float | 0.7 | 0 = déterministe, 1 = créatif |
top_p | float | 1.0 | Nucleus sampling (alternative à temperature) |
stream | boolean | false | Réponse en streaming SSE |
response_format | object | — | Voir Sortie structurée |
stop | string/array | — | Séquences d’arrêt |
Taille de contexte
Section intitulée « Taille de contexte »262 144 tokens (entrée + sortie cumulés) — capacité de mistral-small (Mistral Small 4).
| Repère | Tokens approximatifs |
|---|---|
| 1 mot français | ~1,3 token |
| 1 page A4 (~400 mots) | ~520 tokens |
| 262 144 tokens | ~200 000 mots / ~640 pages |
Structure de réponse
Section intitulée « Structure de réponse »mistral-small (Mistral Small 4) est un modèle avec raisonnement interne. La réponse inclut deux champs :
{ "id": "chatcmpl-…", "choices": [{ "index": 0, "message": { "role": "assistant", "content": "La réponse finale à utiliser.", "reasoning_content": "…réflexion interne du modèle (null si le modèle n'a pas raisonné)…" }, "finish_reason": "stop" }], "usage": { "prompt_tokens": 42, "completion_tokens": 318, "total_tokens": 360 }}content— la réponse finale, directement exploitable.reasoning_content— la chaîne de pensée interne du modèle (nullsi le modèle n’a pas généré de raisonnement). Non-standard OpenAI — ignoré par les SDK qui ne le supportent pas.
Raisonnement
Section intitulée « Raisonnement »mistral-small est un modèle avec raisonnement interne (chain-of-thought) : il réfléchit
avant de formuler sa réponse sur les tâches complexes. Quand ce raisonnement a lieu, il est
exposé dans le champ reasoning_content du message.
Quand le raisonnement est visible
Section intitulée « Quand le raisonnement est visible »| Mode | reasoning_content | content |
|---|---|---|
Chat libre (sans response_format) | Présent si le modèle a raisonné, null sinon | Réponse finale |
json_object ou json_schema | Toujours null (raisonnement désactivé) | JSON contraint |
Pour les requêtes en chat, le modèle décide lui-même s’il a besoin de raisonner. Les tâches simples (reformulation, réponse directe) n’en déclenchent pas toujours.
Impact sur max_tokens
Section intitulée « Impact sur max_tokens »Les tokens de raisonnement sont comptabilisés dans completion_tokens. Avec max_tokens
trop bas, le quota peut être épuisé avant la réponse finale → content vide ou tronqué.
Règle pratique :
- Sortie structurée (
json_schema/json_object) :max_tokens ≥ 200suffit (pas de raisonnement) - Chat court (classification, extraction) :
max_tokens ≥ 300 - Chat long (rédaction, analyse) :
max_tokens 1000–2000
Streaming
Section intitulée « Streaming »Avec stream: true, la réponse arrive en Server-Sent Events (même format qu’OpenAI).
Les chunks de raisonnement arrivent dans delta.reasoning_content, les chunks de réponse
finale dans delta.content.
stream = client.chat.completions.create( model="mistral-small", messages=[{"role": "user", "content": "Résume ce compte-rendu en 3 points."}], max_tokens=600, stream=True,)for chunk in stream: delta = chunk.choices[0].delta if delta.content: print(delta.content, end="", flush=True)Rate limits
Section intitulée « Rate limits »| Code HTTP | Cause | À faire |
|---|---|---|
429 Too Many Requests | Trop de requêtes simultanées | Attendre et réessayer — les SDK OpenAI gèrent le retry avec backoff automatiquement |
503 Service Unavailable | Backend temporairement indisponible | Réessayer après 30 s |
401 Unauthorized | Clé invalide ou budget épuisé | Vérifier la clé dans le portail / recharger les crédits |
400 Bad Request | Paramètre invalide, contexte dépassé, ou règle de conformité violée | Vérifier max_tokens + taille du prompt ; lire le message d’erreur (les refus de conformité y sont explicites) |
Limite de concurrence actuelle : ~28 requêtes simultanées (Phase 1, infrastructure DEV1-L).
Au-delà, vous recevez un 429 propre — votre client SDK retente automatiquement.
Pour une capacité supérieure, contactez-nous.