Saltar al contenido principal
Define una herramienta cuando un agente necesite leer datos de la aplicación, llamar a un servicio interno o realizar una acción. El modelo llama a la herramienta por su ID; el SDK comprueba los argumentos, ejecuta tu código en tu proceso y devuelve el resultado en el siguiente turno.

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 en true, 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:
Si un turno del modelo mezcla herramientas automáticas y pendientes, el runtime ejecuta las automáticas antes de devolver la pausa.

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 eventos tool.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 en return-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.

Ejecuta herramientas de forma concurrente

Cuando un turno del modelo llama a varias herramientas independientes, define un límite de concurrencia para ejecutarlas a la vez. Go, C#, Ruby y Java ejecutan las herramientas de una en una hasta que lo haces. Los resultados se añaden en el orden en que el modelo hizo las llamadas, sea cual sea el orden en que terminen. En Go y C#, si varias herramientas concurrentes establecen el contexto, gana la última en el orden de las llamadas.
Última modificación el 5 de noviembre de 2026