24 puntos por xguru 2024-12-03 | Aún no hay comentarios. | Compartir por WhatsApp
  • Para asegurar salidas precisas y adecuadas de los LLM, es esencial un diseño de prompts sofisticado
  • El diseño de prompts permite que incluso usuarios no familiarizados con el machine learning controlen la salida del modelo con una sobrecarga mínima
  • Uber desarrolló un toolkit centralizado para experimentar e iterar rápidamente con LLM
    • Creación y gestión de plantillas de prompts
    • Uso de RAG y datasets en tiempo de ejecución
  • Funciones:
    • Soporte para instrucciones del sistema, contextualización dinámica, generación masiva offline (inferencia de LLM) y evaluación de respuestas
    • Control de versiones, colaboración y verificación de seguridad (incluye verificación de alucinaciones, framework estándar de evaluación y políticas de seguridad)

Ciclo de vida de la ingeniería de prompts

El ciclo de vida de la ingeniería de prompts se compone de dos etapas:

  • Etapa de desarrollo: consta de tres fases: exploración de LLM, iteración de plantillas de prompts y evaluación
    • Fase de exploración de LLM: explorar los LLM disponibles a través del catálogo de modelos y GenAI Playground, y probar respuestas del LLM con prompts
    • Fase de iteración de plantillas de prompts: identificar requisitos específicos del negocio, recopilar datos de muestra, crear/analizar/probar prompts, evaluar respuestas y ajustarlas según sea necesario. Con auto-prompting, no hace falta crear una plantilla de prompt desde cero
    • Fase de evaluación: probar la plantilla de prompt con un dataset más grande para medir el rendimiento. Se puede evaluar el desempeño usando al LLM como juez o con evaluadores de LLM personalizados basados en código
  • Etapa de producción (Productionization): solo las plantillas de prompts que superan el umbral en la etapa de evaluación pasan a producción. Se hace seguimiento/monitoreo de su uso en producción y se recopilan datos de uso del sistema para mejorar el proceso

Arquitectura

  • UI/SDK de plantillas de prompts: gestión de plantillas de prompts y revisiones. Integración con GetAPI y Execute API
  • Catálogo de modelos LLM: interfaz con los modelos LLM desplegados
  • Los modelos y prompts se almacenan en ETCD y UCS, y se usan en el pipeline de generación offline y en el pipeline de evaluación de plantillas de prompts

Creación de plantillas de prompts

  • El prompt builder del toolkit de prompts genera prompts automáticamente para el usuario
  • Ayuda a descubrir técnicas avanzadas de prompting adaptadas a casos de uso específicos de IA
  • El prompt builder automático, basado en el framework interno Langfx construido sobre LangChain, sigue estos pasos
    • 1. Integrar mejores prácticas de ingeniería de prompts
    • 2. Proporcionar instrucciones detalladas de listado de plantillas y algunos ejemplos para ayudar con la creación de prompts
    • 3. Usar un modelo LLM para apoyar la generación de prompts
  • Lineamientos avanzados de prompting: el prompt builder genera prompts usando los siguientes principios
    • Prompting CoT (Chain of Thought): habilita capacidades de razonamiento complejo mediante pasos de razonamiento intermedios
    • Auto-CoT: usa la frase guía "think step by step". Para eliminar el esfuerzo manual, utiliza el prompt "Let's think step by step" en el LLM
    • Encadenamiento de prompts: se puede usar en escenarios que incluyen varias tareas o transformaciones
    • ToT (Tree of Thought): generaliza el prompting chain-of-thought y fomenta la exploración de ideas que pueden servir como pasos intermedios para la resolución general de problemas con modelos de lenguaje
    • APE (Automatic Prompt Engineering): framework para automatizar la generación y selección de instrucciones
    • Prompting CoT multimodal: integra texto e imágenes en un framework de dos etapas. La primera genera fundamentos basados en información multimodal y la segunda infiere la respuesta usando esos fundamentos generados
  • Gestión de revisiones
    • La iteración de plantillas de prompts sigue mejores prácticas de iteración basada en código
    • Para probar respuestas y testear con datasets, el usuario puede modificar instrucciones y parámetros del modelo
    • Cada iteración de una plantilla de prompt requiere revisión de código. Una vez aprobada e integrada, se crea una nueva revisión de la plantilla de prompt

Evaluación de plantillas de prompts

Para evaluar el rendimiento de las plantillas de prompts, colaboran varios componentes:

  • Dos mecanismos de evaluación
    • Usar al LLM como evaluador. Es útil para tareas donde importan la calidad subjetiva o los matices del lenguaje
    • Evaluar el rendimiento usando código personalizado del usuario. Es útil para medir aspectos específicos del desempeño
  • Plantilla de prompt de evaluación: plantilla fácil de usar que proporciona instrucciones para la evaluación, ejemplos simples, métricas, formato de respuesta, etc.
  • Plantilla de prompt real: plantilla usada en producción. Se hidrata en tiempo de ejecución y se usa para evaluar el rendimiento
  • Opciones de dataset de entrada: dataset golden etiquetado o dataset derivado del tráfico de producción
  • Cada plantilla se evalúa considerando instrucciones específicas, contexto, modelos relacionados y parámetros

Casos de uso en Uber

Servicio LLM offline

El pipeline de generación offline por lotes de LLM facilita la inferencia por lotes para generar respuestas de LLM a gran escala:

  • Puede usarse para el caso de validación de nombres de usuario de consumidores
  • En MA Studio, solo hay que seleccionar e ingresar el dataset relacionado
  • La plantilla de prompt se hidrata dinámicamente con el dataset

Servicio LLM online

Las plantillas de prompts incluyen placeholders dinámicos que deben sustituirse por valores específicos en tiempo de ejecución:

  • Actualmente, usando sintaxis de plantillas basada en Jinja, solo se admite sustitución de tipo string
  • Soporta capacidad de fan-out entre prompt, plantilla y modelo
    • Plantilla: la plantilla de API incluye la capacidad de formatear el payload expuesto desde el modelo de datos general hacia una estructura de API específica del proveedor
    • Prompt y modelo: el prompt queda fijado a un modelo y plantilla específicos. El servicio obtiene el prompt y ejecuta la llamada a la genAI API con el modelo requerido y los parámetros de plantilla necesarios

Exploración de estas funciones con un caso de uso de resumen:

  • En un escenario donde varios agentes pueden manejar un ticket de soporte (contact), un agente nuevo debe revisar el ticket para entender el contexto o pedir al cliente que vuelva a explicar el problema
  • Esto se resuelve proporcionando un resumen al momento del traspaso entre agentes

Monitoreo

El monitoreo mide el rendimiento de las plantillas de prompts de producción usadas en producción:

  • Un pipeline diario de monitoreo de rendimiento ejecuta evaluaciones de desempeño sobre el tráfico de producción
  • Monitorea métricas por iteración en producción de la plantilla de prompt, como latencia, exactitud y precisión
  • El dashboard de MES se actualiza diariamente con métricas de monitoreo de rendimiento

Conclusión

El toolkit de ingeniería de prompts de Uber es un framework integral para mejorar la interacción con los LLM y su aprovechamiento en distintas etapas de desarrollo y producción:

  • Soporta desde la exploración inicial de capacidades de los LLM en Gen AI Playground hasta la iteración y creación detallada de plantillas de prompts
  • La arquitectura del toolkit ofrece un enfoque sistemático para el diseño de prompts al integrar técnicas avanzadas de lineamientos y métodos sólidos de evaluación
  • El ciclo de vida estructurado, desde el desarrollo de plantillas de prompts hasta su uso y monitoreo en producción, garantiza que cada plantilla sea probada rigurosamente y optimizada para el rendimiento
  • En el futuro, planean integrar evaluación online y RAG para evaluación, además de RAG para generación offline

Aún no hay comentarios.

Aún no hay comentarios.