Pensamento em fluxos de trabalho com ferramentas e múltiplos turnos
Percorra um ciclo completo de uso de ferramentas em dois turnos que preserva corretamente os blocos de pensamento e veja como o pensamento intercalado altera o fluxo.
Esta página percorre um ciclo completo de "tool use" (uso de ferramentas) em dois turnos com o pensamento ativado: Claude pensa, solicita uma chamada de ferramenta, recebe o resultado e conclui sua resposta, com os blocos de pensamento tratados corretamente em cada etapa. As regras completas estão na página Pensamento, em Pensamento com uso de ferramentas e Preservando blocos de pensamento; esta página mostra essas regras aplicadas em código executável.
As regras que este passo a passo aplica
Cada link leva à declaração completa na página Pensamento:
- Limite a escolha de ferramenta a
autoounoneno modo manual: opções detool_choiceque forçam o uso de ferramentas retornam um erro com o "extended thinking" (pensamento estendido) manual (thinking: {type: "enabled"}); o pensamento adaptativo suporta o uso forçado de ferramentas. - Mantenha uma única configuração de pensamento por turno do assistente: um loop de uso de ferramentas é um único turno do assistente, portanto altere a configuração apenas entre turnos.
- Devolva os blocos de pensamento completos e sem modificações: quando você retorna um resultado de ferramenta, os blocos de pensamento da mensagem do assistente devem voltar junto com ele.
- Ecoe a mensagem do assistente exatamente como recebida: reconstruir a mensagem ou filtrar os blocos
redacted_thinkingdispara um erro 400.
Os exemplos usam pensamento adaptativo; em modelos que suportam apenas pensamento estendido, substitua por thinking: {type: "enabled", budget_tokens: N}. As regras do ciclo são idênticas.
Percorra um ciclo de uso de ferramentas em dois turnos
O exemplo define uma ferramenta get_weather, permite que Claude pense e solicite uma chamada de ferramenta e, em seguida, retorna o resultado da ferramenta junto com o turno do assistente ecoado exatamente como recebido, incluindo o bloco de pensamento.
Faça a primeira requisição com uma ferramenta disponível
Envie uma requisição com o pensamento adaptativo ativado e a ferramenta definida. Além do parâmetro
thinking, esta é uma requisição padrão de uso de ferramentas: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"], }, } # Primeira requisição - Claude responde com pensamento e solicitação de ferramenta 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)Capture o array de conteúdo para ecoar de volta
Você deverá ver blocos
thinking,textetool_useno conteúdo da resposta em uma execução na qual Claude optou por pensar (em requisições mais simples, o modo adaptativo pode pular o bloco de pensamento). Mantenha este array de conteúdo intacto: a próxima etapa o envia de volta literalmente.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" } } ] }Retorne o resultado da ferramenta, ecoando o turno do assistente literalmente
Execute a ferramenta do seu lado e, em seguida, envie uma segunda requisição que acrescenta duas mensagens à conversa. A primeira é o conteúdo do assistente ecoado de volta exatamente como recebido, de modo que o bloco de pensamento permaneça inalterado ao lado do bloco
tool_use. A segunda é uma mensagem do usuário contendo otool_result.Cada exemplo é um script autocontido: ele repete a primeira requisição e, em seguida, envia imediatamente a continuação usando a resposta que acabou de receber.
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?"}], ) # Extrai o bloco tool_use para obter seu ID para o tool_result tool_use_block = next(block for block in response.content if block.type == "tool_use") # Chame sua API de clima real; aqui é onde sua chamada de API real ficaria # Vamos fingir que isto é o que recebemos de volta weather_data = {"temperature": 88} # Segunda requisição - Inclua o turno do assistente e o 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?"}, # Repita o conteúdo do assistente exatamente como recebido. Quando um bloco # de pensamento estiver presente, ele deve acompanhar o bloco 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)Leia a resposta final
Você deverá ver Claude concluir o turno com texto. Como o "interleaved thinking" (pensamento intercalado) é automático no modo adaptativo, a continuação também pode começar com um novo bloco de pensamento antes do texto final:
Output{ "content": [ { "type": "text", "text": "Currently in Paris, the temperature is 88°F (31°C)" } ] }
Como o pensamento intercalado altera o fluxo
O pensamento intercalado permite que Claude pense entre chamadas de ferramentas, raciocinando sobre cada resultado de ferramenta antes de agir com base nele. O conceito e a disponibilidade por modelo são abordados em Pensamento intercalado na página Pensamento; a intercalação altera onde os blocos de pensamento aparecem, não se as chamadas de ferramentas podem ser encadeadas. A comparação a seguir mostra o que o pensamento intercalado altera em um fluxo de trabalho com duas ferramentas:
Sem o pensamento intercalado, Claude pensa uma vez no início do turno do assistente. As respostas subsequentes após os resultados das ferramentas continuam sem novos blocos de pensamento.
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 blockCom o pensamento intercalado ativado, Claude pode pensar após receber cada resultado de ferramenta, permitindo que raciocine sobre resultados intermediários antes de continuar.
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 answerPróximos passos
A visão geral: ative o pensamento, leia a saída do pensamento e revise as regras completas para uso de ferramentas, cache e streaming.
Direcione com que frequência e com que profundidade Claude pensa usando níveis de esforço e orientação baseada em prompt.
Orçamentos manuais de pensamento em modelos mais antigos: mecânica do budget_tokens e migração para o adaptativo.
Was this page helpful?