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èleRaisonne par défaut ?
mina-flashNon : réponse directe, optimisée pour la latence.
mina-lowNon : réponse directe.
mina-fullOui : 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"}},
)

Les résultats varient selon la requête et les réglages.

Avec le SDK OpenAI

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 }
}
Le raisonnement est facturé comme de la sortie

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)
En streaming, le raisonnement n'est pas séparé

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âcheRecommandation
Extraction, classification, reformulation, traductionCouper : le raisonnement n'apporte rien.
Chat de support, rédaction courantemina-low, qui ne raisonne pas.
Mathématiques, logique, planification en plusieurs étapesLaisser actif.
Code complexe, refactorisation, débogageLaisser actif, effort: "high" si le résultat déçoit.
Agents avec outilsLaisser actif : le choix de l'outil s'améliore nettement.
Routage à deux niveaux

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.

Paramètres

Réponse API