Function Calling en OpenAI: qué es y cómo usar funciones con GPT
Function Calling de OpenAI permite conectar modelos GPT con funciones reales de tu aplicación. El modelo puede analizar una solicitud, elegir una función disponible, generar argumentos estructurados y esperar a que tu servidor ejecute la acción antes de continuar con la respuesta.
¿Qué es Function Calling en OpenAI?
Function Calling permite declarar funciones dentro de una solicitud a OpenAI API. El modelo no ejecuta directamente tu código: genera una llamada estructurada indicando qué función necesita utilizar y con qué argumentos. Después, tu aplicación ejecuta esa función, devuelve el resultado al modelo y continúa el flujo.
Qué puedes hacer con Function Calling
Permite convertir un modelo en una capa de razonamiento conectada con sistemas reales.
Consultar bases de datos
Buscar productos, clientes, pedidos, registros o información interna.
Llamar APIs
Consultar servicios externos desde funciones controladas por tu backend.
Actualizar sistemas
Crear registros, modificar estados o interactuar con un CRM.
Realizar cálculos
Delegar operaciones que conviene resolver mediante lógica determinista.
Automatizar procesos
Encadenar decisiones y acciones dentro de workflows.
Construir agentes
Dar al modelo diferentes capacidades según la tarea.
Cómo funciona Function Calling
El modelo selecciona una herramienta, tu aplicación ejecuta la función y el resultado vuelve al modelo.
El modelo decide
Analiza la solicitud y determina si necesita utilizar una función.
Tu backend ejecuta
Recibe los argumentos, valida los datos y realiza la acción.
El modelo continúa
El resultado de la función vuelve al contexto para completar la respuesta.
Cómo definir una función para el modelo
En Responses API,
las funciones personalizadas
forman parte del array
tools.
Estructura básica
{
"type": "function",
"name": "buscar_producto",
"description": "Busca un producto por su nombre.",
"parameters": {
"type": "object",
"properties": {
"producto": {
"type": "string"
}
},
"required": ["producto"],
"additionalProperties": false
},
"strict": true
}
Utiliza nombres y descripciones claras, porque el modelo usa esa información para decidir cuándo corresponde llamar una herramienta.
Partes de una función
Una definición clara mejora la capacidad del modelo para seleccionar correctamente la herramienta.
| Campo | Función |
|---|---|
type |
Identifica la herramienta como función |
name |
Nombre que identifica la función |
description |
Explica cuándo y para qué debe utilizarse |
parameters |
Define los argumentos mediante JSON Schema |
required |
Indica los argumentos obligatorios |
strict |
Solicita que los argumentos sigan estrictamente el esquema |
strict: true
OpenAI permite activar modo estricto para las funciones.
Argumentos más predecibles
Con strict: true,
el modelo intenta producir argumentos
que respeten el esquema
definido para la herramienta.
Structured arguments mejoran la confiabilidad, pero nunca reemplazan la validación del backend antes de ejecutar una operación real.
Enviar una función a Responses API
La función se declara
dentro de tools
junto con el modelo
y el input.
Ejemplo conceptual
{
"model": "gpt-5.6-sol",
"input": "¿Cuánto cuesta el notebook X?",
"tools": [
{
"type": "function",
"name": "buscar_precio",
"description": "Obtiene el precio actual de un producto.",
"parameters": {
"type": "object",
"properties": {
"producto": {
"type": "string"
}
},
"required": ["producto"],
"additionalProperties": false
},
"strict": true
}
]
}
Cómo aparece una llamada a función
Cuando el modelo decide
utilizar una función,
puede generar un output item
de tipo function_call.
Ejemplo de respuesta
{
"type": "function_call",
"call_id": "call_abc123",
"name": "buscar_precio",
"arguments": "{\"producto\":\"notebook X\"}"
}
Tu aplicación debe interpretar y validar los argumentos antes de ejecutar la función.
Tu servidor ejecuta la función
El modelo únicamente solicita la herramienta. Tu aplicación mantiene el control sobre la operación real.
Recibes
name,
call_id
y argumentos.
Compruebas que la función esté permitida.
Validas cada argumento recibido.
Ejecutas tu lógica, API o consulta de base de datos.
Devuelves el resultado al modelo.
Devolver function_call_output al modelo
Después de ejecutar
la función,
el resultado debe asociarse
con el call_id
correspondiente.
Ejemplo conceptual
{
"type": "function_call_output",
"call_id": "call_abc123",
"output": "{\"precio\":799990,\"moneda\":\"CLP\"}"
}
Permite al modelo identificar qué resultado corresponde a cada llamada realizada.
Flujo completo de Function Calling
En producción, una llamada a herramienta suele requerir varios pasos.
Envías el prompt junto con las funciones disponibles.
El modelo devuelve
function_call.
Tu aplicación ejecuta la función.
Envías
function_call_output.
El modelo utiliza ese resultado para generar la respuesta final.
tool_choice: auto, required y none
Puedes decidir cuánto control tendrá el modelo sobre las herramientas.
| Valor | Comportamiento |
|---|---|
auto |
El modelo puede responder o utilizar una o más herramientas |
required |
El modelo debe utilizar al menos una herramienta |
none |
El modelo no utilizará herramientas |
Forzar una función específica
También puedes restringir al modelo para que utilice una función determinada.
Función concreta
{
"tool_choice": {
"type": "function",
"name": "buscar_precio"
}
}
Allowed tools
OpenAI permite declarar un conjunto amplio de herramientas y restringir cuáles puede utilizar el modelo en una solicitud concreta.
Menos herramientas disponibles
Este enfoque permite mantener un toolkit completo en la aplicación, pero habilitar únicamente las herramientas necesarias para cada contexto.
Reducir el conjunto de herramientas habilitadas disminuye el riesgo de llamadas innecesarias o incorrectas.
El modelo puede solicitar varias funciones
Responses API incluye soporte para llamadas paralelas a herramientas cuando el modelo y el workflow lo permiten.
Varias acciones en un mismo turno
Puede resultar útil cuando varias consultas son independientes y pueden ejecutarse simultáneamente.
Si aparecen varias llamadas, procesa cada una y devuelve el resultado asociado a su identificador.
Funciones propias vs herramientas integradas
Responses API admite diferentes categorías de herramientas.
| Tipo | Quién proporciona la herramienta | Ejemplo |
|---|---|---|
| Function | Tu aplicación | Consultar stock |
| Built-in tool | OpenAI | Web Search |
| MCP tool | Servidor MCP / integración | Sistema externo |
Si necesitas ejecutar código o consultar un sistema que tú controlas, una función personalizada suele ser la opción adecuada.
Ver Responses API →Casos de uso de Function Calling
Esta capacidad resulta especialmente útil cuando una respuesta necesita datos o acciones externas.
Ecommerce: consultar precio, disponibilidad y despacho.
CRM: buscar clientes y crear registros.
Reservas: consultar horarios y crear una reserva.
Soporte: obtener información de una cuenta o ticket.
Automatización: activar procesos en sistemas internos.
Agentes: seleccionar dinámicamente qué capacidad utilizar.
No ejecutes ciegamente los argumentos del modelo
Function Calling puede generar acciones reales, por lo que el backend debe mantener siempre el control.
Valida tipos, formatos y rangos.
Comprueba permisos del usuario.
Utiliza listas de funciones permitidas.
Solicita confirmación para operaciones sensibles.
Registra llamadas y resultados.
Nunca permitas ejecutar código arbitrario sin controles adicionales.
Evita ejecutar dos veces la misma acción
Las aplicaciones reales deben considerar reintentos, fallos de red y respuestas duplicadas.
Protege operaciones con efectos reales
Para acciones como crear pedidos, emitir pagos, enviar correos o reservar recursos, implementa identificadores y controles que eviten duplicaciones accidentales.
Function Calling vs Structured Outputs
Ambos utilizan estructuras definidas, pero resuelven necesidades diferentes.
| Característica | Function Calling | Structured Outputs |
|---|---|---|
| Objetivo | Solicitar una acción o herramienta | Generar datos estructurados |
| Ejecución externa | Sí | No necesariamente |
| JSON Schema | Argumentos | Formato de respuesta |
| Ejemplo | Consultar stock | Generar una ficha JSON |
Si necesitas que el modelo solicite una acción, utiliza Function Calling. Si únicamente necesitas datos estructurados, utiliza Structured Outputs.
Function Calling vs MCP
Ambos permiten conectar el modelo con capacidades externas, pero la arquitectura cambia.
| Aspecto | Function Calling | MCP |
|---|---|---|
| Herramienta | Definida por tu aplicación | Expuesta mediante servidor MCP |
| Ejecución | Tu backend | Servidor MCP / integración |
| Control | Muy directo | Arquitectura estandarizada |
| Uso típico | Lógica propia | Conectar ecosistemas de herramientas |
Function Calling dentro de Responses API
Las funciones personalizadas forman parte de un sistema de herramientas más amplio.
Una sola interfaz para diferentes herramientas
Responses API puede combinar funciones personalizadas con herramientas integradas y MCP dentro del mismo sistema.
Ver guía de Responses API →¿Function Calling tiene un precio adicional?
Las definiciones de herramientas y los argumentos forman parte del contexto procesado por el modelo.
Las herramientas también utilizan contexto
Definir muchas funciones, esquemas extensos o descripciones largas puede aumentar la cantidad de tokens enviados al modelo.
Esto puede mejorar la selección de herramientas y reducir contexto innecesario.
Ver precios OpenAI API →Function Calling también depende de los límites de la API
Cada ida y vuelta con el modelo puede contribuir al consumo de tokens y solicitudes.
Planifica workflows de varios pasos
Un flujo con varias llamadas a herramientas puede necesitar múltiples interacciones con el modelo.
Ver límites OpenAI API →Documentación oficial de Function Calling
La compatibilidad, parámetros y capacidades pueden evolucionar, por lo que conviene consultar la documentación oficial antes de desplegar.
Function tools
Revisa la referencia de Responses API para herramientas, tool choice y function calls.
Consultar documentación oficial →Guías relacionadas con Function Calling
Continúa explorando herramientas y capacidades de OpenAI API.
FAQ sobre Function Calling en OpenAI
Respuestas rápidas sobre funciones, tool_choice, strict mode y seguridad.
Es una capacidad que permite al modelo solicitar funciones definidas por una aplicación utilizando argumentos estructurados.
No. El modelo genera la solicitud de función y tu aplicación decide si la ejecuta.
Indica que los argumentos generados deben ajustarse estrictamente al esquema definido para la función.
Es el parámetro que controla si el modelo puede utilizar herramientas, debe utilizar alguna o debe utilizar una herramienta concreta.
Permite que el modelo decida entre responder directamente o utilizar una o más herramientas.
Sí. Responses API dispone de soporte para llamadas paralelas a herramientas cuando el modelo y la configuración lo permiten.
No. Function Calling está orientado a solicitar herramientas o acciones, mientras Structured Outputs sirve para generar datos con una estructura definida.
Sí. La aplicación debe validar argumentos, permisos y reglas de negocio antes de ejecutar cualquier acción.
Sí. Las funciones personalizadas forman parte del sistema de herramientas disponible en Responses API.
El siguiente paso: conectar modelos con información externa
Ya conoces Function Calling. Continúa explorando las herramientas de Responses API para construir aplicaciones más completas.
Ver Responses API →