Aprenda a implementar o uso de ferramentas com Claude, incluindo definições de ferramentas, controle de saída e tratamento de erros.
tools
da solicitação da API. Cada definição de ferramenta inclui:
Parâmetro | Descrição |
---|---|
name | O nome da ferramenta. Deve corresponder à regex ^[a-zA-Z0-9_-]{1,64}$ . |
description | Uma descrição detalhada em texto simples do que a ferramenta faz, quando deve ser usada e como se comporta. |
input_schema | Um objeto JSON Schema definindo os parâmetros esperados para a ferramenta. |
Exemplo de definição de ferramenta simples
get_weather
, espera um objeto de entrada com uma string location
obrigatória e uma string unit
opcional que deve ser “celsius” ou “fahrenheit”.tools
, construímos um prompt de sistema especial a partir das definições de ferramentas, configuração de ferramentas e qualquer prompt de sistema especificado pelo usuário. O prompt construído é projetado para instruir o modelo a usar a(s) ferramenta(s) especificada(s) e fornecer o contexto necessário para que a ferramenta opere adequadamente:
Exemplo de uma boa descrição de ferramenta
Exemplo de descrição de ferramenta ruim
ticker
significa. A descrição ruim é muito breve e deixa Claude com muitas questões abertas sobre o comportamento e uso da ferramenta.
tool_choice
assim:
auto
permite que Claude decida se deve chamar qualquer ferramenta fornecida ou não. Este é o valor padrão quando tools
são fornecidas.any
diz ao Claude que ele deve usar uma das ferramentas fornecidas, mas não força uma ferramenta específica.tool
nos permite forçar Claude a sempre usar uma ferramenta específica.none
impede Claude de usar qualquer ferramenta. Este é o valor padrão quando nenhuma tools
são fornecidas.tool_choice
invalidarão blocos de mensagem em cache. Definições de ferramentas e prompts de sistema permanecem em cache, mas o conteúdo da mensagem deve ser reprocessado.tool_choice
como any
ou tool
, nós preencheremos previamente a mensagem do assistente para forçar o uso de uma ferramenta. Isso significa que os modelos não emitirão um bloco de conteúdo text
de cadeia de pensamento antes dos blocos de conteúdo tool_use
, mesmo se explicitamente solicitado a fazê-lo.
tool_choice: {"type": "any"}
e tool_choice: {"type": "tool", "name": "..."}
não são suportados e resultarão em erro. Apenas tool_choice: {"type": "auto"}
(o padrão) e tool_choice: {"type": "none"}
são compatíveis com pensamento estendido.{"type": "auto"}
para tool_choice
(o padrão) e adicionar instruções explícitas em uma mensagem user
. Por exemplo: Como está o clima em Londres? Use a ferramenta get_weather em sua resposta.
record_summary
com um esquema específico. Veja Uso de ferramentas com Claude para um exemplo completo funcionando.
tool_choice
estiver definido como auto
(este é o valor padrão, veja Forçando o uso de ferramentas), e Sonnet e Haiku podem ser induzidos a fazê-lo.
Por exemplo, dado o prompt “Como está o clima em São Francisco agora, e que horas são lá?”, Claude pode responder com:
disable_parallel_tool_use=true
quando o tipo tool_choice é auto
, o que garante que Claude use no máximo uma ferramentadisable_parallel_tool_use=true
quando o tipo tool_choice é any
ou tool
, o que garante que Claude use exatamente uma ferramentaExemplo completo de uso paralelo de ferramentas
Script de teste completo para ferramentas paralelas
Prompts de sistema para uso paralelo de ferramentas
Prompting de mensagem do usuário
disable_parallel_tool_use
. Para contornar isso, recomendamos habilitar uso eficiente de ferramentas em tokens, que ajuda a incentivar Claude a usar ferramentas paralelas. Este recurso beta também reduz latência e economiza uma média de 14% em tokens de saída.Se você preferir não optar pelo beta de uso eficiente de ferramentas em tokens, você também pode introduzir uma “ferramenta em lote” que pode atuar como uma meta-ferramenta para envolver invocações para outras ferramentas simultaneamente. Descobrimos que se esta ferramenta estiver presente, o modelo a usará para chamar simultaneamente múltiplas ferramentas em paralelo para você.Veja este exemplo em nosso cookbook para como usar esta solução alternativa.stop_reason
de tool_use
e um ou mais blocos de conteúdo tool_use
que incluem:
id
: Um identificador único para este bloco específico de uso de ferramenta. Isso será usado para corresponder aos resultados da ferramenta mais tarde.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.Exemplo de resposta da API com um bloco de conteúdo `tool_use`
name
, id
e input
do bloco tool_use
.input
da ferramenta.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
: O resultado da ferramenta, como uma string (ex. "content": "15 graus"
), uma lista de blocos de conteúdo aninhados (ex. "content": [{"type": "text", "text": "15 graus"}]
), ou uma lista de blocos de documento (ex. "content": ["type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 graus"}]
). Estes 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 erro.Exemplo de resultado de ferramenta bem-sucedido
Exemplo de resultado de ferramenta com imagens
Exemplo de resultado de ferramenta vazio
Exemplo de resultado de ferramenta com documentos
tool
ou function
, a API da Anthropic integra ferramentas diretamente na estrutura de mensagens user
e assistant
.Mensagens contêm arrays de blocos text
, image
, tool_use
e tool_result
. Mensagens user
incluem conteúdo do cliente e tool_result
, enquanto mensagens assistant
contêm conteúdo gerado por IA e tool_use
.max_tokens
max_tokens
, e a resposta truncada contém um bloco de uso de ferramenta incompleto, você precisará tentar novamente a solicitação com um valor max_tokens
mais alto para obter o uso completo da ferramenta.
pause_turn
pause_turn
, indicando que a API pausou um turno de longa duração.
Aqui está como tratar o motivo de parada pause_turn
:
pause_turn
:
Erro de execução de ferramenta
content
junto com "is_error": true
:Nome de ferramenta inválido
description
mais detalhados em suas definições de ferramenta.No entanto, você também pode continuar a conversa com um tool_result
que indica o erro, e Claude tentará usar a ferramenta novamente com as informações ausentes preenchidas:Tags <search_quality_reflection>
Erros de ferramentas do servidor
is_error
para ferramentas do servidor.Para busca na web especificamente, códigos de erro possíveis incluem:too_many_requests
: Limite de taxa excedidoinvalid_input
: Parâmetro de consulta de busca inválidomax_uses_exceeded
: Máximo de usos da ferramenta de busca na web excedidoquery_too_long
: Consulta excede o comprimento máximounavailable
: Ocorreu um erro internoChamadas de ferramentas paralelas não funcionando