Pour savoir comment la « zero data retention » (rétention zéro des données), ou ZDR, s'applique à cette fonctionnalité, consultez API et rétention des données.
Cette page parcourt un aller-retour complet d'utilisation d'outils en deux tours avec la réflexion activée : Claude réfléchit, demande un appel d'outil, reçoit le résultat et termine sa réponse, avec les blocs de réflexion gérés correctement à chaque étape. Les règles complètes se trouvent sur la page Réflexion, dans Réflexion avec utilisation d'outils et Préservation des blocs de réflexion ; cette page montre ces règles appliquées dans du code exécutable.
Chaque lien mène à l'énoncé complet sur la page Réflexion :
auto ou none en mode manuel : les options tool_choice qui forcent l'utilisation d'outils renvoient une erreur avec la réflexion étendue manuelle (thinking: {type: "enabled"}) ; la réflexion adaptative prend en charge l'utilisation d'outils forcée.redacted_thinking déclenche une erreur 400.Les exemples utilisent la réflexion adaptative ; sur les modèles qui ne prennent en charge que la réflexion étendue, remplacez par thinking: {type: "enabled", budget_tokens: N}. Les règles d'aller-retour sont identiques.
L'exemple définit un outil get_weather, laisse Claude réfléchir et demander un appel d'outil, puis renvoie le résultat de l'outil avec le tour de l'assistant renvoyé exactement tel que reçu, bloc de réflexion inclus.
Effectuez la première requête avec un outil disponible
Envoyez une requête avec la réflexion adaptative activée et l'outil défini. Hormis le paramètre thinking, il s'agit d'une requête standard d'utilisation d'outils :
client = anthropic.Anthropic()
weather_tool = {
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {"location": {"type": "string", "description": "City name"}},
"required": ["location"],
},
}
# Première requête - Claude répond avec une réflexion et une demande d'outil
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive"},
tools=[weather_tool],
messages=[{"role": "user", "content": "What's the weather in Paris?"}],
)
print(response)Capturez le tableau de contenu à renvoyer
Vous devriez voir des blocs thinking, text et tool_use dans le contenu de la réponse lors d'une exécution où Claude a choisi de réfléchir (sur des requêtes plus simples, le mode adaptatif peut omettre le bloc de réflexion). Conservez ce tableau de contenu intact : l'étape suivante le renvoie tel quel.
Pour voir le texte de réflexion comme dans cette sortie, ajoutez display: "summarized" à la requête. Sur les modèles où l'affichage est omis par défaut, y compris claude-opus-4-8, le champ thinking revient sinon sous forme de chaîne vide avec seulement le champ signature renseigné. Dans les deux cas, renvoyez le tableau de contenu sans modification ; consultez Contrôler l'affichage de la réflexion.
{
"content": [
{
"type": "thinking",
"thinking": "The user wants to know the current weather in Paris. I have access to a function `get_weather`...",
"signature": "BDaL4VrbR2Oj0hO4XpJxT28J5T...."
},
{
"type": "text",
"text": "I can help you get the current weather information for Paris. Let me check that for you"
},
{
"type": "tool_use",
"id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
"name": "get_weather",
"input": {
"location": "Paris"
}
}
]
}Renvoyez le résultat de l'outil, en renvoyant le tour de l'assistant tel quel
Exécutez l'outil de votre côté, puis envoyez une deuxième requête qui ajoute deux messages à la conversation. Le premier est le contenu de l'assistant renvoyé exactement tel que reçu, de sorte que le bloc de réflexion reste inchangé aux côtés du bloc tool_use. Le second est un message utilisateur contenant le tool_result.
Chaque exemple est un script autonome : il répète la première requête, puis envoie immédiatement la suite en utilisant la réponse qu'il vient de recevoir.
client = anthropic.Anthropic()
weather_tool = {
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {"location": {"type": "string", "description": "City name"}},
"required": ["location"],
},
}
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive"},
tools=[weather_tool],
messages=[{"role": "user", "content": "What's the weather in Paris?"}],
)
# Extraire le bloc tool_use pour obtenir son ID pour le tool_result
tool_use_block = next(block for block in response.content if block.type == "tool_use")
# Appelez votre véritable API météo, c'est ici que votre appel API réel aurait lieu
# Supposons que c'est ce que nous recevons en retour
weather_data = {"temperature": 88}
# Deuxième requête - Inclure le tour de l'assistant et le tool_result
continuation = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive"},
tools=[weather_tool],
messages=[
{"role": "user", "content": "What's the weather in Paris?"},
# Renvoyer le contenu de l'assistant exactement tel qu'il a été reçu. Lorsqu'un bloc
# de réflexion est présent, il doit accompagner le bloc tool_use.
{"role": "assistant", "content": response.content},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": tool_use_block.id,
"content": f"Current temperature: {weather_data['temperature']}°F",
}
],
},
],
)
print(continuation)Lisez la réponse finale
Vous devriez voir Claude terminer le tour avec du texte. Comme la réflexion entrelacée est automatique en mode adaptatif, la continuation peut également s'ouvrir avec un nouveau bloc de réflexion avant le texte final :
{
"content": [
{
"type": "text",
"text": "Currently in Paris, the temperature is 88°F (31°C)"
}
]
}La réflexion entrelacée permet à Claude de réfléchir entre les appels d'outils, en raisonnant sur chaque résultat d'outil avant d'agir en conséquence. Le concept et la disponibilité par modèle sont couverts dans Réflexion entrelacée sur la page Réflexion ; l'entrelacement modifie l'endroit où les blocs de réflexion apparaissent, et non la possibilité d'enchaîner les appels d'outils. La comparaison suivante montre ce que la réflexion entrelacée change dans un workflow à deux outils :
La vue d'ensemble : activez la réflexion, lisez la sortie de réflexion et consultez les règles complètes pour l'utilisation d'outils, la mise en cache et le streaming.
Orientez la fréquence et la profondeur de la réflexion de Claude avec les niveaux d'effort et des directives basées sur les prompts.
Budgets de réflexion manuels sur les modèles plus anciens : mécanique de budget_tokens et migration vers le mode adaptatif.
Was this page helpful?