Aller au contenu principal

Le Paramètre reasoning_effort

Contrôler la profondeur de réflexion

Le raisonnement ajustable repose sur un principe simple : vous décidez combien le modèle doit réfléchir avant de répondre. Le paramètre reasoning_effort est votre levier de contrôle principal.

Ce paramètre est disponible sur mistral-small-latest et vous permet de basculer entre un mode rapide (sans réflexion visible) et un mode approfondi (avec traces de raisonnement complètes).

Les deux modes de reasoning_effort

Mode “high” : réflexion maximale

Quand vous définissez reasoning_effort = "high", le modèle :

  • Génère un chunk de réflexion complet avant de formuler sa réponse
  • Explore le problème en profondeur, envisage plusieurs angles
  • Consomme davantage de tokens (et donc de temps et de coût)
  • Produit des réponses significativement meilleures sur les tâches complexes

Mode “none” : réponse directe

Quand vous définissez reasoning_effort = "none", le modèle :

  • Applique une réflexion minimale, voire aucune
  • Exclut le chunk de réflexion de la réponse
  • Répond rapidement avec une consommation de tokens réduite
  • Convient parfaitement aux tâches simples et directes

Implémentation en Python

Voici comment utiliser le paramètre reasoning_effort avec le SDK Mistral :

from mistralai import Mistral

client = Mistral(api_key="VOTRE_CLE_API")

# Mode HIGH : raisonnement approfondi
response_high = client.chat.complete(
    model="mistral-small-latest",
    messages=[
        {"role": "user", "content": "Résous ce problème : x^3 - 6x^2 + 11x - 6 = 0"}
    ],
    reasoning_effort="high"
)

# Mode NONE : réponse directe sans réflexion
response_none = client.chat.complete(
    model="mistral-small-latest",
    messages=[
        {"role": "user", "content": "Quelle est la capitale de la France ?"}
    ],
    reasoning_effort="none"
)

Différence de sortie

Avec reasoning_effort="high", la réponse contient deux éléments :

for chunk in response_high.choices[0].message.content:
    if chunk.type == "thinking":
        print("RÉFLEXION:", chunk.text[:200], "...")
    elif chunk.type == "text":
        print("RÉPONSE:", chunk.text)

Avec reasoning_effort="none", la réponse ne contient que l’élément texte, sans trace de réflexion.

Guide de choix du mode

Le choix entre “high” et “none” dépend de la nature de votre tâche :

Utilisez “high” pour :

  • Les problèmes mathématiques multi-étapes
  • Le debugging de code complexe
  • L’analyse comparative de solutions
  • La planification stratégique
  • Les questions de logique et les énigmes
  • L’évaluation de risques ou de compromis

Utilisez “none” pour :

  • Les questions factuelles simples
  • La traduction et la reformulation
  • La génération de texte créatif
  • Le remplissage de formulaires
  • Les réponses conversationnelles basiques
  • L’extraction d’informations directes

Gestion des coûts

Le mode “high” consomme significativement plus de tokens que le mode “none”. Voici une stratégie de gestion :

def smart_query(client, question, complexity="auto"):
    """Choisit automatiquement le niveau de raisonnement."""

    # Mots-clés indicateurs de complexité
    complex_keywords = [
        "calcule", "démontre", "compare", "analyse",
        "optimise", "debug", "pourquoi", "explique le raisonnement"
    ]

    if complexity == "auto":
        is_complex = any(kw in question.lower() for kw in complex_keywords)
        effort = "high" if is_complex else "none"
    else:
        effort = complexity

    return client.chat.complete(
        model="mistral-small-latest",
        messages=[{"role": "user", "content": question}],
        reasoning_effort=effort
    )

Cette approche vous permet d’optimiser le ratio qualité/coût en activant le raisonnement uniquement quand il apporte une réelle valeur ajoutée.

Limitations à connaître

Quelques points importants sur le raisonnement ajustable :

  • Le paramètre reasoning_effort n’accepte que deux valeurs : "high" ou "none". Il n’y a pas de niveau intermédiaire
  • Le mode “high” n’est pas une garantie de réponse parfaite : il augmente la probabilité d’un raisonnement correct, mais ne l’assure pas
  • Le surcoût en tokens peut être significatif (2x à 10x selon la complexité du problème)
  • Seul mistral-small-latest supporte ce paramètre. Les modèles Magistral utilisent une approche différente (leçon 5)

Points clés à retenir

  • reasoning_effort="high" active le raisonnement approfondi avec traces de réflexion
  • reasoning_effort="none" désactive les traces pour une réponse rapide et économique
  • Le paramètre est exclusif à mistral-small-latest
  • Adaptez le mode à la complexité de la tâche pour optimiser le rapport qualité/coût
  • Il n’existe que deux niveaux : pas de granularité intermédiaire