Use o modelo Claude Opus mais recente (4.7) para ferramentas complexas e consultas ambíguas; ele lida melhor com múltiplas ferramentas e busca esclarecimentos quando necessário.
Use modelos Claude Haiku para ferramentas diretas, mas observe que eles podem inferir parâmetros ausentes.
Se estiver usando Claude com uso de ferramentas e pensamento estendido, consulte o guia de pensamento estendido para mais informações.
Ferramentas do cliente (tanto esquema Anthropic quanto definidas pelo usuário) são especificadas no parâmetro tools de nível superior 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. |
input_examples | (Opcional) Uma matriz de objetos de entrada de exemplo para ajudar Claude a entender como usar a ferramenta. Veja Fornecendo exemplos de uso de ferramentas. |
Para o conjunto completo de propriedades opcionais disponíveis em qualquer definição de ferramenta, incluindo cache_control, strict, defer_loading e allowed_callers, consulte a referência de ferramentas.
Quando você chama a API Claude com o parâmetro tools, a API constrói um prompt do sistema especial a partir das definições de ferramentas, configuração de ferramentas e qualquer prompt do 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 funcione adequadamente:
In this environment you have access to a set of tools you can use to answer the user's question.
{{ FORMATTING INSTRUCTIONS }}
String and scalar parameters should be specified as is, while lists and objects should use JSON format. Note that spaces for string values are not stripped. The output is not expected to be valid XML and is parsed with regular expressions.
Here are the functions available in JSONSchema format:
{{ TOOL DEFINITIONS IN JSON SCHEMA }}
{{ USER SYSTEM PROMPT }}
{{ TOOL CONFIGURATION }}Para obter o melhor desempenho do Claude ao usar ferramentas, siga estas diretrizes:
input_examples para ferramentas complexas. Descrições claras são mais importantes, mas para ferramentas com entradas complexas, objetos aninhados ou parâmetros sensíveis ao formato, você pode usar o campo input_examples para fornecer exemplos validados por esquema. Veja Fornecendo exemplos de uso de ferramentas para detalhes.create_pr, review_pr, merge_pr), agrupe-as em uma única ferramenta com um parâmetro action. Menos ferramentas, mais capazes, reduzem a ambiguidade de seleção e tornam sua superfície de ferramentas mais fácil para Claude navegar.github_list_prs, slack_send_message). Isso torna a seleção de ferramentas inequívoca conforme sua biblioteca cresce, e é especialmente importante ao usar busca de ferramentas.A boa descrição explica claramente o que a ferramenta faz, quando usá-la, que dados ela retorna e o que o parâmetro ticker significa. A descrição ruim é muito breve e deixa Claude com muitas questões abertas sobre o comportamento e uso da ferramenta.
Para orientação mais profunda sobre design de ferramentas (consolidação, nomenclatura e formatação de resposta), veja Escrevendo ferramentas para agentes.
Você pode fornecer exemplos concretos de entradas de ferramentas válidas para ajudar Claude a entender como usar suas ferramentas de forma mais eficaz. Isso é particularmente útil para ferramentas complexas com objetos aninhados, parâmetros opcionais ou entradas sensíveis ao formato.
Adicione um campo input_examples opcional à sua definição de ferramenta com uma matriz de objetos de entrada de exemplo. Cada exemplo deve ser válido de acordo com o input_schema da ferramenta:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
tools=[
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The unit of temperature",
},
},
"required": ["location"],
},
"input_examples": [
{"location": "San Francisco, CA", "unit": "fahrenheit"},
{"location": "Tokyo, Japan", "unit": "celsius"},
{
"location": "New York, NY" # 'unit' is optional
},
],
}
],
messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
)
print(response)Os exemplos são incluídos no prompt junto com seu esquema de ferramenta, mostrando ao Claude padrões concretos para chamadas de ferramentas bem formadas. Isso ajuda Claude a entender quando incluir parâmetros opcionais, que formatos usar e como estruturar entradas complexas.
input_schema da ferramenta. Exemplos inválidos retornam um erro 400Em alguns casos, você pode querer que Claude use uma ferramenta específica para responder à pergunta do usuário, mesmo que Claude responderia diretamente sem chamar uma ferramenta. Você pode fazer isso especificando a ferramenta no campo tool_choice assim:
tool_choice = {"type": "tool", "name": "get_weather"}Ao trabalhar com o parâmetro tool_choice, existem quatro opções possíveis:
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 particular.tool força Claude a sempre usar uma ferramenta particular.none impede Claude de usar qualquer ferramenta. Este é o valor padrão quando nenhuma tools é fornecida.Ao usar cache de prompt, mudanças no parâmetro tool_choice invalidarão blocos de mensagens em cache. Definições de ferramentas e prompts do sistema permanecem em cache, mas o conteúdo da mensagem deve ser reprocessado.
Este diagrama ilustra como cada opção funciona:

Observe que quando você tem tool_choice como any ou tool, a API preenche previamente a mensagem do assistente para forçar o uso de uma ferramenta. Isso significa que os modelos não emitirão uma resposta em linguagem natural ou explicação antes de blocos de conteúdo tool_use, mesmo se explicitamente solicitado.
Ao usar pensamento estendido com uso de ferramentas, tool_choice: {"type": "any"} e tool_choice: {"type": "tool", "name": "..."} não são suportados e resultarão em um erro. Apenas tool_choice: {"type": "auto"} (o padrão) e tool_choice: {"type": "none"} são compatíveis com pensamento estendido.
Claude Mythos Preview não suporta uso forçado de ferramentas. Solicitações com tool_choice: {"type": "any"} ou tool_choice: {"type": "tool", "name": "..."} retornam um erro 400 neste modelo. Use tool_choice: {"type": "auto"} (o padrão) ou tool_choice: {"type": "none"} e confie em prompting para influenciar a seleção de ferramentas.
Testes mostraram que isso não deve reduzir o desempenho. Se você gostaria que o modelo fornecesse contexto em linguagem natural ou explicações enquanto ainda solicitasse que o modelo use uma ferramenta específica, você pode usar {"type": "auto"} para tool_choice (o padrão) e adicionar instruções explícitas em uma mensagem user. Por exemplo: What's the weather like in London? Use the get_weather tool in your response.
Chamadas de ferramentas garantidas com ferramentas estritas
Combine tool_choice: {"type": "any"} com uso de ferramentas estritas para garantir que uma de suas ferramentas será chamada E que as entradas da ferramenta seguem estritamente seu esquema. Defina strict: true em suas definições de ferramenta para ativar a validação de esquema.
Ao usar ferramentas, Claude frequentemente comentará sobre o que está fazendo ou responderá naturalmente ao usuário antes de invocar ferramentas.
Por exemplo, dada a solicitação "What's the weather like in San Francisco right now, and what time is it there?", Claude pode responder com:
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "I'll help you check the current weather and time in San Francisco."
},
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "get_weather",
"input": { "location": "San Francisco, CA" }
}
]
}Este estilo de resposta natural ajuda os usuários a entender o que Claude está fazendo e cria uma interação mais conversacional. Você pode guiar o estilo e conteúdo dessas respostas através de seus prompts do sistema e fornecendo <examples> em seus prompts.
É importante notar que Claude pode usar várias frases e abordagens ao explicar suas ações. Seu código deve tratar essas respostas como qualquer outro texto gerado pelo assistente, e não confiar em convenções de formatação específicas.
Analise blocos tool_use e formate respostas tool_result.
Deixe o SDK lidar com o loop agentic automaticamente.
Diretório de ferramentas fornecidas pela Anthropic e propriedades opcionais.
Was this page helpful?