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 comotrue 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:
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 eventostool.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 comoreturn-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.