Módulo 4

Function calling y tool use


Es el puente hacia lo agéntico: el modelo deja de solo hablar y empieza a ejecutar acciones reales sobre tu aplicación.

Tiempo de lectura: 3 min

Function calling (tool use)

El function calling (o tool use) es la capacidad del modelo de pedir que se ejecute una función de tu código. Le describes qué herramientas tiene disponibles y, cuando una petición lo requiere, el modelo responde con una llamada estructurada (el nombre de la herramienta y los argumentos) en lugar de texto.

El punto clave es que el modelo no ejecuta nada: solo decide qué herramienta usar y con qué argumentos. Es tu código el que la ejecuta, con tus permisos y tus validaciones, y le devuelve el resultado para que continúe. Así el modelo pasa de solo hablar a poder consultar datos y actuar sobre la aplicación.

JSON Schema para herramientas

Cada herramienta se define con un nombre, una descripción y un esquema de los argumentos en JSON Schema: qué campos tiene, de qué tipo son, cuáles son obligatorios y qué valores admiten (por ejemplo, un enum con los estados posibles de un pedido).

La descripción no es documentación decorativa: es lo que el modelo lee para decidir cuándo usar la herramienta y cómo rellenar sus argumentos. Una buena descripción explica cuándo usarla y cuándo no. Los esquemas estrictos (tipos, enums, campos obligatorios) reducen mucho los argumentos inventados.

El bucle agéntico

El bucle agéntico es el ciclo en el que el modelo pide una herramienta, el código la ejecuta y le devuelve el resultado, y el modelo decide si necesita otra o si ya puede responder. Una sola petición («¿cómo está el pedido de María y puede devolverlo?») puede requerir varias vueltas: buscar el pedido, consultar su estado y leer la política de devoluciones.

Este bucle necesita límites: un número máximo de pasos y un tiempo máximo. También conviene que los errores de las herramientas vuelvan como un texto que el modelo pueda entender («pedido no encontrado: comprueba el número»), para que pueda corregirse en lugar de fallar.

OpenAPI para exponer herramientas

OpenAPI (antes Swagger) es el estándar para describir APIs REST. Como ya describe los endpoints, los parámetros y los esquemas, es tentador convertirlo directamente en herramientas para el modelo.

Convertir una API entera en herramientas es una mala idea conocida: docenas de endpoints con nombres y respuestas pensados para programadores queman contexto y confunden al modelo a la hora de elegir. El patrón que funciona es una capa corta de herramientas orientadas a la intención («consultar_estado_pedido», «crear_devolucion») por encima de la API, con descripciones escritas para el modelo.

Examínate de este módulo

Copia este prompt y pégalo en tu IA (ChatGPT, Claude, Gemini…). Te hará un test de 20 preguntas sobre los conceptos del módulo y después te propondrá un ejercicio práctico.

Actúa como examinador de la «Guía de Ingeniería IA» de Dani Pérez. Examíname del módulo «Function calling y tool use» (https://daniperez.pro/resources/ai-engineering-guide/function-calling).

Conceptos que entran en el examen:
- Function calling (tool use)
- JSON Schema para herramientas
- El bucle agéntico
- OpenAPI para exponer herramientas

Examen:
1. 20 preguntas tipo test, cada una con 4 opciones (a, b, c, d) y una sola respuesta correcta.
2. Pregunta sobre comprensión y criterio (para qué sirve cada cosa y cuándo NO usarla), no sobre memorizar definiciones.
3. Reparte la posición de la respuesta correcta de forma equilibrada entre a, b, c y d.
4. Hazme las preguntas en 4 tandas de 5. No pongas ningún ejemplo de respuesta (como "1a 2b 3c 4d 5a"): yo ya sé que debo responder con las letras. No me digas si he acertado hasta que haya respondido las 20.
5. Al final, corrígelas todas: para cada pregunta, mi respuesta, la correcta y una explicación breve. Dame la nota sobre 20 y dime qué conceptos debo repasar.

Ejercicio práctico (después de la corrección):
6. Pregúntame qué aplicación tengo o quiero construir, y con qué lenguaje y framework trabajo. Si no tengo ninguna, usa esta: la aplicación de atención al cliente de una tienda online, con tickets, clientes, pedidos y una base de conocimiento (FAQ y políticas de devolución). En ese caso, centra el ejercicio en: definir herramientas para consultar el estado de un pedido y para crear una solicitud de devolución, y que el modelo elija cuál llamar según la petición.
7. Propónme un ejercicio que aplique los conceptos de este módulo a esa aplicación: objetivo, requisitos, criterios para darlo por bueno y errores habituales a evitar.
8. No me lo resuelvas. Cuando te traiga mi solución, revísala con esos criterios.