Function Calling (Tool Use)
La llamada a funciones, o uso de herramientas, permite que un modelo de lenguaje solicite una función externa con argumentos JSON, que la aplicación ejecuta y devuelve.
Las llamadas a funciones, también conocidas como llamadas a herramientas o uso de herramientas, permiten a un modelo de lenguaje grande (LLM) responder con una solicitud para ejecutar una función externa en lugar de generar texto sin más. La aplicación describe cada herramienta disponible mediante un nombre, un propósito y un esquema JSON para sus argumentos. Cuando una solicitud requiere datos en tiempo real o una acción, el modelo responde con el nombre de la herramienta y los argumentos JSON, la aplicación ejecuta la función y el modelo redacta la respuesta a partir del resultado. El modelo nunca ejecuta nada por sí mismo. En febrero de 2023, el Toolformer de Meta demostró que un modelo podía aprender por sí mismo a insertar llamadas a API en su propio texto, y OpenAI añadió las llamadas a funciones a su API el 13 de junio de 2023, con modelos ajustados para detectar cuándo se necesita una función y dar formato a argumentos que coincidan con su firma. Actualmente, todos los principales proveedores de modelos las admiten, y los modelos abiertos las aprenden mediante el ajuste de instrucciones y las plantillas de chat.
Cómo funcionan las llamadas a funciones#
Una llamada a una herramienta es un viaje de ida y vuelta entre el modelo y la aplicación que se repite hasta que el modelo tiene lo que necesita:
El código siguiente simula ambos lados de un viaje de ida y vuelta con el formato de la guía de llamadas a funciones de OpenAI; la respuesta del modelo está escrita directamente para que el código se ejecute sin una clave de API.
import json
from jsonschema import validate
# La definición de herramienta enviada con la solicitud: un nombre, un propósito y un esquema JSON para los argumentos
tool = {
"type": "function",
"name": "get_order_status",
"description": "Look up the shipping status of an order by its number.",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string", "pattern": "^[0-9]+$"}},
"required": ["order_id"],
},
}
# La salida del modelo es una llamada a función cuyos argumentos llegan como una cadena JSON
call = {"type": "function_call", "call_id": "call_1", "name": "get_order_status", "arguments": '{"order_id": "4417"}'}
args = json.loads(call["arguments"])
validate(args, tool["parameters"]) # Genera un error antes de ejecutar nada si los argumentos no cumplen el esquema
# La aplicación ejecuta su propia función y devuelve el resultado con el mismo call_id
orders = {"4417": "Shipped, arriving Thursday"}
print({"type": "function_call_output", "call_id": call["call_id"], "output": orders[args["order_id"]]})Imprime {'type': 'function_call_output', 'call_id': 'call_1', 'output': 'Shipped, arriving Thursday'}, el elemento que la aplicación añade a la conversación antes de volver a llamar al modelo. Si configuras "strict": true en una herramienta, la API aplica decodificación restringida, de modo que los argumentos que genera el modelo siempre coinciden con el esquema.
Elegir y encadenar herramientas#
Los modelos pueden emitir varias llamadas independientes en un mismo turno, como consultar dos pedidos a la vez, y una aplicación puede forzar una herramienta concreta, exigir el uso de alguna herramienta o prohibirlas durante un turno. Encadenar llamadas entre turnos, de modo que cada resultado determine la siguiente llamada, es el bucle que convierte un modelo en un agente de IA que se ejecuta dentro de un entorno de ejecución para agentes. El Berkeley Function Calling Leaderboard evalúa estas capacidades: elegir la función adecuada, completar sus argumentos, realizar llamadas paralelas y de varios turnos, y abstenerse cuando ninguna herramienta resulta apropiada. Como los resultados de las herramientas vuelven al modelo como entrada, una página web o un documento recuperado por una herramienta puede incluir una inyección de prompt, así que las aplicaciones conceden a las herramientas los mínimos privilegios necesarios y piden confirmación a una persona antes de realizar compras, eliminar elementos o enviar mensajes.
Los modelos de visión son herramientas naturales porque su salida ya está estructurada. En Ultralytics YOLO, Results.summary() devuelve cada objeto que detecta un modelo YOLO26 como un diccionario con el nombre de la clase, el índice de la clase, la confianza y las coordenadas del cuadro; json.dumps convierte directamente esa lista en el resultado de una herramienta, de modo que un modelo de chat o un modelo de visión y lenguaje (VLM) puede contar y localizar objetos en una foto mediante una llamada al modo predict.
Llamada a función frente a términos relacionados#
- Agentes de uso del ordenador: Manejan el software mediante capturas de pantalla, clics y pulsaciones de teclas, lo que permite trabajar con aplicaciones que no tienen API. Una llamada a función logra el mismo resultado con una única solicitud estructurada siempre que haya una API disponible.
- Salidas estructuradas: Restringen la respuesta final de un modelo a un esquema, por ejemplo, para extraer campos de una factura. Las llamadas a función usan los mismos esquemas para solicitar una acción y esperan recibir un resultado.
- Generación aumentada por recuperación (RAG): Añade documentos recuperados al prompt. Una herramienta de búsqueda puede implementar RAG, y la RAG agéntica permite que el modelo decida cuándo buscar y qué buscar.
- Protocolo de contexto del modelo (MCP): Protocolo abierto, presentado por Anthropic en noviembre de 2024, que permite a las aplicaciones descubrir herramientas ofrecidas por programas externos. El modelo sigue invocando una herramienta MCP mediante llamadas a función.










