Tool use: cómo los LLM llaman a herramientas
Tool use (function calling, o «llamada a funciones») permite que un LLM no solo escriba texto, sino que llame a funciones reales — la base de todo agente de IA.
El problema de base
Un LLM por sí solo solo puede generar texto. No puede guardar un archivo, consultar una base de datos ni enviar un correo. Tool use (también llamado function calling) resuelve esto: describes al modelo las "herramientas" (tools) disponibles — por ejemplo una función "enviar_email" o "obtener_clima" — junto con un esquema de qué entradas necesitan.
Cómo funciona el proceso
Cuando el modelo detecta que necesita una herramienta, no responde con texto normal, sino con un bloque estructurado "tool_use": el nombre de la herramienta más los parámetros de entrada en JSON. Tu aplicación lee ese bloque, ejecuta la acción real (la petición a la API, la consulta a la base de datos) y devuelve el resultado al modelo como "tool_result". El modelo usa ese resultado para seguir trabajando o para formular una respuesta.
Por qué esto es la base de todos los agentes
Un agente, en esencia, no es más que un LLM que llama a herramientas en un bucle: preguntar, usar una herramienta, leer el resultado, elegir la siguiente herramienta, hasta que la tarea esté terminada. Sin tool use, un modelo sigue siendo un generador de texto puro, sin efecto sobre el mundo real.
Una propiedad importante
El modelo nunca ejecuta código él mismo. Solo decide cuándo y con qué argumentos se debe llamar a una herramienta. La ejecución real — y con ella el control de los riesgos — está en manos de tu aplicación.
EJEMPLO
Una herramienta de clima se define como { name: 'get_weather', input_schema: {location: string} }. El usuario pregunta: '¿Qué tiempo hace en Berlín?'. Claude responde con un bloque tool_use: { name: 'get_weather', input: {location: 'Berlin'} }. Tu app llama a la API de clima real y devuelve el resultado como tool_result. Solo entonces Claude formula la respuesta en palabras.
🛠️ EJERCICIO — PRUÉBALO TÚ
Define un esquema de herramienta sencillo para una tarea de tu elección (p. ej. 'buscar_producto') y haz que un LLM genere la llamada tool_use correspondiente.
- Escribe un esquema JSON con nombre, descripción y 1-2 parámetros de entrada para tu herramienta.
- Formula una pregunta de usuario que necesite claramente esta herramienta y dásela a un modelo junto con el esquema.
- Revisa la respuesta: ¿volvió un bloque tool_use correcto con argumentos sensatos?
✅ AUTOEVALUACIÓN
- ☐ ¿Eligió el modelo la herramienta correcta (en lugar de, por ejemplo, responder directamente adivinando)?
- ☐ ¿Se extrajeron correctamente los argumentos del bloque tool_use a partir de la pregunta del usuario?
- ☐ ¿Qué pasaría si la descripción de la herramienta fuera vaga — lo probaste?
QUIZ RÁPIDO
¿Qué ocurre cuando Claude quiere llamar a una herramienta?
FUENTES
- Documentación de Anthropic: Tool Use Overview ↗ platform.claude.com
- Documentación de Anthropic: How Tool Use Works ↗ platform.claude.com
- Documentación de OpenAI: Function Calling ↗ developers.openai.com