Il pensiero nei flussi di lavoro con strumenti e multi-turno
Segui passo dopo passo un ciclo completo di uso degli strumenti in due turni che preserva correttamente i blocchi di pensiero, e osserva come il pensiero interleaved modifica il flusso.
Questa pagina illustra passo dopo passo un ciclo completo di "tool use" (uso degli strumenti) in due turni con il pensiero abilitato: Claude pensa, richiede una chiamata a uno strumento, riceve il risultato e completa la sua risposta, con i blocchi di pensiero gestiti correttamente in ogni fase. Le regole complete si trovano nella pagina Pensiero, in Pensiero con uso degli strumenti e Preservare i blocchi di pensiero; questa pagina mostra tali regole applicate in codice eseguibile.
Le regole applicate in questa guida
Ogni link porta all'enunciazione completa nella pagina Pensiero:
- Limita la scelta dello strumento a
autoononein modalità manuale: le opzioni ditool_choiceche forzano l'uso degli strumenti restituiscono un errore con il "extended thinking" (pensiero esteso) manuale (thinking: {type: "enabled"}); il pensiero adattivo supporta l'uso forzato degli strumenti. - Mantieni una sola configurazione di pensiero per turno dell'assistente: un ciclo di uso degli strumenti è un singolo turno dell'assistente, quindi modifica la configurazione solo tra un turno e l'altro.
- Restituisci i blocchi di pensiero completi e non modificati: quando restituisci un risultato di uno strumento, i blocchi di pensiero del messaggio dell'assistente devono tornare insieme ad esso.
- Ripeti il messaggio dell'assistente esattamente come ricevuto: ricostruire il messaggio o filtrare i blocchi
redacted_thinkingprovoca un errore 400.
Gli esempi usano il pensiero adattivo; sui modelli che supportano solo il pensiero esteso, sostituisci con thinking: {type: "enabled", budget_tokens: N}. Le regole del ciclo sono identiche.
Segui un ciclo di uso degli strumenti in due turni
L'esempio definisce uno strumento get_weather, lascia che Claude pensi e richieda una chiamata allo strumento, quindi restituisce il risultato dello strumento insieme al turno dell'assistente ripetuto esattamente come ricevuto, blocco di pensiero incluso.
Effettua la prima richiesta con uno strumento disponibile
Invia una richiesta con il pensiero adattivo abilitato e lo strumento definito. A parte il parametro
thinking, si tratta di una richiesta standard di uso degli strumenti: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"], }, } # Prima richiesta - Claude risponde con il pensiero e una richiesta di strumento 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)Cattura l'array content da restituire
Dovresti vedere blocchi
thinking,textetool_usenel contenuto della risposta in un'esecuzione in cui Claude ha scelto di pensare (per richieste più semplici, la modalità adattiva potrebbe saltare il blocco di pensiero). Mantieni intatto questo array content: il passaggio successivo lo rimanda indietro alla lettera.Output{ "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" } } ] }Restituisci il risultato dello strumento, ripetendo il turno dell'assistente alla lettera
Esegui lo strumento dal tuo lato, quindi invia una seconda richiesta che aggiunge due messaggi alla conversazione. Il primo è il contenuto dell'assistente restituito esattamente come ricevuto, in modo che il blocco di pensiero rimanga invariato accanto al blocco
tool_use. Il secondo è un messaggio utente che contiene iltool_result.Ogni esempio è uno script autonomo: ripete la prima richiesta, quindi invia immediatamente il seguito usando la risposta appena ricevuta.
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?"}], ) # Estrai il blocco tool_use per ottenere il suo ID per il tool_result tool_use_block = next(block for block in response.content if block.type == "tool_use") # Chiama la tua vera API meteo, qui andrebbe la tua chiamata API effettiva # Facciamo finta che questo sia ciò che riceviamo weather_data = {"temperature": 88} # Seconda richiesta - Includi il turno dell'assistente e il 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?"}, # Ripeti il contenuto dell'assistente esattamente come ricevuto. Quando un blocco # thinking è presente, deve accompagnare il blocco 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)Leggi la risposta finale
Dovresti vedere Claude completare il turno con del testo. Poiché il pensiero interleaved è automatico in modalità adattiva, la continuazione può anche aprirsi con un nuovo blocco di pensiero prima del testo finale:
Output{ "content": [ { "type": "text", "text": "Currently in Paris, the temperature is 88°F (31°C)" } ] }
Come il pensiero interleaved modifica il flusso
Il "interleaved thinking" (pensiero interleaved) consente a Claude di pensare tra una chiamata a uno strumento e l'altra, ragionando su ciascun risultato prima di agire di conseguenza. Il concetto e la disponibilità per modello sono trattati in Pensiero interleaved nella pagina Pensiero; l'interleaving modifica dove compaiono i blocchi di pensiero, non se le chiamate agli strumenti possano concatenarsi. Il confronto seguente mostra cosa cambia con il pensiero interleaved in un flusso di lavoro con due strumenti:
Senza pensiero interleaved, Claude pensa una sola volta all'inizio del turno dell'assistente. Le risposte successive dopo i risultati degli strumenti proseguono senza nuovi blocchi di pensiero.
User: "What's the total revenue if we sold 150 units at $50 each,
and how does this compare to our average monthly revenue?"
Response 1: [thinking] "I need to calculate 150 * $50, then check the database..."
[tool_use: calculator] { "expression": "150 * 50" }
↓ tool result: "7500"
Response 2: [tool_use: database_query] { "query": "SELECT AVG(revenue)..." }
↑ no thinking block
↓ tool result: "5200"
Response 3: [text] "The total revenue is $7,500, which is 44% above your
average monthly revenue of $5,200."
↑ no thinking blockCon il pensiero interleaved abilitato, Claude può pensare dopo aver ricevuto ciascun risultato di uno strumento, il che gli consente di ragionare sui risultati intermedi prima di proseguire.
User: "What's the total revenue if we sold 150 units at $50 each,
and how does this compare to our average monthly revenue?"
Response 1: [thinking] "I need to calculate 150 * $50 first..."
[tool_use: calculator] { "expression": "150 * 50" }
↓ tool result: "7500"
Response 2: [thinking] "Got $7,500. Now I should query the database to compare..."
[tool_use: database_query] { "query": "SELECT AVG(revenue)..." }
↑ thinking after receiving calculator result
↓ tool result: "5200"
Response 3: [thinking] "$7,500 vs $5,200 average - that's a 44% increase..."
[text] "The total revenue is $7,500, which is 44% above your
average monthly revenue of $5,200."
↑ thinking before final answerProssimi passi
La panoramica: attiva il pensiero, leggi l'output del pensiero e consulta le regole complete per uso degli strumenti, cache e streaming.
Orienta quanto spesso e quanto a fondo Claude pensa con i livelli di effort e le indicazioni basate sui prompt.
Budget di pensiero manuali sui modelli meno recenti: funzionamento di budget_tokens e migrazione al pensiero adattivo.
Was this page helpful?