Uso de Ferramentas / Function Calling
O uso de ferramentas permite que o Claude chame funções que você define — busca, uma calculadora, seu banco de dados, qualquer API — e use os resultados. É a base de todo agente.
- Como funciona o loop agêntico de quatro etapas, das definições de ferramentas até a resposta final
- Como definir uma ferramenta em Python com nome, descrição e entrada em JSON-Schema
- Por que as descrições de ferramentas funcionam como prompts que moldam quando e como o Claude as chama
- Como validar entradas, retornar erros como resultados e usar ferramentas server-side com segurança
O loop
O uso de ferramentas é uma conversa, não uma única chamada. Você entrega ao Claude um cardápio de ferramentas; o Claude escolhe uma e faz uma pausa; você a executa e reporta de volta; o Claude integra o resultado em sua resposta — repetindo conforme necessário.
- Você inclui uma lista de definições de ferramentas — cada uma com um nome, uma descrição e uma entrada em JSON-Schema.
- Se o Claude decidir usar uma, ele retorna um bloco tool_use com argumentos e para.
- Você mesmo executa a ferramenta e envia a saída de volta como um tool_result.
- O Claude continua, possivelmente chamando mais ferramentas, até responder.
Definindo uma ferramenta (Python)
A definição de uma ferramenta é apenas um nome, uma descrição em linguagem natural e um JSON-Schema para a entrada. Passe-a em tools, depois verifique stop_reason para saber quando o Claude quer agir.
ferramenta get_weather + primeira chamada
tools = [{
"name": "get_weather",
"description": "Get current weather for a city.",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
msg = client.messages.create(
model="claude-sonnet-5", max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Rome?"}],
)
# If msg.stop_reason == "tool_use": run the tool, then send a tool_result back.Dicas
Pequenas escolhas em como você define e trata as ferramentas fazem uma enorme diferença na confiabilidade.
- Descrições são prompts. Uma
descriptionclara da ferramenta e a documentação dos parâmetros melhoram enormemente quando/como o Claude a chama. - Valide as entradas que você recebe antes de executar — nunca confie nelas cegamente.
- Retorne erros como resultados. Se uma ferramenta falhar, envie um
tool_resultdescrevendo o erro para que o Claude possa se recuperar. - Ferramentas server-side. A Anthropic também oferece ferramentas integradas (por exemplo, busca na web, execução de código, uso do computador) — confira a documentação para o menu atual.
:::warning Ferramentas = ações = risco Uma ferramenta que executa ações reais herda um modelo de segurança. Aplique o privilégio mínimo e mantenha um humano no loop para chamadas arriscadas — veja Protegendo Agentes e Ferramentas. :::
Teste seu conhecimento
0/3- O uso de ferramentas é um loop: envie as definições de ferramentas, o Claude retorna um bloco tool_use e para, você executa e retorna um tool_result, o Claude continua até responder.
- A definição de uma ferramenta é um nome, uma descrição e uma entrada em JSON-Schema — passe-a em tools e verifique stop_reason == tool_use.
- Descrições são prompts; valide as entradas antes de executar; retorne falhas como erros tool_result para que o Claude possa se recuperar.
- A Anthropic também oferece ferramentas server-side, e qualquer ferramenta que executa ações reais precisa de privilégio mínimo mais um humano no loop.