LLM desde las trincheras: 10 lecciones aprendidas al poner en práctica los modelos en GoDaddy

Diez lecciones prácticas de GoDaddy sobre cómo llevar LLM a producción: prompts orientados a tareas, barandillas de seguridad, gestión de memoria, RAG y por qué probar es la parte más difícil.

GoDaddy ha realizado inversiones significativas en inteligencia artificial desde el lanzamiento de ChatGPT en diciembre de 2022. La empresa ha impulsado numerosos proyectos utilizando modelos de lenguaje extenso (LLM) para ayudar a clientes a crear contenido web, campañas de marketing en redes sociales, diseñar logotipos y encontrar nombres de dominio. El equipo Digital Care utiliza LLM para mejorar la experiencia del cliente en canales de mensajería como SMS, WhatsApp y web.

“GoDaddy recibe más de 60,000 contactos de clientes diariamente en nuestros canales de mensajería.” Muchas conversaciones comienzan con interacciones de bots. Aunque los experimentos iniciales demuestran que los LLM superan a las unidades de lenguaje natural más antiguas, su implementación presenta desafíos significativos.

1. A veces, una sola indicación no es suficiente

El primer experimento de Digital Care fue un Asistente de IA que clasificaba conversaciones en veinte temas de soporte. El sistema formulaba preguntas específicas para agilizar el proceso con agentes humanos. Sin embargo, conforme se añadían más temas y preguntas, surgieron problemas:

  • El tema se identificaba de manera cada vez más frecuente e inconsistente
  • El LLM formulaba preguntas no relacionadas con el tema objetivo
  • El segundo experimento buscaba ofrecer autoayuda para problemas comunes

El mensaje alcanzó más de 1,500 tokens, generando altos costos y superando límites de tokens durante conversaciones largas. La precisión disminuyó al incorporar nuevas instrucciones y contextos.

Estrategia de indicaciones orientadas a tareas: el equipo descubrió que las indicaciones enfocadas en tareas específicas (como “recoger un pedido de café”) permitían instrucciones concisas con menos tokens, mejorando la precisión y ofreciendo control sobre resultados.

Combinación de enfoques: los LLM orientados a tareas no son adecuados para conversaciones generales abiertas. Se implementaron indicaciones orientadas a tareas en transiciones clave del flujo de chat, como cuando se necesitaba transferir a un agente humano.

Arquitectura multisolicitud: inspirados en el trabajo multiagente de Salesforce, específicamente en el artículo BOLAA, el equipo desarrolló una arquitectura utilizando el patrón Controlador-Delegado. La megasolicitud actúa como controlador, transfiriendo conversaciones a solicitudes orientadas a tareas (delegados).

“Los resultados preliminares de nuestros experimentos multiagente son prometedores.” Este tipo de arquitectura de indicadores se generalizará conforme los modelos sean más precisos y disminuyan los costos.

2. Tenga cuidado con los resultados estructurados

Las respuestas de texto sin formato funcionan bien para chat, pero son menos productivas para sistemas basados en análisis de IA. Se pueden solicitar respuestas estructuradas como JSON o código, y algunos modelos incluyen capacidades integradas para esto.

Desafíos de validación: es crucial validar las respuestas generadas. Las pruebas iniciales con ChatGPT 3.5 Turbo presentaban problemas de confiabilidad. Se desarrolló un analizador personalizado para manejar patrones de fallo típicos.

Con las funciones de ChatGPT mejoró la precisión, aunque con resultados no válidos del 1% en ChatGPT 3.5 y 0.25% en ChatGPT 4.

Estrategias para mejorar confiabilidad:

  • Minimizar la temperatura del mensaje para obtener resultados más predecibles
  • Considerar modelos más avanzados (y costosos) para contenido estructurado
  • Los modelos diseñados para responder consultas presentan problemas adicionales, frecuentemente devolviendo mezclas de texto simple y formato estructurado
  • Si no hay respuestas estructuradas nativas, implementar dos indicaciones paralelas: una para la respuesta estructurada y otra para comunicarse con el usuario

3. Los mensajes no son transferibles entre modelos

Un error común es creer que un único conjunto de indicaciones funciona universalmente en diferentes modelos (Titan, LLaMa, ChatGPT) manteniendo rendimiento constante. Las pruebas de GoDaddy demostraron que incluso diferentes versiones del mismo modelo presentan diferencias notables en rendimiento.

Experimento de comparación: se compararon ChatGPT 3.5 Turbo (0603) y ChatGPT 4.0 en problemas de soporte. Inicialmente se asumió que 4.0 superaría a 3.5 Turbo. Se utilizaron indicaciones idénticas inicialmente, pero después de tres días se interrumpió debido al bajo rendimiento de 3.5, con transferencias incorrectas de clientes y diagnósticos erróneos.

Ajustes posteriores: se ajustaron las indicaciones para cada modelo, mejorando el rendimiento de 3.5. Al actualizar a versiones de noviembre (gpt-3.5-turbo-1106), la diferencia de rendimiento entre versiones se redujo notablemente incluso sin modificar indicaciones.

Conclusión: los equipos deben perfeccionar y probar continuamente las indicaciones para validar desempeño.

4. Las “barandillas” de la IA son esenciales

Un peligro inherente es que los resultados de LLM son probabilísticos. Se observaron indicaciones que funcionaban bien en miles de pruebas pero fallaban en implementación real. Un error crítico fue permitir que los modelos determinaran cuándo transferir a humanos sin opción de escape, dejando usuarios atrapados con LLM que se negaban a transferirse.

No se debe permitir que los LLM tomen ciertas decisiones, especialmente acciones sin revisión de usuarios.

Barreras de seguridad implementadas en GoDaddy:

  • Controles para detectar información personal identificable y contenido ofensivo en respuestas, mensajes de usuarios e instrucciones
  • Métodos deterministas para decidir cuándo transferir, basados en frases de parada identificadas por código, no criterio del modelo
  • Limitación del número de interacciones bot-cliente para evitar bloqueos indefinidos
  • Acciones sensibles requieren aprobación a través de canales externos al LLM
  • Cuando hay incertidumbre, intervención humana, ya que ciertas acciones suponen riesgos no justificados

5. Los modelos pueden ser lentos y poco fiables

Una lección fundamental es que los modelos pueden ser lentos e impredecibles. Se observó un promedio del 1% de fallos en completación de chats con proveedores de modelos. Aunque las empresas mejoren confiabilidad, la latencia permanece como desafío.

Velocidad observada:

  • ChatGPT 4.0 responde entre 3-5 segundos para completaciones menores a 1,000 tokens
  • El rendimiento se degrada significativamente con mayores tamaños de tokens
  • Se han documentado llamadas durando hasta 30 segundos, agotando tiempos de espera del cliente
  • ChatGPT 3.5 Turbo tiene latencia menor, pero modelos más nuevos tienden a ser más lentos

Soluciones:

  • Implementar lógica de reintento básica en llamadas a LLM mitiga la mayoría de problemas de confiabilidad
  • Realizar llamadas redundantes paralelas cuesta más pero mejora confiabilidad
  • Adoptar APIs de streaming ofrecidas por proveedores de LLM mejora la experiencia de usuario
  • Sistemas de chat son particularmente sensibles a latencia y confiabilidad

6. La gestión de la memoria es difícil

Uno de los mayores desafíos en asistentes conversacionales es gestionar el contexto del LLM. Aunque existen variantes con grandes contextos (OpenAI ofrece hasta 32,000 tokens, Anthropic Claude hasta 100,000), su uso puede ser prohibitivo. Mayor contexto no siempre es mejor, puede provocar que modelos se centren en conceptos repetidos o prioricen tokens más recientes.

Estrategias de gestión de memoria:

  • Para conversaciones cortas, conservar la conversación completa
  • Resumir prematuramente puede reducir precisión de respuestas posteriores
  • Para conversaciones largas, resumir primeras partes, rastrear entidades nombradas, conservar máxima conversación posterior
  • Eliminar resultados de herramientas (mensajes de función) después de que el modelo responda a veces mejora rendimiento
  • Conservar mensajes ha generado imprevisibilidad, incluyendo fijación en resultados

Arquitectura multiagente: considerar usar pilas para implementar memoria, proporcionando memoria de trabajo efímera para solicitudes delegadas.

La biblioteca LangChain incluye técnicas como búferes, resumen, reconocimiento de entidades, grafos de conocimiento y recuperación dinámica por relevancia mediante almacenes de vectores.

7. La selección de modelos adaptativos es el futuro

Otra lección fue la necesidad de cambiar dinámicamente los modelos para abordar confiabilidad y costos. Una interrupción de varias horas de ChatGPT dejó inoperativos los chatbots. Idealmente, se habría podido cambiar de proveedor.

Casos de uso:

  • Cambiar a modelos de contexto más alto cuando conversaciones se acercan al límite de memoria (ej: ChatGPT 3.5 Turbo 4k al contexto 32k)
  • Minimizar costos durante interrupciones de producto que causan aumento de contactos de soporte
  • Aprovechar modelos más precisos (y costosos) al atender clientes insatisfechos

Estado actual: aunque aún no implementado, ya se observa interés. Conforme maduren las implementaciones de LLM, la selección dinámica de modelos cobrará mayor importancia para mejorar eficacia y rentabilidad.

8. Utilice RAG de forma eficaz

RAG funciona recuperando información de fuentes externas, añadiendo contenido a un mensaje e invocando un LLM. Proporciona información que el modelo podría no tener en su contexto parametrizado.

Implementaciones iniciales: ejecutar consultas en cada invocación basadas en mensajes del usuario no fue satisfactorio. Se necesitan típicamente tres o cuatro mensajes para comprender problemas del cliente, ya que mensajes iniciales suelen ser amables. Recuperar documentos prematuramente disminuye precisión.

Evolución: implementaciones posteriores involucraron indicadores RAG especializados tras determinar intención conversacional, pero resultaba inflexible, requiriendo múltiples indicadores y máquinas de estado.

Agentes LLM: se aplicó el patrón conocido de Agentes LLM (con Herramientas). Un Agente LLM es una indicación asociada a un conjunto de acciones. Durante conversación, puede devolver respuesta indicando invocar una acción con parámetros (ej: getWeatherFor('90210')). El software realiza la acción y devuelve resultados como nuevo mensaje.

Dos patrones esenciales para RAG:

  1. Incluir contenido dinámico para facilitar personalización de comportamiento de indicaciones
  2. Proporcionar contenido relevante para cada conversación, permitiendo que el modelo decida cuándo generar términos de búsqueda

Usar el modelo para generar consultas de búsqueda mejoró relevancia en la Base de Conocimiento y calidad de recomendaciones.

9. Ajuste sus datos para RAG

Al implementar RAG, se aprendió a convertir conjuntos de datos a formatos más útiles para modelos. Documentos típicos contienen lenguaje complejo e información redundante. Si se lee frecuentemente, genera mayor uso de tokens y perjudica rendimiento de predicción.

Representaciones de Priming Disperso (SPR): en lugar de contenido original, se refinó mediante SPR. La idea es que el LLM resuma contenido en representación optimizada para el modelo. Se almacenan versiones SPR en almacén vectorial para RAG.

Resultados iniciales: aunque no implementado completamente, primeras pruebas son prometedoras. Se observó reducción de más del 50% en uso de tokens (aunque necesitan experimentos adicionales para determinar si el rendimiento mejoró).

Problema de similitud: gran parte de la base de conocimiento es similar. Cuando un modelo ejecuta consulta, puede devolver cientos de documentos sobre el mismo tema. Dado contexto limitado, solo algunos se usarán y probablemente serán muy similares.

Solución experimental: agrupar documentos para agrupar contenido y aplicar SPR para reducir a un solo documento. Esto mejorará rendimiento al reducir duplicación y ampliar espacio de conocimiento.

10. ¡Prueba! ¡Prueba! ¡Prueba!

La lección final es que las pruebas suelen ser más difíciles y laboriosas que crear una integración LLM. Pequeños cambios en indicaciones impactan significativamente el rendimiento. Dado que la gama de entradas en lenguaje natural es infinita, es imposible crear pruebas automatizadas más allá de las primeras interacciones.

Aproximación a pruebas automatizadas: aprovechar LLM para probar otros LLM, aunque parece prohibitivo en costos, especialmente con miles de pruebas diarias desde canalización CI.

Necesidad humana: los LLM no capturan creatividad humana, por lo que personas deben probar, revisar y supervisar constantemente sistemas de IA.

Recomendaciones:

  • Crear sistemas de informes para recopilar resultados de LLM para revisión por equipos de control de calidad
  • Trabajar en equipo multidisciplinario (desarrolladores, redactores, gerentes de producto, analistas de negocio, control de calidad)
  • Revisar transcripciones durante primeros días posteriores a lanzamientos importantes
  • Equipos multidisciplinarios detectan y solucionan problemas rápidamente

Conclusión

Los LLM son herramientas nuevas y emocionantes para mejorar experiencia del usuario, pero presentan desafíos. Una implementación cuidadosa y ajuste continuo son clave. Los desarrolladores deben:

  • Entender que se necesita más de una indicación
  • Comprender importancia de barreras de seguridad de IA
  • Gestionar memoria eficientemente
  • Usar RAG efectivamente
  • Manejar cuidadosamente resultados estructurados
  • Reconocer que indicaciones no son universalmente aplicables
  • Considerar estrategias de selección de modelos en tiempo de ejecución
  • Realizar pruebas exhaustivas y monitorización continua

“Esperamos que estos conocimientos adquiridos en GoDaddy aporten valor a quienes se embarcan en su camino hacia un LLM.”

Adaptación del artículo original de Richard Clayton, Director de Ingeniería en GoDaddy, publicado en godaddy.com/resources.

Light