Analise blocos tool_use, formate respostas tool_result e lide com erros usando is_error.
Esta página cobre o ciclo de vida da chamada de ferramenta: ler blocos tool_use da resposta de Claude, formatar blocos tool_result na sua resposta e sinalizar erros. Para a abstração do SDK que lida com isso automaticamente, consulte Tool Runner.
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. Ele 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 ferramentas para uma ferramenta de cliente, você deve:
Extrair o name, id e input do bloco tool_use.
Executar a ferramenta real no seu código correspondente a esse nome de ferramenta, passando o input da ferramenta.
Continuar a conversa enviando uma nova mensagem com o role de user e um bloco 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 este é um resultado.
content (opcional): 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, document ou search_result.
is_error (opcional): Defina como true se a execução da ferramenta resultou em um erro.
Após receber o resultado da ferramenta, Claude usará essa informação para continuar gerando uma resposta ao prompt original do usuário.
Lidando com resultados de ferramentas de servidor
Claude executa a ferramenta internamente e incorpora os resultados diretamente em sua resposta sem exigir interação adicional do usuário.
Lidando com erros usando is_error
Existem alguns tipos diferentes de erros que podem ocorrer ao usar ferramentas com Claude: