Esta es la cuarta parte de una serie en curso. Ver partes 1, 2 y 3.
Esta es la cuarta parte de una serie en curso. Ver partes 1, 2 y 3.
AI Principle IV: Use Structured Prompt Outputs
Principio IV: Utilización de salidas prompt estructuradasHubo un tiempo, hace mucho, mucho tiempo, cuando las APIs de LLM acababan de salir y nadie todavía sabía con certeza cómo interactuar correctamente con ellos. Uno de los principales problemas era extraer múltiples puestos de salida de una sola respuesta prompt. Cuando los LLM no devolvían consistentemente JSON (y fallaban a menudo), intentó persuadir al LLM a cooperar usando su mejor oratorio de ingeniería prompt.
Aquellos eran tiempos antiguos. En aquel entonces, viajábamos a caballo y escribíamos prompts por luz de velas, ya que la electricidad aún no se había inventado. Las prompts de debugging significaban largas noches que pasaban agitando en rollos de pergamino, esperando que el modelo devolviese una lista en lugar de un haiku. Y si fallaba, no tenías otra opción que susurrar profundamente, sumergir tu quill en tinta, y intentar de nuevo.
Pero las APIs de LLM que no podían devolver consistentemente una respuesta JSON eran una cosa real y causaron un montón de problemas.
Benefits
Beneficios¿Por qué es mejor usar las salidas de solicitud estructuradas en JSON en lugar de otros formatos o inventar un formato personalizado?
Reduced Error Rate
Los LLM modernos están ajustados a la salida de JSON válido cuando se solicita, es raro que falten incluso con respuestas muy complejas. Además, muchas plataformas tienen protecciones a nivel de software contra las salidas de formato incorrecto. Por ejemplo, la API OpenAI lanza una excepción cuando se devuelve un no-JSON cuando se encuentra en modo estricto de salida estructurada.
Si usa un formato personalizado para devolver varias variables de salida, no se beneficiará de este ajuste fino, y la tasa de error será mucho mayor.
Decoupled Prompts and Code
Con una salida JSON, es trivial agregar otro campo de salida, y hacerlo no debería romper su código existente. Esto desacopla la adición de campos a la solicitud de cambios a la lógica de procesamiento de código.
Simplified System
¿Hay una razón práctica para usar un formato de salida sin soporte de plataforma integrado? sería más fácil para usted y los colaboradores de código posteriores formatar respuestas usando JSON.
When NOT to Use Structured Output
Cuándo no utilizar la salida estructuradaSingle Field Output
Si su prompt emite un campo único en respuesta, no hay beneficios para emitir un JSON.
Las respuestas de una variable hoy pueden convertirse en respuestas complejas mañana.Después de pasar horas convirtiendo una solicitud de salida de campo en muchas solicitudes de salida de campo, ahora uso JSON por defecto incluso cuando solo se devuelve un campo.
Incluso cuando la lógica del programa no requiere múltiples salidas, hay ventajas de ingeniería instantánea y depuración al agregar campos adicionales.Añadir un campo que proporcione una explicación para una respuesta (o cita una fuente en la documentación) a menudo puede mejorar significativamente el rendimiento instantáneo (
Por lo tanto, incluso si su prompt tiene una única variable de salida, considere el formato JSON como una opción.
Streaming Response
Para aplicaciones en las que la latencia es crítica, a menudo se utilizan los puntos finales de transmisión de LLM. Estos permiten que se actúen partes de la respuesta antes de que se reciba la respuesta entera. Este patrón no funciona bien con JSON, por lo que debe utilizar un formato simple y amigable con la transmisión.
Por ejemplo, si su prompt decide la acción tomada por un personaje de un videojuego y las palabras que dice el personaje, puede codificarlo como "ACTION ÁthaSPEECH_TO_READ" y luego transmitir la respuesta con una API de transmisión, como:
Ejemplo de salida:
WAVE_AT_HERO|Hello, Adventurer! Welcome to my shop. |
---|
Tan pronto como se recibe la acción, el personaje comienza a vibrar, y el texto es de salida a medida que fluye.
Conclusion
ConclusiónNo rechace los beneficios de la civilización - utilice las salidas prompt estructuradas en JSON. Casi no hay desventajas y hará que su vida sea mucho más fácil ya que los LLM están altamente optimizados para devolver respuestas JSON válidas. Considere utilizar una salida JSON incluso si los datos extraídos son actualmente un campo único. Para los puntos finales de streaming, utilice líneas JSON o un formato personalizado simple.
Si te ha gustado este post, suscríbete a la serie para más.