banner
Hogar / Blog / Una breve guía de LangChain para desarrolladores de software
Blog

Una breve guía de LangChain para desarrolladores de software

Aug 31, 2023Aug 31, 2023

Por Janakiram MSV

InfoMundo |

Si usted es un desarrollador de software que se esfuerza por mantenerse al día con los últimos rumores sobre grandes modelos de lenguaje, puede sentirse abrumado o confundido, como me pasó a mí. Parece que todos los días vemos el lanzamiento de un nuevo modelo de código abierto o el anuncio de una nueva característica importante por parte de un proveedor de modelos comerciales.

Los LLM se están convirtiendo rápidamente en una parte integral del software moderno. Sin embargo, ya sea que desee consumir un modelo de API ofrecido por un proveedor como OpenAI o integrar un modelo de código abierto en su aplicación, crear aplicaciones basadas en LLM implica algo más que simplemente enviar un mensaje y esperar una respuesta. Hay numerosos elementos a considerar, que van desde ajustar los parámetros hasta aumentar el mensaje y moderar la respuesta.

Los LLM no tienen estado, lo que significa que no recuerdan los mensajes anteriores de la conversación. Es responsabilidad del desarrollador mantener el historial y alimentar el contexto al LLM. Es posible que estas conversaciones deban almacenarse en una base de datos persistente para recuperar el contexto de una nueva conversación. Por lo tanto, agregar memoria a corto y largo plazo a los LLM es una de las responsabilidades clave de los desarrolladores.

El otro desafío es que no existe una regla única para todos los LLM. Es posible que deba utilizar varios modelos especializados para diferentes escenarios, como análisis de sentimientos, clasificación, respuesta a preguntas y resumen. Lidiar con varios LLM es complejo y requiere bastante trabajo.

LangChain es un SDK diseñado para simplificar la integración de LLM y aplicaciones. Resuelve la mayoría de los desafíos que discutimos anteriormente. LangChain es similar a un controlador ODBC o JDBC, que abstrae la base de datos subyacente permitiéndole centrarse en declaraciones SQL estándar. LangChain abstrae los detalles de implementación de los LLM subyacentes al exponer una API simple y unificada. Esta API facilita a los desarrolladores el intercambio de modelos sin cambios significativos en el código.

LangChain apareció casi al mismo tiempo que ChatGPT. Harrison Chase, su creador, asumió el primer compromiso a finales de octubre de 2022, justo antes de que la ola LLM golpeara con toda su fuerza. La comunidad ha contribuido activamente desde entonces, haciendo de LangChain una de las mejores herramientas para interactuar con los LLM.

LangChain es un marco poderoso que se integra con herramientas externas para formar un ecosistema. Entendamos cómo orquesta el flujo necesario para obtener el resultado deseado de un LLM.

Las aplicaciones necesitan recuperar datos de fuentes externas, como archivos PDF, páginas web, CSV y bases de datos relacionales, para crear el contexto para el LLM. LangChain se integra perfectamente con módulos que pueden acceder y recuperar datos de fuentes dispares.

Los datos recuperados de algunas de las fuentes externas deben convertirse en vectores. Esto se hace pasando el texto a un modelo de incrustación de palabras asociado con el LLM. Por ejemplo, el modelo GPT-3.5 de OpenAI tiene un modelo de incrustación de palabras asociado que debe usarse para enviar el contexto. LangChain elige el mejor modelo de integración según el LLM elegido, eliminando las conjeturas al emparejar los modelos.

Las incrustaciones generadas se almacenan en una base de datos vectorial para realizar una búsqueda de similitud. LangChain facilita el almacenamiento y la recuperación de vectores de diversas fuentes, desde matrices en memoria hasta bases de datos de vectores alojadas como Pinecone.

LangChain admite los LLM convencionales ofrecidos por OpenAI, Cohere y AI21 y los LLM de código abierto disponibles en Hugging Face. La lista de modelos compatibles y puntos finales API está creciendo rápidamente.

El flujo anterior representa el núcleo del marco LangChain. Las aplicaciones en la parte superior de la pila interactúan con uno de los módulos LangChain a través del SDK de Python o JavaScript. Entendamos el papel de estos módulos.

El módulo Model I/O se ocupa de la interacción con el LLM. Básicamente, ayuda a crear indicaciones efectivas, invocar la API del modelo y analizar el resultado. LangChain maneja bien la ingeniería rápida, que es el núcleo de la IA generativa. Este módulo resume la autenticación, los parámetros API y el punto final expuestos por los proveedores de LLM. Finalmente, puede analizar la respuesta enviada por el modelo en el formato deseado que la aplicación pueda consumir.

Piense en el módulo de conexión de datos como el canal ETL de su aplicación LLM. Se trata de cargar documentos externos, como archivos PDF o Excel, convertirlos en fragmentos para procesarlos en incrustaciones de palabras en lotes, almacenar las incrustaciones en una base de datos vectorial y, finalmente, recuperarlas mediante consultas. Como comentamos anteriormente, este es el componente más importante de LangChain.

En muchos sentidos, interactuar con LLM es como usar canalizaciones de Unix. La salida de un módulo se envía como entrada al otro. A menudo debemos confiar en el LLM para aclarar y destilar la respuesta hasta obtener el resultado deseado. Las cadenas en LangChain están diseñadas para construir canales eficientes que aprovechen los componentes básicos y los LLM para obtener la respuesta esperada. Una cadena simple puede tener un mensaje y un LLM, pero también es posible crear cadenas muy complejas que invoquen el LLM varias veces, como la recursividad, para lograr un resultado. Por ejemplo, una cadena puede incluir un mensaje para resumir un documento y luego realizar un análisis de opinión sobre el mismo.

Los LLM no tienen estado, pero necesitan contexto para responder con precisión. El módulo de memoria de LangChain facilita la adición de memoria a corto y largo plazo a los modelos. La memoria a corto plazo mantiene la historia de una conversación mediante un mecanismo sencillo. El historial de mensajes se puede conservar en fuentes externas como Redis, lo que representa la memoria a largo plazo.

LangChain proporciona a los desarrolladores un sistema de devolución de llamadas que les permite conectarse a las distintas etapas de una aplicación LLM. Esto es útil para registrar, monitorear, transmitir y otras tareas. Es posible escribir controladores de devolución de llamada personalizados que se invocan cuando ocurre un evento específico dentro de la canalización. La devolución de llamada predeterminada de LangChain apunta a stdout, que simplemente imprime la salida de cada etapa en la consola.

Agents es, con diferencia, el módulo más potente de LangChain. Los LLM son capaces de razonar y actuar, lo que se denomina técnica de indicaciones ReAct. Los agentes de LangChain simplifican la elaboración de mensajes de ReAct que utilizan el LLM para sintetizar el mensaje en un plan de acción. Se puede considerar a los agentes como cadenas dinámicas. La idea básica detrás de los agentes es utilizar un LLM para seleccionar un conjunto de acciones. Una secuencia de acciones está codificada en cadenas (en código). Un modelo de lenguaje se utiliza como motor de razonamiento en los agentes para determinar qué acciones realizar y en qué orden.

LangChain se está convirtiendo rápidamente en el componente más importante de las aplicaciones impulsadas por GenAI. Gracias a su próspero ecosistema, que se expande continuamente, puede admitir una amplia variedad de componentes básicos. La compatibilidad con LLM comerciales y de código abierto, bases de datos vectoriales, fuentes de datos e incrustaciones hace de LangChain una herramienta indispensable para los desarrolladores.

El objetivo de este artículo era presentar LangChain a los desarrolladores. En el próximo artículo de esta serie, usaremos LangChain con la API PaLM 2 de Google. Manténganse al tanto.

A continuación lee esto:

Copyright © 2023 IDG Communications, Inc.

A continuación lee esto: