Mode de pensée
Certains modèles réfléchissent avant de répondre. Ce raisonnement améliore les réponses sur les problèmes complexes, mais il coûte des jetons de sortie et du temps. Vous pouvez le désactiver, ou en régler l'intensité.
Comportement par défaut#
| Modèle | Raisonne par défaut ? |
|---|---|
mina-flash | Non : réponse directe, optimisée pour la latence. |
mina-low | Non : réponse directe. |
mina-full | Oui : raisonne avant de répondre. |
Couper le raisonnement#
Sur une question simple, le raisonnement est du temps et de l'argent perdus :
reponse = client.chat.completions.create(
model="mina-full",
messages=[{"role": "user", "content": "Quelle est la capitale de l'Algérie ?"}],
extra_body={"thinking": {"type": "disabled"}},
)curl https://api.cloudzir.com/v1/chat/completions \
-H "Authorization: Bearer $CLOUDZIR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mina-full",
"messages": [{"role": "user", "content": "Quelle est la capitale de l Algérie ?"}],
"thinking": {"type": "disabled"}
}'Les résultats varient selon la requête et les réglages.
Le SDK Python valide les champs connus : passez thinking et
reasoning_effort via extra_body={...}. En HTTP direct, mettez-les
simplement à la racine du corps.
Régler l'intensité#
reponse = client.chat.completions.create(
model="mina-full",
messages=[{"role": "user", "content": probleme_complexe}],
extra_body={"reasoning_effort": "high"}, # minimal | low | medium | high
)
Demander un effort active le raisonnement, même s'il était coupé. Un niveau inconnu est
refusé par un 400 plutôt qu'ignoré en silence.
Lire ce que le raisonnement a coûté#
"usage": {
"prompt_tokens": 78,
"completion_tokens": 756,
"total_tokens": 834,
"completion_tokens_details": { "reasoning_tokens": 557 }
}
Les reasoning_tokens sont déjà comptés dans
completion_tokens : ce n'est pas une ligne de facturation en plus, c'est le
détail de ce que la réflexion représente. Dans l'exemple ci-dessus, 557 des 756 jetons de
sortie (soit 74 % de la facture de sortie) ont servi à réfléchir, pas à répondre.
Prévoir max_tokens#
Le raisonnement consomme le budget de sortie. Un max_tokens trop serré sur un
modèle qui réfléchit produit une réponse tronquée, voire vide, avec
finish_reason: "length". Prévoyez large (1 000 jetons ou plus), ou coupez le
raisonnement.
Format Anthropic#
Sur /anthropic, utilisez le champ thinking de la spécification
Anthropic. Le raisonnement revient dans un bloc de contenu thinking, avant le
bloc text.
message = client.messages.create(
model="mina-full",
max_tokens=2000,
thinking={"type": "enabled", "budget_tokens": 4000},
messages=[{"role": "user", "content": probleme_complexe}],
)
for bloc in message.content:
if bloc.type == "thinking":
print("raisonnement :", bloc.thinking[:200])
elif bloc.type == "text":
print("réponse :", bloc.text)
Le bloc thinking distinct n'existe que dans les réponses complètes. En streaming, raisonnement et réponse arrivent dans le même flux de texte : si vous devez les distinguer, n'utilisez pas le streaming pour cette requête.
budget_tokens n'a pas d'équivalent exact côté moteur : il est traduit en
niveau d'effort (moins de 2 000 → low, plus de 8 000 → high, sinon
medium) plutôt qu'ignoré en silence. Les blocs thinking que vous
renvoyez d'un tour précédent sont acceptés ; le moteur reconstruit son propre
raisonnement.
Quand l'activer#
| Type de tâche | Recommandation |
|---|---|
| Extraction, classification, reformulation, traduction | Couper : le raisonnement n'apporte rien. |
| Chat de support, rédaction courante | mina-low, qui ne raisonne pas. |
| Mathématiques, logique, planification en plusieurs étapes | Laisser actif. |
| Code complexe, refactorisation, débogage | Laisser actif, effort: "high" si le résultat déçoit. |
| Agents avec outils | Laisser actif : le choix de l'outil s'améliore nettement. |
Le réglage le plus rentable : mina-flash par défaut, et bascule vers
mina-full avec raisonnement uniquement quand la première réponse est jugée
insuffisante. Vous ne payez la réflexion que là où elle change le résultat.