• Mensagens
  • Agentes Gerenciados
  • Administração

Search...
⌘K
Primeiros passos
Introdução ao ClaudeInício rápido
Desenvolvendo com o Claude
Visão geral dos recursosUsando a API de MensagensMotivos de parada e fallbackRecusas e fallbackCrédito de fallback
Capacidades do modelo
Pensamento estendidoPensamento adaptativoEsforçoOrçamentos de tarefas (beta)Modo rápido (prévia de pesquisa)Saídas estruturadasCitaçõesStreaming de MensagensProcessamento em loteResultados de pesquisaStreaming de recusasSuporte multilíngueEmbeddings
Ferramentas
Visão geralComo funciona o uso de ferramentasTutorial: Crie um agente com uso de ferramentasDefinir ferramentasLidar com chamadas de ferramentasUso de ferramentas em paraleloTool Runner (SDK)Uso de ferramentas estritoUso de ferramentas com cache de promptFerramentas de servidorSolução de problemasFerramenta de pesquisa na webFerramenta de busca na webFerramenta de execução de códigoFerramenta de consultoriaFerramenta de memóriaFerramenta BashFerramenta de uso de computadorFerramenta de editor de texto
Infraestrutura de ferramentas
Referência de ferramentasGerenciar contexto de ferramentasCombinações de ferramentasPesquisa de ferramentasChamada programática de ferramentasStreaming granular de ferramentas
Gerenciamento de contexto
Janelas de contextoCompactaçãoEdição de contextoCache de promptMensagens de sistema no meio da conversaCriar um modo de orquestraçãoDiagnóstico de cache (beta)Contagem de tokens
Trabalhando com arquivos
API de ArquivosSuporte a PDFImagens e visão
Skills
Visão geralInício rápidoPráticas recomendadasSkills para empresasSkills na API
MCP
Servidores MCP remotosConector MCP
Claude em plataformas de nuvem
Amazon BedrockAmazon Bedrock (legado)Claude Platform na AWSMicrosoft FoundryVertex AI

Log in
Definir 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
Mensagens/Ferramentas

Definir ferramentas

Especifique esquemas de ferramentas, escreva descrições eficazes e controle quando o Claude chama suas ferramentas.

Was this page helpful?

  • Escolhendo um modelo
  • Especificando ferramentas do cliente
  • Prompt do sistema para uso de ferramentas
  • Melhores práticas para definições de ferramentas
  • Fornecendo exemplos de uso de ferramentas
  • Uso básico
  • Requisitos e limitações
  • Controlando a saída do Claude
  • Forçando o uso de ferramentas
  • Respostas do modelo com ferramentas
  • Próximos passos

Escolhendo um modelo

Use o modelo Claude Opus (4.7) mais recente 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 simples, mas observe que eles podem inferir parâmetros ausentes.



Se estiver usando o Claude com uso de ferramentas e pensamento estendido, consulte o guia de pensamento estendido para mais informações.

Especificando ferramentas do cliente

Ferramentas do cliente (tanto as com esquema da Anthropic quanto as definidas pelo usuário) são especificadas no parâmetro de nível superior tools da requisição da API. Cada definição de ferramenta inclui:

ParâmetroDescrição
nameO nome da ferramenta. Deve corresponder à regex ^[a-zA-Z0-9_-]{1,64}$.
descriptionUma descrição detalhada em texto simples do que a ferramenta faz, quando deve ser usada e como se comporta.
input_schemaUm objeto JSON Schema que define os parâmetros esperados para a ferramenta.
input_examples(Opcional) Um array de objetos de entrada de exemplo para ajudar o Claude a entender como usar a ferramenta. Consulte 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.

Prompt do sistema para uso de ferramentas

Quando você chama a API do Claude com o parâmetro tools, a API constrói um prompt do sistema especial a partir das definições de ferramentas, da configuração de ferramentas e de 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 opere corretamente:

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 }}

Melhores práticas para definições de ferramentas

Para obter o melhor desempenho do Claude ao usar ferramentas, siga estas diretrizes:

  • Forneça descrições extremamente detalhadas. Este é, de longe, o fator mais importante no desempenho das ferramentas. Suas descrições devem explicar todos os detalhes sobre a ferramenta, incluindo:
    • O que a ferramenta faz
    • Quando ela deve ser usada (e quando não deve)
    • O que cada parâmetro significa e como afeta o comportamento da ferramenta
    • Quaisquer ressalvas ou limitações importantes, como quais informações a ferramenta não retorna se o nome da ferramenta não for claro. Quanto mais contexto você puder dar ao Claude sobre suas ferramentas, melhor ele será em decidir quando e como usá-las. Procure escrever pelo menos 3-4 frases por descrição de ferramenta, mais se a ferramenta for complexa.
  • Priorize descrições, mas considere usar input_examples para ferramentas complexas. Descrições claras são o mais importante, mas para ferramentas com entradas complexas, objetos aninhados ou parâmetros sensíveis a formato, você pode usar o campo input_examples para fornecer exemplos validados pelo esquema. Consulte Fornecendo exemplos de uso de ferramentas para detalhes.
  • Consolide operações relacionadas em menos ferramentas. Em vez de criar uma ferramenta separada para cada ação (, , ), agrupe-as em uma única ferramenta com um parâmetro . Menos ferramentas, porém mais capazes, reduzem a ambiguidade na seleção e tornam sua superfície de ferramentas mais fácil de navegar para o Claude.

A boa descrição explica claramente o que a ferramenta faz, quando usá-la, quais dados ela retorna e o que o parâmetro ticker significa. A descrição ruim é muito breve e deixa o Claude com muitas dúvidas sobre o comportamento e o uso da ferramenta.



Para orientações mais aprofundadas sobre design de ferramentas (consolidação, nomenclatura e modelagem de respostas), consulte Writing tools for agents.

Fornecendo exemplos de uso de ferramentas

Você pode fornecer exemplos concretos de entradas válidas de ferramentas para ajudar o 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 a formato.

Uso básico

Adicione um campo opcional input_examples à sua definição de ferramenta com um array de objetos de entrada de exemplo. Cada exemplo deve ser válido de acordo com o input_schema da ferramenta:

Os exemplos são incluídos no prompt junto com o esquema da sua ferramenta, mostrando ao Claude padrões concretos para chamadas de ferramentas bem formadas. Isso ajuda o Claude a entender quando incluir parâmetros opcionais, quais formatos usar e como estruturar entradas complexas.

Requisitos e limitações

  • Validação de esquema - Cada exemplo deve ser válido de acordo com o input_schema da ferramenta. Exemplos inválidos retornam um erro 400
  • Não suportado para ferramentas do lado do servidor - Exemplos de entrada funcionam em ferramentas do cliente definidas pelo usuário e com esquema da Anthropic, mas não em ferramentas de servidor como busca na web ou execução de código
  • Custo de tokens - Exemplos adicionam tokens ao prompt: ~20-50 tokens para exemplos simples, ~100-200 tokens para objetos aninhados complexos

Controlando a saída do Claude

Forçando o uso de ferramentas

Em alguns casos, você pode querer que o Claude use uma ferramenta específica para responder à pergunta do usuário, mesmo que o Claude fosse responder 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, há quatro opções possíveis:

  • auto permite que o Claude decida se chama ou não alguma das ferramentas fornecidas. Este é o valor padrão quando tools são fornecidas.
  • any informa ao Claude que ele deve usar uma das ferramentas fornecidas, mas não força uma ferramenta específica.
  • tool força o Claude a sempre usar uma ferramenta específica.
  • none impede o Claude de usar qualquer ferramenta. Este é o valor padrão quando nenhuma tools é fornecida.


Ao usar cache de prompt, alterações no parâmetro tool_choice invalidarão os blocos de mensagem em cache. Definições de ferramentas e prompts do sistema permanecem em cache, mas o conteúdo das mensagens deve ser reprocessado.

Este diagrama ilustra como cada opção funciona:

Diagrama mostrando as quatro opções de tool_choice: auto, any, tool e none

Observe que quando você define tool_choice como any ou tool, a API pré-preenche a mensagem do assistente para forçar o uso de uma ferramenta. Isso significa que os modelos não emitirão uma resposta ou explicação em linguagem natural antes dos blocos de conteúdo tool_use, mesmo se explicitamente solicitados a fazê-lo.



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 erro. Apenas tool_choice: {"type": "auto"} (o padrão) e tool_choice: {"type": "none"} são compatíveis com pensamento estendido.



O Claude Mythos Preview não suporta uso forçado de ferramentas. Requisiçõ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 no prompting para influenciar a seleção de ferramentas.

Testes mostraram que isso não deve reduzir o desempenho. Se você quiser que o modelo forneça contexto ou explicações em linguagem natural enquanto ainda solicita 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 estrito de ferramentas para garantir tanto que uma de suas ferramentas será chamada QUANTO que as entradas da ferramenta seguirão estritamente seu esquema. Defina strict: true nas suas definições de ferramentas para habilitar a validação de esquema.

Respostas do modelo com ferramentas

Ao usar ferramentas, o Claude frequentemente comentará sobre o que está fazendo ou responderá naturalmente ao usuário antes de invocar ferramentas.

Por exemplo, dado o prompt "What's the weather like in San Francisco right now, and what time is it there?", o Claude pode responder com:

JSON
{
  "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" }
    }
  ]
}

Esse estilo de resposta natural ajuda os usuários a entender o que o Claude está fazendo e cria uma interação mais conversacional. Você pode orientar o estilo e o conteúdo dessas respostas por meio de seus prompts do sistema e fornecendo <examples> em seus prompts.

É importante observar que o Claude pode usar várias formulações e abordagens ao explicar suas ações. Seu código deve tratar essas respostas como qualquer outro texto gerado pelo assistente, e não depender de convenções de formatação específicas.

Próximos passos

Lidar com chamadas de ferramentas

Analise blocos tool_use e formate respostas tool_result.

Tool Runner (SDK)

Deixe o SDK lidar com o loop agêntico automaticamente.

Referência de ferramentas

Diretório de ferramentas fornecidas pela Anthropic e propriedades opcionais.

create_pr
review_pr
merge_pr
action
  • Use namespacing significativo nos nomes das ferramentas. Quando suas ferramentas abrangem múltiplos serviços ou recursos, prefixe os nomes com o serviço (por exemplo, github_list_prs, slack_send_message). Isso torna a seleção de ferramentas inequívoca à medida que sua biblioteca cresce, e é especialmente importante ao usar a busca de ferramentas.
  • Projete respostas de ferramentas para retornar apenas informações de alto valor. Retorne identificadores semânticos e estáveis (por exemplo, slugs ou UUIDs) em vez de referências internas opacas, e inclua apenas os campos de que o Claude precisa para raciocinar sobre seu próximo passo. Respostas inchadas desperdiçam contexto e dificultam para o Claude extrair o que importa.
  • import anthropic
    
    client = anthropic.Anthropic()
    
    response = client.messages.create(
        model="claude-opus-4-8",
        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)