Aller au contenu

Référence API

import { Tabs, TabItem } from “@astrojs/starlight/components”;

Endpoint : POST https://api.astrolabe.chat/v1/chat/completions

ParamètreTypeDéfautDescription
modelstringmistral-small (défaut) — voir Modèles & tarifs
messagesarrayTableau [{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_tokensintegerRecommandé ≥ 300. Tokens alloués à la réponse (raisonnement inclus)
temperaturefloat0.70 = déterministe, 1 = créatif
top_pfloat1.0Nucleus sampling (alternative à temperature)
streambooleanfalseRéponse en streaming SSE
response_formatobjectVoir Sortie structurée
stopstring/arraySéquences d’arrêt

262 144 tokens (entrée + sortie cumulés) — capacité de mistral-small (Mistral Small 4).

RepèreTokens approximatifs
1 mot français~1,3 token
1 page A4 (~400 mots)~520 tokens
262 144 tokens~200 000 mots / ~640 pages

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 (null si le modèle n’a pas généré de raisonnement). Non-standard OpenAI — ignoré par les SDK qui ne le supportent pas.

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.

Modereasoning_contentcontent
Chat libre (sans response_format)Présent si le modèle a raisonné, null sinonRéponse finale
json_object ou json_schemaToujours 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.

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 ≥ 200 suffit (pas de raisonnement)
  • Chat court (classification, extraction) : max_tokens ≥ 300
  • Chat long (rédaction, analyse) : max_tokens 1000–2000

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)

Code HTTPCauseÀ faire
429 Too Many RequestsTrop de requêtes simultanéesAttendre et réessayer — les SDK OpenAI gèrent le retry avec backoff automatiquement
503 Service UnavailableBackend temporairement indisponibleRéessayer après 30 s
401 UnauthorizedClé invalide ou budget épuiséVérifier la clé dans le portail / recharger les crédits
400 Bad RequestParamètre invalide, contexte dépassé, ou règle de conformité violéeVé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.