Desde el 11 de marzo de 2025, hemos lanzado los componentes básicos de nuestra nueva plataforma de agentes. Para más detalles, consulta nuestra documentación de la API para la API de Responses, Tools, incluidas Web Search, File Search y Computer Use, y nuestro Agents SDK con Tracing.
La llamada a funciones te permite conectar los modelos de OpenAI con herramientas y sistemas externos. Esto es útil para muchas cosas, como potenciar asistentes de IA con capacidades o crear integraciones profundas entre tus aplicaciones y los LLM.
Obtén más información en nuestra guía para desarrolladores sobre llamada a funciones.
En junio de 2024, lanzamos los resultados estructurados. Cuando los activas estableciendo strict: true en tu definición de función, los resultados estructurados garantizan que los argumentos generados por el modelo para una llamada de función coincidan exactamente con el esquema JSON que proporcionaste en la definición de función.
En octubre de 2024, lanzamos la función “Generar cualquier cosa”, que permite a los desarrolladores describir una función, pegarla directamente o pegar tu código y generar un esquema de función válido. Obtén más información sobre “Generar cualquier cosa” en este artículo del centro de ayuda
¿Cómo puedo usar la llamada a funciones?
La llamada a funciones es útil para una gran cantidad de casos de uso, como:
Permitir que los asistentes obtengan datos:
Permitir que los asistentes realicen acciones:
Permitir que los asistentes realicen cálculos:
Crear flujos de trabajo avanzados:
una canalización de extracción de datos que obtiene texto sin procesar, luego lo convierte en datos estructurados y lo guarda en una base de datos.
La llamada a funciones es compatible con la API de respuestas, que unifica capacidades que antes estaban divididas entre la API para completar chats y la API de asistentes.
¿Cómo puedo usar el modo JSON?
Cuando el modo JSON está activado, se garantiza que la salida del modelo sea JSON válido, excepto en algunos casos límite que debes detectar y manejar correctamente.
Para solicitar el modo JSON con la API para completar chats, establece response_format en { "type": "json_object" } en los modelos compatibles. Con la API de respuestas, establece text.format en { "type": "json_object" }, por ejemplo text: { "format": { "type": "json_object" } }, cuando corresponda. En cualquiera de las API, el modo JSON solo funciona cuando se cumplen los requisitos previos del modelo, mensaje o herramienta (por ejemplo, el modelo admite json_object, la conversación incluye instrucciones para producir JSON y las restricciones de herramientas son compatibles). Al menos un mensaje de solicitud o mensaje de entrada en el contexto de entrada efectivo debe contener json sin distinguir mayúsculas y minúsculas, como JSON, json o Json; de lo contrario, la API devuelve un error. En Responses, el campo de instrucciones de nivel superior por sí solo no satisface esta validación. Cuando se usa la llamada a funciones en modelos/rutas compatibles, las restricciones de JSON se aplican automáticamente a los argumentos de la llamada de función; los modelos incompatibles o las combinaciones de herramienta y formato de respuesta pueden rechazarse o no usar muestreo restringido por JSON.
Notas importantes:
Al usar el modo JSON, siempre debes indicar al modelo que produzca JSON mediante algún mensaje de la conversación, por ejemplo, mediante tu mensaje del sistema. Si no incluyes una instrucción explícita para generar JSON, el modelo puede generar un flujo interminable de espacios en blanco y la solicitud puede ejecutarse continuamente hasta alcanzar el límite de tokens. Para ayudar a garantizar que no lo olvides, el modo JSON rechaza las solicitudes a menos que los mensajes de entrada o las instrucciones relevantes contengan la palabra
jsonde alguna forma, sin distinguir mayúsculas y minúsculas.El modo JSON no garantiza que la salida coincida con un esquema específico, solo que sea válida y se pueda analizar sin errores. Debes usar resultados estructurados para asegurarte de que coincida con tu esquema o, si eso no es posible, debes usar una biblioteca de validación y posiblemente reintentos para garantizar que la salida coincida con el esquema que deseas.
Tu aplicación debe detectar y manejar los casos límite que pueden hacer que la salida del modelo no sea un objeto JSON completo (consulta más abajo)
