Las Complejidades y Desafíos de Integrar LLMs en Aplicaciones

Integrating LLMs in Applications Complexities and Challenges

¿Estás planeando integrar algún servicio de LLM en tu código? Aquí tienes algunos de los desafíos comunes que debes esperar al hacerlo

Foto de Christina @ wocintechchat.com en Unsplash

Los Modelos de Lenguaje Grande (LLMs) existían antes de que se lanzaran ChatGPT y GPT API de OpenAI. Pero, gracias a los esfuerzos de OpenAI, GPT ahora es fácilmente accesible para desarrolladores y no desarrolladores. Este lanzamiento ha desempeñado sin duda un papel importante en el resurgimiento reciente de la IA.

Es realmente notable cómo rápidamente se adoptó la API de GPT de OpenAI en solo seis meses desde su lanzamiento. Prácticamente todos los servicios SaaS lo han incorporado de alguna manera para aumentar la productividad de sus usuarios.

Sin embargo, solo aquellos que han completado el diseño y la integración de tales APIs realmente entienden las complejidades y los nuevos desafíos que surgen de ello.

En los últimos meses, he implementado varias características que utilizan la API de GPT de OpenAI. A lo largo de este proceso, me he enfrentado a varios desafíos que parecen comunes para cualquier persona que utilice la API de GPT o cualquier otra API de LLM. Al enumerarlos aquí, espero ayudar a los equipos de ingeniería a prepararse y diseñar correctamente sus características basadas en LLM.

Echemos un vistazo a algunos de los obstáculos típicos.

Memoria contextual y limitaciones de contexto

Este es probablemente el desafío más común de todos. El contexto para la entrada de LLM está limitado. Recientemente, OpenAI lanzó soporte para contexto de 16K tokens y en GPT-4 la limitación de contexto puede llegar a 32K, lo que equivale a un par de páginas (por ejemplo, si deseas que el LLM funcione en un documento grande de un par de páginas). Pero hay muchos casos en los que necesitas más que eso, especialmente cuando trabajas con numerosos documentos, cada uno con decenas de páginas (imagina una empresa de tecnología legal que necesita procesar decenas de documentos legales para extraer respuestas utilizando LLM).

Existen diferentes técnicas para superar este desafío, y otras están surgiendo, pero esto significa que debes implementar una o más de estas técnicas tú mismo. Otro trabajo adicional para implementar, probar y mantener.

Enriquecimiento de datos

Es probable que las características basadas en LLM utilicen algún tipo de datos propietarios como entrada. Ya sea que estés ingresando datos de usuario como parte del contexto o utilizando otros datos o documentos recopilados que almacenas, necesitas un mecanismo sencillo que abstraiga las llamadas para obtener datos de las diversas fuentes de datos que posees.

Plantillas

La instrucción que envías al LLM contendrá texto codificado en duro y datos de otras fuentes de datos. Esto significa que crearás una plantilla estática y llenarás dinámicamente los espacios en blanco con datos que deben formar parte de la instrucción en tiempo de ejecución. En otras palabras, crearás plantillas para tus instrucciones y probablemente tendrás más de una.

Esto significa que deberías utilizar algún tipo de framework de plantillas porque seguramente no querrás que tu código parezca una concatenación de cadenas.

No es un gran desafío, pero es otra tarea que debe tenerse en cuenta.

Pruebas y ajuste fino

Lograr que el LLM alcance un nivel satisfactorio de precisión requiere muchas pruebas (a veces solo es ingeniería de instrucciones con mucha prueba y error) y ajuste fino basado en la retroalimentación del usuario.

También hay pruebas que se ejecutan como parte de la integración continua para asegurarse de que todo funcione correctamente, pero eso no es el verdadero desafío.

Cuando digo pruebas, me refiero a ejecutar la instrucción repetidamente en un entorno controlado para ajustar los resultados en cuanto a precisión.

Para las pruebas, necesitarías un método mediante el cual el ingeniero de pruebas pudiera cambiar las plantillas, enriquecerlas con los datos necesarios y ejecutar la instrucción con el LLM para comprobar que estamos obteniendo lo que queríamos. ¿Cómo configuras un marco de pruebas así?

Además, necesitamos ajustar constantemente el modelo de LLM obteniendo comentarios de nuestros usuarios con respecto a las salidas del LLM. ¿Cómo configuramos un proceso así?

Caché

Los modelos LLM, como el GPT de OpenAI, tienen un parámetro para controlar la aleatoriedad de las respuestas, lo que permite que la IA sea más creativa. Sin embargo, si estás manejando solicitudes a gran escala, incurrirás en altos cargos en las llamadas a la API, podrías alcanzar los límites de tasa y el rendimiento de tu aplicación podría degradarse. Si algunos de los datos de entrada para el LLM se repiten en diferentes llamadas, puedes considerar almacenar en caché la respuesta. Por ejemplo, si manejas cientos de miles de llamadas a tu función basada en LLM. Si todas esas llamadas desencadenan una llamada a la API del proveedor de LLM, los costos serán muy altos. Sin embargo, si los datos de entrada se repiten (esto puede ocurrir potencialmente cuando usas plantillas y las alimentas con campos de usuario específicos), existe una alta probabilidad de que puedas guardar parte de la salida preprocesada del LLM y servirla desde la caché.

El desafío aquí es construir un mecanismo de almacenamiento en caché para eso. No es difícil implementarlo; simplemente agrega otra capa y una parte móvil que debe mantenerse y hacerse correctamente.

Seguridad y Cumplimiento

La seguridad y la privacidad son quizás los aspectos más desafiantes de este proceso: ¿cómo aseguramos que el proceso creado no cause filtración de datos y cómo aseguramos que no se revele información de identificación personal (PII)?

Además, deberás auditar todas tus acciones para que se puedan examinar y asegurar que no haya habido filtración de datos o infracción de las políticas de privacidad.

Este es un desafío común para cualquier empresa de software que depende de servicios de terceros y también debe abordarse aquí.

Observabilidad

Al igual que con cualquier API externa que estés utilizando, debes monitorear su rendimiento. ¿Hay errores? ¿Cuánto tiempo lleva el procesamiento? ¿Estamos superando o a punto de superar los límites de tasa o umbrales de la API?

Además, querrás registrar todas las llamadas, no solo con fines de auditoría de seguridad, sino también para ayudarte a ajustar tu flujo de trabajo o indicaciones de LLM al calificar las salidas.

Gestión de Flujo de Trabajo

Supongamos que desarrollamos un software de tecnología legal que los abogados utilizan para aumentar la productividad. En nuestro ejemplo, tenemos una característica basada en LLM que toma los detalles de un cliente de un sistema CRM y la descripción general del caso en el que se está trabajando, y proporciona una respuesta a la consulta del abogado basada en precedentes legales.

Veamos qué se necesita hacer para lograr eso:

  1. Buscar todos los detalles del cliente basados en un ID de cliente dado.
  2. Buscar todos los detalles del caso actual en el que se está trabajando.
  3. Extraer la información relevante del caso actual en el que se está trabajando utilizando LLM, basado en la consulta del abogado.
  4. Combinar toda la información anterior en una plantilla de pregunta predefinida.
  5. Enriquecer el contexto con los numerosos casos legales. (recuerda el desafío de Memoria Contextual)
  6. Hacer que LLM encuentre los precedentes legales que mejor se ajusten al caso actual, cliente y consulta del abogado.

Ahora, imagina que tienes 2 o más características con esos flujos de trabajo, y finalmente intenta imaginar cómo se verá tu código después de implementar esos flujos de trabajo. Apuesto a que solo pensar en el trabajo que se debe hacer aquí te hace mover incómodamente en tu silla.

Para que tu código sea mantenible y legible, deberás implementar varias capas de abstracción y tal vez considerar adoptar o implementar algún tipo de marco de gestión de flujo de trabajo, si prevés más flujos de trabajo en el futuro.

Y finalmente, este ejemplo nos lleva al próximo desafío:

Acoplamiento de Código Fuerte

Ahora que eres consciente de todos los desafíos anteriores y las complejidades que surgen, es posible que empieces a ver que algunas de las tareas que deben realizarse no deberían ser responsabilidad del desarrollador.

Específicamente, todas las tareas relacionadas con la construcción de flujos de trabajo, pruebas, ajuste fino, monitoreo de resultados y uso de API externas pueden ser realizadas por alguien más dedicado a esas tareas y cuya experiencia no sea la construcción de software. Llamemos a esta persona el ingeniero de LLM.

No hay razón para que los flujos de trabajo de LLM, las pruebas, el ajuste fino, etc., sean responsabilidad del desarrollador de software: los desarrolladores de software son expertos en la construcción de software. Al mismo tiempo, los ingenieros de LLM deben ser expertos en la construcción y ajuste fino de los flujos de trabajo de LLM, no en la construcción de software.

Pero con los marcos actuales, la gestión del flujo de trabajo de LLM está acoplada al código base. Quienes construyen estos flujos de trabajo deben tener la experiencia de un desarrollador de software y un ingeniero de LLM.

Hay formas de hacer el desacoplamiento, como crear un microservicio dedicado que maneje todos los flujos de trabajo, pero este es otro desafío que debe ser abordado.

Estos fueron solo algunos de los desafíos.

No entré en cómo resolver todos estos problemas, porque todavía estoy tratando de entenderlo yo mismo. Sin embargo, puedo decir que LangChain parece ser el único marco de trabajo que de alguna manera se acerca a resolver estos problemas, lejos de resolver todos ellos, y parece estar en la dirección correcta. A medida que pasa el tiempo, creo que los proveedores de LLM mejorarán sus ofertas y proporcionarán plataformas que puedan abordar estos desafíos hasta cierto punto.

Si tienes algún desafío adicional para compartir, por favor hazlo en los comentarios en beneficio de otros lectores. Además, si conoces alguna herramienta que pueda ayudar con estos desafíos, por favor compártela también en los comentarios.

¡Espero que hayas encontrado este artículo esclarecedor! Si es así, por favor muestra tu apoyo agregando algunos aplausos y siguiéndome para más artículos sobre construcción de equipos, ingeniería de software y tecnología.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Conoce a AnomalyGPT Un nuevo enfoque de IAD basado en Modelos de Visión-Lenguaje de Gran Escala (LVLM) para detectar anomalías industriales

En varias tareas de Procesamiento del Lenguaje Natural (NLP), los Modelos de Lenguaje de Gran Tamaño (LLMs) como GPT-...

Noticias de Inteligencia Artificial

Acelere el ciclo de vida del desarrollo del chatbot de Amazon Lex con Test Workbench.

Amazon Lex se complace en anunciar Test Workbench, una nueva solución de prueba de bots que proporciona herramientas ...

Inteligencia Artificial

Las mejores herramientas de Data Warehousing en 2023

Un almacén de datos es un sistema de gestión de datos para informes, análisis y almacenamiento de datos. Es un almacé...

Inteligencia Artificial

Google Street View al rescate el aprendizaje profundo abre el camino a edificios más seguros

Imágenes como las de Google Street View están adquiriendo un nuevo propósito en manos del profesor asistente de Intel...

Inteligencia Artificial

Este artículo AI propone 'MotionDirector' Un enfoque de inteligencia artificial para personalizar el movimiento y apariencia de vídeos.

Los modelos de difusión de texto a video han avanzado significativamente en los últimos tiempos. Ahora, solo con prop...