6 puntos por xguru 2024-12-03 | Aún no hay comentarios. | Compartir por WhatsApp
  • A inicios de 2023, LinkedIn comenzó a lanzar un portafolio de productos que aprovechaban funcionalidades de GenAI
  • Los primeros productos de GenAI empezaron con un simple "entrada de prompt, salida de texto" y evolucionaron hacia experiencias de agentes conversacionales con soporte de memoria de contexto
  • Mediante la construcción de un stack tecnológico para aplicaciones GenAI, implementaron un enfoque que mantiene el equilibrio entre el time-to-market y el apalancamiento a largo plazo

Genesis and Evolution

  • Era necesario construir un framework que proporcionara mecanismos estándar para tareas comunes
  • Como la mayor parte del stack de serving online de LinkedIn estaba programado en Java, al principio comenzaron con un midtier compartido en Java
  • A medida que crecieron los casos de uso, este midtier se convirtió en un cuello de botella de desarrollo y operación, por lo que lo dividieron en varios servicios midtier en Java específicos por caso de uso
  • Los ingenieros de IA prefieren Python para flujos de trabajo offline basados en LLM, prompt engineering y evaluación
  • A corto plazo decidieron mantener stacks online y offline fragmentados, pero a largo plazo optaron por usar Python también para el serving online
  • Construyeron un framework de Python para serving online basado en el proyecto open source LangChain
  • Iniciaron proyectos para habilitar soporte en Python para dependencias clave de infraestructura, con énfasis en Python
  • Actualmente, el framework de aplicaciones GenAI es un wrapper delgado construido sobre LangChain

Gestión de prompts

  • El prompt engineering es el mecanismo principal para "programar" un LLM
  • Al principio usaban interpolación manual de strings en el código, pero era propensa a errores y no escalaba
  • Introdujeron un componente Prompt Source of Truth y estandarizaron el uso del lenguaje de plantillas Jinja
  • Reescribieron la librería de resolución de prompts de Java a Python
  • A medida que surgieron las UI conversacionales, se necesitó más estructura para los roles humano y de IA dentro de la conversación
  • Finalmente convergieron en la API OpenAI Chat Completions

Automatización de tareas mediante skills

  • Extendieron la abstracción de skills a las aplicaciones GenAI y la usaron como mecanismo de automatización de tareas
  • Al inicio, se construyó con código personalizado que envolvía APIs internas y externas de LinkedIn usando esquemas JSON amigables para LLM
  • Surgieron problemas como implementaciones duplicadas de skills, cambios en skills downstream y especificación manual de skills por parte de los desarrolladores
  • Introdujeron el concepto de Skill Inversion para que los sistemas downstream definan las skills y las expongan a las aplicaciones que las invocan
  • Simplificaron los procesos de acceso, desarrollo y operación de skills con un servicio centralizado de registro de skills, plugins de build y herramientas dinámicas de LangChain
  • Están evolucionando gradualmente el stack tecnológico para crear abstracciones de skills para todas las APIs, permitiendo que los LLM interactúen sin fricción

Conciencia de contexto y personalización

  • Como los LLM son stateless por naturaleza, es difícil lograr conciencia de contexto y personalización
  • Al principio usaban Couchbase o Espresso DB como almacenamiento, y cada equipo se encargaba de la configuración de la base de datos, escritura/lectura, etc.
  • Como la ventana de contexto de los LLM es limitada, surgió la necesidad de búsqueda semántica (usando embeddings) y capacidades de resumen
  • Construyeron una infraestructura de memoria conversacional aprovechando el stack de mensajería de LinkedIn
  • Introdujeron el concepto de Experiential Memory, derivado de la experiencia de interacción entre usuario y aplicación
  • Lo integraron en el framework de aplicaciones GenAI para que los desarrolladores pudieran usarlo sin fricciones

Inferencia de modelos y fine-tuning

  • Al principio solo usaban LLM provistos por el servicio Azure OpenAI
  • LLM como Llama, ajustados finamente para tareas específicas de LinkedIn, mostraron una calidad similar o superior a la de modelos comerciales
  • Están trabajando para que la experiencia de desarrollo de aplicaciones sea transparente entre modelos externos e internos
  • La capa de inferencia expone la API OpenAI Chat Completions para todos los LLM
  • Mediante hooks de configuración del framework de aplicaciones, se puede cambiar fácilmente entre modelos on-premises y externos

Migración

  • Es importante migrar rápidamente de soluciones heredadas personalizadas a soluciones estandarizadas
  • Un equipo pequeño y ágil, formado por ingenieros con conocimiento profundo del stack Java y del nuevo stack, se encargó de la migración
  • Usaron un enfoque gradual para migrar los componentes individuales uno por uno
  • Empezaron con apps simples y pequeñas, y luego avanzaron hacia apps complejas y grandes
  • Emparejaron ingenieros senior con nuevos desarrolladores Python para que aprendieran Python en el trabajo

Reflexiones finales

  • El nuevo stack tecnológico de aplicaciones GenAI adopta un desarrollo AI-first y establece una base sólida para construir apps GenAI de manera eficiente y responsable
  • Desempeñará un papel importante para lograr la visión de brindar oportunidades económicas a todos los miembros de la fuerza laboral global
  • Aún quedan muchos desafíos por resolver
  • A medida que la frontera de la experiencia de producto se desplaza de asistentes conversacionales a agentes de IA, están aumentando rápidamente nuevos requisitos funcionales y operativos. También planean compartir más sobre esto más adelante

Aún no hay comentarios.

Aún no hay comentarios.