Define una herramienta
Campos de una herramienta
Los esquemas aceptan el validador nativo de cada lenguaje: en TypeScript, una función o un objeto con
parse() o safeParse(); en Python, un callable, un modelo de Pydantic o un objeto con parse o safe_parse; en los demás, una función o un callable que devuelve el valor o lanza una excepción.
Qué hace un tiempo de espera
Una llamada a un ID de herramienta que no está en la lista de herramientas actual hace fallar la ejecución (
unknown tool en Go, Unknown tool '<name>' en C#, PHP, Ruby y Java, Unknown tool: <name> como AgentError en Rust). En TypeScript con return-to-model, una herramienta desconocida o unos argumentos ilegibles se responden como un error de herramienta.
Exige aprobación
Establece el indicador de aprobación de una herramienta entrue, o dale una función que decida en cada llamada. Una función de aprobación a nivel de agente, en los lenguajes que la tienen, se aplica a todas las herramientas y tiene prioridad sobre ambas. Una llamada que requiere aprobación pone la ejecución en pausa con el estado waiting_for_human; apruébala o recházala por ID de llamada como se explica en Estado y aprobación.
Pasa una llamada a una persona o a otro sistema
Una herramienta manual no tiene ejecutor: el trabajo lo hace tu aplicación, una cola u otro servicio. Una herramienta interactiva ejecuta un hook que puede ponerse en pausa para que intervenga una persona. Ambas ponen la ejecución en pausa hasta que la continúas con una salida de herramienta para el ID de la llamada; consulta Estado y aprobación.
Si el hook interactivo devuelve un valor, ese valor se convierte de inmediato en el resultado de la herramienta. Después de continuar,
onResponseReceived (o el equivalente del lenguaje) puede validar o transformar la salida proporcionada antes de que la compruebe el validador de salida.
La herramienta externa de Rust no recibe ejecutor:
Informa del progreso y actualiza el contexto
Una herramienta puede publicar resultados preliminares mientras trabaja y sustituir el contexto de la aplicación para los turnos posteriores. El progreso aparece como eventostool.preliminary_result (consulta Streaming) y se comprueba con el validador de eventos si defines uno.
Recupérate de errores de herramientas
Por defecto, un error de una herramienta hace fallar la ejecución y se vuelve a lanzar. Establece la política de errores de la herramienta enreturn-to-model para devolver el error como resultado de la herramienta ({"error": "..."}) y que el modelo pueda probar otra cosa. Mantén el valor predeterminado para los fallos inseguros o irrecuperables.
En TypeScript,
toolExecution.maxOutputChars limita cuánta salida de una herramienta ve el modelo; una salida más larga conserva su principio y su final alrededor de un aviso.