11 puntos por GN⁺ 2024-08-07 | 2 comentarios | Compartir por WhatsApp
  • Se introduce "Structured Outputs" en la API
    • Una nueva función que hace que la salida del modelo coincida exactamente con el esquema JSON proporcionado por el desarrollador
    • El año pasado, en DevDay, se presentó el modo JSON, pero no garantizaba respuestas ajustadas a un esquema específico
    • Las salidas estructuradas restringen la salida del modelo para que se ajuste al esquema proporcionado por el desarrollador y entrenan al modelo para comprender mejor esquemas complejos
  • Necesidad de las salidas estructuradas
    • Generar datos estructurados a partir de entradas no estructuradas es uno de los casos de uso clave de la IA
    • Con la API de OpenAI se pueden realizar diversas tareas, como recuperación de datos, respuesta a preguntas, extracción de datos y construcción de flujos de trabajo de varios pasos
    • Antes era necesario recurrir a herramientas de código abierto, prompts, reintentos, etc., para intentar ajustar la salida del modelo a un formato interoperable con los sistemas
    • Las salidas estructuradas resuelven este problema al limitar la salida del modelo según el esquema proporcionado por el desarrollador
  • Evaluación de rendimiento
    • En una evaluación de seguimiento de esquemas JSON complejos, el modelo gpt-4o-2024-08-06 obtuvo una puntuación de 100%
    • El modelo gpt-4-0613 obtuvo una puntuación inferior al 40%
  • Cómo usar las salidas estructuradas
    • Salidas estructuradas mediante function calling: configurar strict: true dentro de la definición de la función
      • Disponible en modelos que admiten herramientas
  • Salidas estructuradas seguras
    • Cumplen con las políticas de seguridad existentes de OpenAI
    • El modelo puede rechazar solicitudes inseguras
    • La respuesta de la API incluye un valor de cadena de rechazo, lo que permite detectar de forma programática si el modelo generó un rechazo
  • Soporte nativo en SDK
    • Los SDK de Python y Node admiten salidas estructuradas de forma nativa
    • Es posible proporcionar objetos de Pydantic o Zod para convertirlos a esquemas JSON y serializar y analizar automáticamente las respuestas JSON
  • Limitaciones
    • Solo se admite una parte de JSON Schema
    • Puede haber latencia adicional en la primera respuesta de la API con un esquema nuevo
    • El modelo puede rechazar solicitudes inseguras
    • No es compatible con llamadas de función en paralelo
    • Las salidas estructuradas no están cubiertas por Zero Data Retention (ZDR)
  • Disponibilidad
    • Las salidas estructuradas están disponibles de forma general en la API
    • Las salidas estructuradas mediante function calling están disponibles en todos los modelos que admiten function calling
    • La opción de formato de respuesta está disponible en los modelos más recientes

Resumen de GN⁺

  • La nueva función de OpenAI, salidas estructuradas, permite que la salida del modelo coincida exactamente con un esquema JSON
  • Con esto, los desarrolladores pueden realizar con mayor confiabilidad tareas como recuperación de datos, respuesta a preguntas y extracción de datos
  • Tiene soporte nativo en los SDK de Python y Node, lo que facilita el desarrollo
  • También existen varios casos de uso adicionales, como extraer datos estructurados de datos no estructurados
  • Usa técnicas de decodificación restringida para limitar la salida del modelo y generar únicamente JSON válido

2 comentarios

 
bluejoyq 2024-08-08

Qué función tan interesante.

 
GN⁺ 2024-08-07
Comentarios en Hacker News
  • Se usa GPT-4o para construir UI dinámicas y código

    • Funciona de manera confiable usando el modo JSON
    • En GPT-4o-mini ayudará a resolver problemas de formato
    • En el modo de llamada de funciones la tasa de éxito es menor que en el modo JSON
    • Hay mucha expectativa por esta función
  • Cambios principales de gpt-4o-2024-08-06

    • Los tokens de salida aumentaron de 4k a 16k
    • El costo de entrada bajó 50% y el de salida 33%
    • Es un cambio importante para los usuarios de la API
  • Experiencia usando Outlines Structured Output de vLLM

    • Ofrece funciones más avanzadas que Structured Output de OpenAI
    • Soporte limitado para tipos de campo
      • OpenAI solo soporta tipos básicos como String, Number y Boolean
      • Outlines puede definir patrones con expresiones regulares
    • Alto costo de configuración del esquema y latencia
      • vLLM y Outlines casi no tienen costo
      • OpenAI tarda en generar una gramática sin contexto
    • Es un buen comienzo como primer paso de OpenAI, pero necesita evolucionar más
  • Opiniones sobre el rendimiento de la IA

    • Hacer que la IA especifique el formato de salida es una forma vieja de resolver problemas
    • El procesamiento de lenguaje natural y la capacidad de resolver problemas han avanzado de forma sorprendente
    • Pero se necesita una cantidad enorme de cómputo para obtener este resultado
  • Opiniones sobre el enfoque de OpenAI

    • Abandonó el enfoque de ajuste fino para salidas estructuradas
    • llama.cpp ya había implementado esta función hace 1.5 años
  • Confusión sobre la opción strict: true

    • Como siempre es el comportamiento deseado, debería ser el valor predeterminado
    • Aprendizaje sobre técnicas de decodificación restringida
      • Pueden aumentar la confiabilidad y reducir la latencia
  • Opinión de que hardcodear JSON en el modelo va en dirección opuesta al objetivo de AGI

  • Preocupación por el efecto de bloqueo al usar funciones de OpenAI

    • No es fácil migrar a otros LLM
    • Se recomienda usarlo solo cuando un prompt de texto no sea suficiente
  • Observación sobre errores de formato JSON

    • {“val{“:2} es un JSON válido
  • Duda sobre por qué el nivel superior debe ser un objeto

    • Resulta incómodo tener que envolver un arreglo dentro de un objeto