Pular para o conteúdo principal
Defina uma ferramenta quando um agente precisa ler dados do aplicativo, chamar um serviço interno ou executar uma ação. O modelo chama a ferramenta pelo ID; o SDK verifica os argumentos, executa seu código no seu processo e envia o resultado de volta no turno seguinte.

Defina uma ferramenta

Campos da ferramenta

Os schemas aceitam o validador nativo de cada linguagem: no TypeScript, uma função ou um objeto com parse() ou safeParse(); no Python, um callable, um modelo Pydantic ou um objeto com parse ou safe_parse; nas demais, uma função ou callable que retorna o valor ou lança uma exceção.

O que um timeout faz

Uma chamada a um ID de ferramenta que não está na lista atual de ferramentas faz a execução falhar (unknown tool no Go, Unknown tool '<name>' no C#, PHP, Ruby e Java, Unknown tool: <name> como um AgentError no Rust). No TypeScript com return-to-model, uma ferramenta desconhecida ou argumentos ilegíveis recebem a mesma resposta de um erro de ferramenta.

Exija aprovação

Defina a flag de aprovação da ferramenta como true ou dê a ela uma função que decide a cada chamada. Uma função de aprovação no nível do agente, quando a linguagem tem uma, vale para todas as ferramentas e se sobrepõe às duas. Uma chamada bloqueada pausa a execução com o status waiting_for_human; aprove-a ou rejeite-a pelo ID da chamada em Estado e aprovação.

Passe uma chamada para uma pessoa ou outro sistema

Uma ferramenta manual não tem executor: seu aplicativo, uma fila ou outro serviço faz o trabalho. Uma ferramenta interativa executa um hook que pode pausar para uma pessoa. As duas pausam a execução até você continuá-la com uma saída de ferramenta para o ID da chamada; veja Estado e aprovação. Se o hook interativo retornar um valor, ele vira o resultado da ferramenta imediatamente. Depois que você continua, onResponseReceived (ou o equivalente da linguagem) pode validar ou transformar a saída fornecida antes que o validador de saída a verifique. A ferramenta externa do Rust não recebe executor:
Se um turno do modelo misturar ferramentas automáticas e pendentes, o runtime executa as automáticas antes de retornar a pausa.

Relate o progresso e atualize o contexto

Uma ferramenta pode publicar resultados preliminares enquanto trabalha e substituir o contexto do aplicativo para os turnos seguintes. O progresso aparece como eventos tool.preliminary_result (veja Streaming), verificados pelo validador de eventos quando você define um.

Recupere-se de erros de ferramenta

Por padrão, um erro de uma ferramenta faz a execução falhar e é relançado. Defina a política de erro da ferramenta como return-to-model para enviar o erro de volta como resultado da ferramenta ({"error": "..."}), para que o modelo tente outra coisa. Mantenha o padrão para falhas inseguras ou irrecuperáveis. No TypeScript, toolExecution.maxOutputChars limita quanto da saída de uma ferramenta o modelo vê; uma saída mais longa mantém o início e o fim em volta de um aviso.

Execute ferramentas em paralelo

Quando um turno do modelo chama várias ferramentas independentes, defina um limite de concorrência para executá-las ao mesmo tempo. Go, C#, Ruby e Java executam as ferramentas uma de cada vez até você fazer isso. Os resultados são anexados na ordem em que o modelo fez as chamadas, seja qual for a ordem em que terminam. No Go e no C#, se várias ferramentas concorrentes definirem o contexto, vale a última na ordem das chamadas.
Última modificação em 5 de novembro de 2026