Was this page helpful?
Esta página cobre o ciclo de vida da chamada de ferramentas: ler blocos tool_use da resposta do Claude, formatar blocos tool_result em sua resposta e sinalizar erros. Para a abstração do SDK que lida com isso automaticamente, consulte Tool Runner.
Mais simples com Tool Runner: O tratamento manual de ferramentas descrito nesta página é gerenciado automaticamente por Tool Runner. Use esta página quando precisar de controle personalizado sobre a execução de ferramentas.
A resposta do Claude difere dependendo se ele usa uma ferramenta de cliente ou servidor.
A resposta terá um stop_reason de tool_use e um ou mais blocos de conteúdo tool_use que incluem:
id: Um identificador único para este bloco de uso de ferramenta específico. Isso será usado para corresponder aos resultados da ferramenta posteriormente.name: O nome da ferramenta sendo usada.input: Um objeto contendo a entrada sendo passada para a ferramenta, em conformidade com o input_schema da ferramenta.Quando você recebe uma resposta de uso de ferramenta para uma ferramenta de cliente, você deve:
name, id e input do bloco tool_use.input da ferramenta.role de user e um bloco de content contendo o tipo tool_result e as seguintes informações:
tool_use_id: O id da solicitação de uso de ferramenta para a qual esta é uma resultado.content: O resultado da ferramenta, como uma string (por exemplo, ), uma lista de blocos de conteúdo aninhados (por exemplo, ), ou uma lista de blocos de documento (por exemplo, ). Esses blocos de conteúdo podem usar os tipos , ou .Requisitos importantes de formatação:
Por exemplo, isso causará um erro 400:
{
"role": "user",
"content": [
{ "type": "text", "text": "Here are the results:" }, // ❌ Text before tool_result
{ "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ }
]
}Após receber o resultado da ferramenta, Claude usará essas informações para continuar gerando uma resposta ao prompt do usuário original.
Claude executa a ferramenta internamente e incorpora os resultados diretamente em sua resposta sem exigir interação adicional do usuário.
Diferenças de outras APIs
Ao contrário de APIs que separam o uso de ferramentas ou usam funções especiais como tool ou function, a API Claude integra ferramentas diretamente na estrutura de mensagens user e assistant.
As mensagens contêm matrizes de blocos text, image, tool_use e tool_result. As mensagens user incluem conteúdo de cliente e tool_result, enquanto as mensagens assistant contêm conteúdo gerado por IA e tool_use.
Existem alguns tipos diferentes de erros que podem ocorrer ao usar ferramentas com Claude:
"content": "15 degrees""content": [{"type": "text", "text": "15 degrees"}]"content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]textimagedocumentis_error (opcional): Defina como true se a execução da ferramenta resultou em um erro.Isto está correto:
{
"role": "user",
"content": [
{ "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ },
{ "type": "text", "text": "What should I do next?" } // ✅ Text after tool_result
]
}Se você receber um erro como "tool_use ids were found without tool_result blocks immediately after", verifique se seus resultados de ferramentas estão formatados corretamente.