Aller au contenu principal

Reflexion etendue (Extended Thinking)

La reflexion etendue est une fonctionnalite avancee de Claude qui lui accorde du temps pour raisonner sur des problemes complexes avant de produire sa reponse finale. C’est en quelque sorte un “brouillon” : on peut observer le processus de raisonnement qui mene a la reponse, ce qui apporte de la transparence et ameliore souvent la qualite des resultats.

Note importante : La reflexion etendue n’est pas compatible avec certaines autres fonctionnalites, notamment le pre-remplissage des messages et le parametre de temperature. Consultez la documentation officielle pour la liste complete des restrictions.

Comment ca fonctionne

Quand la reflexion etendue est activee, la reponse de Claude passe d’un simple bloc de texte a une reponse structuree en deux parties :

  1. Le bloc de reflexion (thinking) : le raisonnement detaille de Claude
  2. La reponse finale : la reponse proprement dite

Les avantages principaux :

  • Meilleur raisonnement sur les taches complexes
  • Precision accrue sur les problemes difficiles
  • Transparence sur le processus de pensee de Claude

Les contreparties :

  • Cout plus eleve (on paie pour les tokens de reflexion)
  • Latence accrue (la reflexion prend du temps)
  • Code plus complexe pour gerer la structure de la reponse

Quand l’utiliser

La decision est simple : utilisez vos evaluations de prompts. Commencez sans reflexion etendue, et si la precision n’atteint pas vos exigences apres avoir deja optimise votre prompt, alors activez-la. C’est un outil a deployer quand le prompting standard ne suffit pas.

Structure de la reponse et securite

Les reponses avec reflexion etendue incluent un systeme de signature cryptographique. Cette signature garantit que le texte de reflexion n’a pas ete modifie. Cela empeche les developpeurs de manipuler le raisonnement de Claude, ce qui pourrait potentiellement orienter le modele dans des directions non securisees.

Reflexion masquee (Redacted Thinking)

Il arrive parfois de recevoir un bloc de reflexion masque au lieu d’un texte lisible. Cela se produit quand le processus de reflexion de Claude declenche les systemes de securite internes. Le contenu masque contient la reflexion reelle sous forme chiffree, ce qui permet de retransmettre le message complet a Claude dans des conversations futures sans perdre le contexte.

Implementation

Pour activer la reflexion etendue, il faut ajouter deux parametres a la fonction d’appel :

def chat(
    messages,
    system=None,
    temperature=1.0,
    stop_sequences=[],
    tools=None,
    thinking=False,        # Active/desactive la reflexion
    thinking_budget=1024   # Budget max de tokens pour la reflexion
):

Le budget de reflexion definit le nombre maximum de tokens que Claude peut utiliser pour raisonner. La valeur minimale est 1024 tokens, et le parametre max_tokens doit etre superieur au budget de reflexion.

On ajoute la configuration dans les parametres de l’API :

if thinking:
    params["thinking"] = {
        "type": "enabled",
        "budget": thinking_budget
    }

Puis on appelle avec la reflexion activee :

chat(messages, thinking=True)

Tester les reponses masquees

Pour les tests, on peut forcer Claude a renvoyer un bloc de reflexion masque en envoyant une chaine de caracteres specifique. Cela permet de s’assurer que l’application gere correctement les reponses masquees sans planter.

Resume

La reflexion etendue est un outil puissant pour les taches de raisonnement complexe, mais a utiliser avec discernement vu les implications en cout et en latence. L’approche recommandee :

  1. Commencer avec le prompting standard
  2. Optimiser le prompt a fond
  3. Ajouter la reflexion etendue seulement si necessaire
Exercice pratique
  1. Implementez la fonction chat avec le support de la reflexion etendue
  2. Testez avec un probleme mathematique complexe (avec et sans reflexion)
  3. Comparez la qualite des reponses et la latence
  4. Implementez la gestion des blocs de reflexion masques dans votre code
  5. Experimentez avec differentes valeurs de thinking_budget (1024, 4096, 8192)