OpenAI pone primera y revoluciona con salidas estructuradas en la API

OpenAI anunció una actualización que seguramente hará muy feliz a muchos desarrolladores. Han lanzado una nueva funcionalidad en su API llamada Structured Outputs. Esta novedad busca resolver un problema común al trabajar con modelos de lenguaje: la adherencia a los esquemas JSON.

JSON es un formato de datos muy popular entre los desarrolladores debido a su simplicidad y flexibilidad. Sin embargo, los modelos de lenguaje como GPT-4 a menudo generan salidas que no cumplen con los esquemas JSON esperados, lo que puede resultar en claves faltantes o valores de enumeración inválidos. Esto obliga a los desarrolladores a usar diversas herramientas y técnicas para asegurarse de que los datos generados sean válidos, lo cual puede ser un proceso tedioso y frustrante.

Ahora, con Structured Outputs, OpenAI ha simplificado este proceso. Esta funcionalidad asegura que las salidas generadas por sus modelos cumplan con los esquemas JSON especificados. De esta manera, los desarrolladores ya no tendrán que preocuparse por validar manualmente cada respuesta o reintentar respuestas mal formateadas.

Una de las grandes ventajas de Structured Outputs es su capacidad para manejar esquemas complicados. OpenAI ha señalado que esta nueva funcionalidad es una evolución del modo JSON que lanzaron el año pasado. Mientras que ambos modos aseguran que se produzca JSON válido, solo Structured Outputs garantiza la adherencia al esquema. Esto significa que los desarrolladores pueden estar seguros de que no faltarán claves requeridas y que los valores de enumeración serán siempre correctos.

Esta nueva funcionalidad está disponible en varios modelos de OpenAI, incluyendo GPT-4o-mini, GPT-4o y sus versiones ajustadas. También se puede usar en diversas API, como la de Chat Completions, Assistants API y Batch API. Incluso es compatible con entradas visuales, lo que amplía aún más su utilidad.

Recientemente, OpenAI presentó una nueva función en su API que ha captado la atención de los desarrolladores: Structured Outputs. Esta innovación promete resolver uno de los problemas más comunes y frustrantes al trabajar con modelos de lenguaje: asegurar que las salidas se adhieran estrictamente a los esquemas JSON definidos.

Desde que OpenAI lanzó el modo JSON en su DevDay el año pasado, los desarrolladores han podido generar salidas JSON más fiables. Sin embargo, esto no garantizaba que las respuestas de los modelos cumplieran con esquemas JSON específicos, lo cual es crucial para muchas aplicaciones que requieren consistencia y precisión en los datos.

-¿Qué son las salidas estructuradas?

Las salidas estructuradas permiten que los modelos de OpenAI generen respuestas que coincidan exactamente con los esquemas JSON proporcionados por los desarrolladores. Esto es especialmente útil cuando se trata de extraer datos estructurados de entradas no estructuradas, una tarea común en muchas aplicaciones de inteligencia artificial.

Ejemplo práctico: Imagina que tienes una aplicación que necesita extraer datos específicos de un montón de texto no estructurado, como correos electrónicos o reportes. Antes, tenías que lidiar con salidas que a menudo faltaban claves o incluían valores incorrectos. Con las salidas estructuradas, puedes definir un esquema JSON que el modelo debe seguir, asegurando que siempre obtendrás los datos en el formato correcto y sin errores.

-¿Cómo funciona y cómo usarlo?

Hay dos formas principales de utilizar las salidas estructuradas en la API de OpenAI:

  • Llamadas a funciones: Al establecer strict: true en la definición de una función, los modelos asegurarán que las salidas coincidan con la definición de la herramienta proporcionada. Esto es compatible con todos los modelos que soportan herramientas, incluyendo gpt-4-0613 y versiones posteriores.

Ejemplo: Si defines una función para consultar una base de datos y específicas que el nombre de la tabla debe ser «orders» y las columnas deben incluir «id», «status», y «delivered_at», el modelo solo generará salidas que cumplan con estos parámetros.

  • Parámetro response_format: Los desarrolladores pueden suministrar un esquema JSON a través del parámetro json_schema. Esta opción es útil cuando el modelo no está llamando a una herramienta, sino respondiendo al usuario de manera estructurada. Funciona con los modelos más recientes, como gpt-4o-2024-08-06 y gpt-4o-mini-2024-07-18.

Ejemplo: Si le pides al modelo que resuelva una ecuación matemática y le proporcionas un esquema que define cómo debe estructurarse la respuesta (por ejemplo, pasos detallados y una respuesta final), el modelo generará una salida que se ajuste exactamente a ese esquema.

-Seguridad y rechazo seguro

OpenAI ha integrado medidas de seguridad en las salidas estructuradas para asegurarse de que los modelos puedan rechazar solicitudes no seguras. Si el modelo encuentra una solicitud insegura, generará una respuesta de rechazo en lugar de intentar cumplir con el esquema proporcionado. Esto permite a los desarrolladores detectar programáticamente cuándo una solicitud ha sido rechazada y manejarla adecuadamente.

-Integración nativa con SDKs

Los SDKs de Python y Node de OpenAI ahora soportan de forma nativa las salidas estructuradas. Los desarrolladores pueden suministrar un objeto Pydantic o Zod, y los SDKs se encargarán de convertirlo a un esquema JSON compatible, deserializar la respuesta JSON en la estructura de datos tipada automáticamente y manejar los rechazos si ocurren.

-Casos de uso adicionales

Las salidas estructuradas tienen una amplia gama de aplicaciones. Algunos ejemplos incluyen

  • Generación dinámica de interfaces de usuario: Los desarrolladores pueden usar salidas estructuradas para crear aplicaciones que generen código o interfaces de usuario basadas en la intención del usuario.
  • Separación de respuestas finales y razonamiento de apoyo: Esto es útil para aplicaciones que requieren una explicación detallada junto con una respuesta final.
  • Extracción de datos estructurados de entradas no estructuradas: Ideal para tareas de entrada de datos y flujos de trabajo multietapa que permiten a los modelos de lenguaje tomar acciones específicas.

En mi opinión, este lanzamiento es un gran paso adelante para OpenAI y la comunidad de desarrolladores. La adherencia a esquemas JSON es crucial para la consistencia y fiabilidad de las aplicaciones basadas en inteligencia artificial. Con Structured Outputs, OpenAI está respondiendo directamente a una de las mayores demandas de los desarrolladores, facilitando su trabajo y mejorando la calidad de los datos generados por sus modelos.

No puedo evitar pensar en los múltiples proyectos en los que he trabajado donde esta funcionalidad habría sido un salvavidas. En más de una ocasión, me he encontrado lidiando con salidas JSON mal formateadas que requerían un sinfín de ajustes manuales y validaciones. Con Structured Outputs, todos esos problemas se podrían haber evitado

Es interesante notar que esta funcionalidad se inspira en el trabajo de la comunidad open source, tomando elementos de bibliotecas como outlines, jsonformer, instructor, guidance y lark. Esto demuestra el valor de la colaboración y cómo las innovaciones pueden surgir de la integración de múltiples ideas y enfoques.

En medio de estos emocionantes avances, OpenAI también ha vivido días agitados. Tres de sus ejecutivos clave, John Schulman, Greg Brockman y Peter Deng, han anunciado su salida, y Elon Musk ha presentado una nueva demanda contra la compañía, acusándola de traicionar su misión de inteligencia artificial. Estos eventos añaden una capa de drama y expectación a todo lo que está ocurriendo en OpenAI.

Para los desarrolladores, esta nueva funcionalidad representa una herramienta poderosa que simplificará enormemente su trabajo y garantizará la calidad de las salidas generadas por los modelos de OpenAI. Ya no tendrán que lidiar con los dolores de cabeza de las salidas JSON mal formateadas, y podrán centrarse en lo que realmente importa: crear aplicaciones innovadoras y útiles.

Así que, si eres desarrollador y estás buscando mejorar la consistencia y fiabilidad de tus datos, definitivamente deberías darle una oportunidad a Structured Outputs de OpenAI. En mi opinión, es una de esas herramientas que puede hacer una gran diferencia en tu flujo de trabajo diario.