A medida que creas instrucciones para aplicaciones reales, surge una compensación clave: equilibrar la brevedad con la eficacia. Cuando todos los factores son iguales, una instrucción concisa es más rápida, económica y fácil de mantener que una más larga. Esto es especialmente relevante en entornos web en los que la latencia y los límites de tokens son importantes. Sin embargo, si tu instrucción es demasiado breve, es posible que el modelo no tenga el contexto, las instrucciones o los ejemplos necesarios para producir resultados de alta calidad.
El desarrollo basado en la evaluación (EDD) te permite supervisar y optimizar sistemáticamente esta compensación. Ofrece un proceso repetible y verificable para mejorar los resultados en pasos pequeños y seguros, detectar regresiones y alinear el comportamiento del modelo con las expectativas de los usuarios y del producto a lo largo del tiempo.
Piensa en ello como desarrollo basado en pruebas (TDD), adaptado a la incertidumbre de la IA. A diferencia de las pruebas de unidades determinísticas, las evaluaciones de IA no se pueden codificar de forma rígida porque los resultados, tanto los bien formados como los que fallan, pueden adoptar formas imprevistas.
La EDD también respalda tus esfuerzos de descubrimiento. Al igual que escribir pruebas ayuda a aclarar el comportamiento de una función, definir criterios de evaluación y revisar los resultados del modelo te obliga a enfrentar la falta de claridad y a agregar gradualmente más detalles y estructura a las tareas abiertas o desconocidas.
Define el problema
Puedes plantear tu problema como un contrato de API, incluido el tipo de entrada, el formato de salida y cualquier restricción adicional. Por ejemplo:
- Tipo de entrada: Borrador de entrada de blog
- Formato de salida: Array JSON con 3 títulos de publicaciones
- Restricciones: Menos de 128 caracteres y tono amigable
Luego, recopila ejemplos de entradas. Para garantizar la diversidad de los datos, debes incluir ejemplos ideales y entradas reales y desordenadas. Piensa en las variaciones y los casos extremos, como las publicaciones con emojis, la estructura anidada y muchos fragmentos de código.
Inicializa un modelo de referencia
Escribe tu primera instrucción. Puedes comenzar con cero disparos y agregar lo siguiente:
- Instrucción clara
- Formato de salida
- Marcador de posición para la variable de entrada
Aumentas la complejidad y trabajas con otros componentes y técnicas de instrucciones avanzadas cuando evalúas y optimizas. Primero, debemos configurar un sistema de evaluación para dirigir el esfuerzo de optimización en la dirección correcta.
Crea tu sistema de evaluación
En el TDD, comienzas a escribir pruebas una vez que conoces los requisitos. Con la IA generativa, no hay resultados definitivos con los que realizar pruebas, por lo que debes esforzarte más en crear tu ciclo de evaluación.
Es probable que necesites varias herramientas de medición para realizar una evaluación eficaz.
Define tus métricas de evaluación.
Las métricas de evaluación pueden ser determinísticas. Por ejemplo, puedes verificar si el modelo devuelve un JSON válido o si genera la cantidad correcta de elementos.
Sin embargo, gran parte de tu tiempo debe dedicarse a identificar y definir métricas subjetivas o cualitativas, como la claridad, la utilidad, el tono o la creatividad. Es posible que comiences con objetivos generales, pero rápidamente te encuentres con problemas más matizados.
Por ejemplo, supongamos que tu generador de títulos usa en exceso ciertas frases o patrones, lo que genera resultados repetitivos y robóticos. En ese caso, definirías nuevas métricas para fomentar la variación y desalentar el uso excesivo de estructuras o palabras clave. Con el tiempo, tus métricas principales se estabilizarán y podrás hacer un seguimiento de las mejoras.
Este proceso puede beneficiarse de expertos que comprendan cómo se ve un buen modelo en el dominio de tu aplicación y puedan detectar modos de falla sutiles. Por ejemplo, si desarrollas un asistente de escritura, trabaja en conjunto con un productor o editor de contenido para asegurarte de que tu evaluación se alinee con su visión del mundo.
Elige a tus jueces
Los diferentes criterios de evaluación requieren diferentes evaluadores:
- Las verificaciones basadas en código funcionan bien para los resultados determinísticos o basados en reglas. Por ejemplo, puedes analizar los títulos para detectar palabras que quieras evitar, verificar el recuento de caracteres o validar la estructura JSON. Son rápidos, repetibles y perfectos para elementos de IU de salida fija, como botones o campos de formulario.
- Los comentarios de personas son fundamentales para evaluar cualidades más subjetivas, como el tono, la claridad o la utilidad. Especialmente al principio, revisar los resultados del modelo por tu cuenta (o con expertos en el dominio) permite una rápida iteración. Sin embargo, este enfoque no se adapta bien. Una vez que lances tu aplicación, también podrás recopilar indicadores en la aplicación, como una calificación con estrellas, pero estos suelen ser ruidosos y carecen del matiz necesario para una optimización precisa.
- LLM-as-judge ofrece una forma escalable de evaluar criterios subjetivos utilizando otro modelo de IA para calificar o criticar los resultados. Es más rápido que la revisión humana, pero no está exento de inconvenientes: en una implementación ingenua, puede perpetuar e incluso reforzar los sesgos y las brechas de conocimiento del modelo.
Prioriza la calidad por sobre la cantidad. En el aprendizaje automático clásico y la IA predictiva, es una práctica común la anotación de datos a través de la colaboración colectiva. En el caso de la IA generativa, los anotadores que provienen de la colaboración colectiva suelen carecer de contexto del dominio. La evaluación de alta calidad y rica en contexto es más importante que la escala.
Evalúa y optimiza
Cuanto más rápido puedas probar y definir tus instrucciones, más pronto llegarás a algo que se alinee con las expectativas de los usuarios. Debes adquirir el hábito de la optimización continua. Intenta una mejora, evalúa y prueba otra cosa.
Una vez que esté en producción, sigue observando y evaluando el comportamiento de tus usuarios y tu sistema de IA. Luego, analiza y transforma estos datos en pasos de optimización.
Automatiza tu canalización de evaluación
Para reducir la fricción en tus esfuerzos de optimización, necesitas una infraestructura operativa que automatice la evaluación, haga un seguimiento de los cambios y conecte el desarrollo con la producción. Esto se conoce comúnmente como LLMOps. Si bien existen plataformas que pueden ayudarte con la automatización, debes diseñar tu flujo de trabajo ideal antes de comprometerte con una solución de terceros.
Estos son algunos componentes clave que debes tener en cuenta:
- Control de versiones: Almacena instrucciones, métricas de evaluación y entradas de prueba en el control de versiones. Trátalos como código para garantizar la reproducibilidad y un historial de cambios claro.
- Evaluaciones por lotes automatizadas: Usa flujos de trabajo (como GitHub Actions) para ejecutar evaluaciones en cada actualización de instrucciones y generar informes de comparación.
- CI/CD para instrucciones: Implementa puertas de lanzamiento con verificaciones automatizadas, como pruebas determinísticas, puntuaciones de LLM como juez o medidas de protección, y bloquea las combinaciones cuando la calidad disminuye.
- Registro y observabilidad de producción: Captura entradas, salidas, errores, latencia y uso de tokens. Supervisa si hay desvíos, patrones inesperados o picos en las fallas.
- Ingesta de comentarios: Recopila indicadores de los usuarios (Me gusta, reescrituras, abandonos) y convierte los problemas recurrentes en casos de prueba nuevos.
- Seguimiento de experimentos: Realiza un seguimiento de las versiones de instrucciones, las configuraciones de modelos y los resultados de la evaluación.
Realiza iteraciones con cambios pequeños y específicos
Por lo general, el perfeccionamiento de instrucciones comienza con la mejora del lenguaje de la instrucción. Esto podría significar hacer que las instrucciones sean más específicas, aclarar la intención o eliminar ambigüedades.
Ten cuidado de no sobreajustar el modelo. Un error común es agregar reglas demasiado específicas para corregir problemas del modelo de parche. Por ejemplo, si tu generador de títulos sigue produciendo títulos que comienzan con La guía definitiva, puede ser tentador prohibir explícitamente esta frase. En su lugar, abstrae el problema y ajusta la instrucción de nivel superior. Esto podría significar que enfatizas la originalidad, la variedad o un estilo editorial específico, de modo que el modelo aprenda la preferencia subyacente en lugar de una sola excepción.
Otra opción es experimentar con más técnicas de instrucciones y combinar estos esfuerzos. Cuando elijas una técnica, pregúntate: ¿Esta tarea se resuelve mejor por analogía (aprendizaje con pocos ejemplos), razonamiento paso a paso (cadena de pensamiento) o perfeccionamiento iterativo (autorreflexión)?
Cuando tu sistema entre en producción, el ciclo de EDD no debería ralentizarse. De hecho, debería acelerarse. Si tu sistema procesa y registra la entrada del usuario, esta debería convertirse en tu fuente de estadísticas más valiosa. Agrega patrones recurrentes a tu conjunto de evaluación y, luego, identifica e implementa de forma continua los próximos mejores pasos de optimización.
Tus conclusiones
El desarrollo de instrucciones basado en la evaluación te brinda una forma estructurada de abordar la incertidumbre de la IA. Si defines tu problema con claridad, creas un sistema de evaluación personalizado y realizas iteraciones a través de pequeñas mejoras específicas, crearás un ciclo de retroalimentación que mejorará constantemente los resultados del modelo.
Recursos
Estas son algunas lecturas recomendadas si deseas implementar el LLM como juez:
- Compara la capacidad del LLM con la función de resumen.
- Lee la guía de Hamel Husain para usar LLM como juez.
- Lee el informe: A Survey on LLM-as-a-Judge.
Si te interesa mejorar aún más tus instrucciones, obtén más información sobre el desarrollo basado en el contexto. Lo ideal es que lo haga un ingeniero de aprendizaje automático.
Verifica tus conocimientos
¿Cuál es el objetivo principal del desarrollo basado en la evaluación?
¿Por qué usar modelos más grandes para evaluar un sistema del cliente?
¿Cuál es una posible dificultad de usar un LLM como juez para la evaluación?
¿Qué componente forma parte de una canalización de evaluación automatizada recomendada?
Cuando eliges jueces para tu sistema de evaluación, ¿cuál es la principal limitación de usar comentarios humanos?