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, "content": "15 degrees"), uma lista de blocos de conteúdo aninhados (por exemplo, "content": [{"type": "text", "text": "15 degrees"}]), ou uma lista de blocos de documento (por exemplo, "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]). Esses blocos de conteúdo podem usar os tipos text, image ou document.is_error (opcional): Defina como true se a execução da ferramenta resultou em um erro.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" /* ... */ }
]
}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.
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:
Was this page helpful?