Loading...
  • Construir
  • Admin
  • Modelos e preços
  • SDKs do cliente
  • Referência da API
Search...
⌘K
Log in
Gerenciar chamadas de ferramentas
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Construir/Ferramentas

Lidar com chamadas de ferramentas

Analise blocos tool_use, formate respostas tool_result e trate erros com is_error.

Was this page helpful?

  • Tratamento de resultados de ferramentas de cliente
  • Tratamento de resultados de ferramentas de servidor
  • Tratamento de erros com is_error
  • Próximas etapas

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.

Tratamento de resultados de ferramentas de cliente

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:

  1. Extrair o name, id e input do bloco tool_use.
  2. Executar a ferramenta real em sua base de código correspondente ao nome da ferramenta, passando a input da ferramenta.
  3. Continuar a conversa enviando uma nova mensagem com o 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:

  • Os blocos de resultado da ferramenta devem vir imediatamente após seus blocos de uso de ferramenta correspondentes no histórico de mensagens. Você não pode incluir nenhuma mensagem entre a mensagem de uso de ferramenta do assistente e a mensagem de resultado de ferramenta do usuário.
  • Na mensagem do usuário contendo resultados de ferramentas, os blocos tool_result devem vir PRIMEIRO na matriz de conteúdo. Qualquer texto deve vir DEPOIS de todos os resultados de ferramentas.

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.

Tratamento de 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.

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.

Tratamento de erros com is_error

Existem alguns tipos diferentes de erros que podem ocorrer ao usar ferramentas com Claude:

Próximas etapas

  • Para executar múltiplas ferramentas em um turno, consulte Parallel tool use.
  • Para a abstração do SDK que automatiza este loop, consulte Tool Runner.
  • Para o fluxo de trabalho completo de uso de ferramentas, consulte Define tools.
"content": "15 degrees"
"content": [{"type": "text", "text": "15 degrees"}]
"content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]
text
image
document
  • is_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.