OpenAI fuerza respuestas JSON exactas con Structured Outputs
OpenAI incorpora Structured Outputs a su API para que GPT-4o y GPT-4o mini respondan conforme a un esquema JSON definido por el desarrollador. La función reduce un problema habitual al conectar modelos con aplicaciones y bases de datos.
OpenAI ha presentado este martes Structured Outputs, una función de su API que permite exigir a los modelos que devuelvan datos con una estructura JSON concreta. El cambio apunta a un problema práctico: un modelo puede dar una respuesta correcta para una persona y, aun así, resultar inútil para una aplicación si altera el formato esperado.
La novedad está disponible en los modelos GPT-4o-2024-08-06 y GPT-4o mini-2024-07-18. Según OpenAI, sus pruebas internas sitúan a GPT-4o con Structured Outputs en el 100% de cumplimiento de esquemas complejos, frente a menos del 40% de GPT-4-0613 con los mecanismos anteriores.
Del JSON válido al JSON utilizable
JSON es un formato de texto muy usado para intercambiar datos entre programas. Una tienda, por ejemplo, puede necesitar que un modelo extraiga de una consulta el nombre de un producto, una categoría, un precio máximo y una lista de filtros. No basta con que el modelo responda en JSON: debe usar exactamente esos campos, con los tipos de datos previstos y sin inventar otros.
Hasta ahora, los desarrolladores podían pedir una respuesta JSON o describir el formato en el mensaje enviado al modelo. Eso reducía errores, pero no los eliminaba. El modelo podía omitir un campo obligatorio, devolver una cifra como texto o añadir una explicación antes del objeto JSON. Cualquiera de esos fallos obliga a crear validaciones, reintentos y reglas adicionales en el software que recibe la respuesta.
Structured Outputs permite definir un esquema mediante JSON Schema, una especificación que describe qué datos son admisibles: campos obligatorios, valores posibles, objetos anidados o listas. Para esquemas compatibles y solicitudes que no sean rechazadas, la API busca que la respuesta se ajuste a esa definición cuando se activa la opción strict: true.
Dos vías para usar la función
OpenAI ha integrado esta capacidad en dos partes de la API. La primera son las llamadas a funciones o herramientas: el desarrollador describe una acción que el modelo puede solicitar, como consultar un catálogo, reservar una cita o buscar un pedido. Con el modo estricto, los argumentos de esa llamada deben seguir el esquema declarado.
La segunda es el formato de respuesta. En lugar de pedir simplemente JSON, la aplicación puede enviar un esquema bajo el formato json_schema y recibir una salida preparada para ser procesada por código.
Esto no significa que el modelo pase a saber datos que no conoce ni que deje de cometer errores de razonamiento. Garantiza la forma de la respuesta, no la verdad de su contenido. Si se le pide clasificar una reclamación o extraer datos de un documento ambiguo, todavía puede interpretar mal el texto; la diferencia es que entregará esa interpretación en una estructura previsible.
Menos trabajo de integración
La mejora tiene especial valor en usos donde el modelo es una pieza dentro de un proceso mayor, no un chatbot aislado. Sirve para transformar facturas en registros, convertir conversaciones en formularios, extraer información de contratos, generar interfaces a partir de instrucciones o alimentar sistemas de atención al cliente.
También reduce la distancia entre un prototipo y un producto. Un desarrollador puede enseñar una demostración con respuestas libres en minutos, pero desplegarla requiere tratar excepciones: campos ausentes, formatos inválidos y resultados que rompen una automatización. Forzar el esquema no sustituye las comprobaciones de negocio —por ejemplo, verificar que un importe existe realmente en una base de datos—, pero elimina una clase frecuente de fallos de formato.
OpenAI mantiene el soporte para JSON Schema dentro de un subconjunto de la especificación, una restricción razonable para que el sistema pueda garantizar el cumplimiento. La documentación también contempla las negativas por seguridad: si el modelo rechaza una petición, la aplicación puede distinguir esa negativa de una respuesta estructurada normal.
La función llega sin un precio específico adicional: se utiliza con las tarifas de los modelos compatibles. GPT-4o cuesta 5 dólares por millón de tokens de entrada y 15 dólares por millón de tokens de salida; GPT-4o mini, 15 céntimos y 60 céntimos, respectivamente.
El movimiento muestra dónde se está librando una parte menos vistosa de la competencia entre modelos: no solo en responder mejor a una pregunta, sino en comportarse de forma suficientemente predecible para integrarse en programas reales. Para las empresas, esa fiabilidad de formato puede importar más que una mejora marginal en la calidad de una conversación.