LangChain es un marco de orquestación de código abierto para el desarrollo de aplicaciones utilizando modelos de lenguaje de gran tamaño (LLM). Disponibles en bibliotecas basadas en Python y Javascript, las herramientas y API de LangChain simplifican el proceso de creación de aplicaciones basadas en LLM, como chatbots y agentes de IA.
LangChain sirve como interfaz genérica para casi cualquier LLM, proporcionando un entorno de desarrollo centralizado para crear aplicaciones LLM e integrarlas con fuentes de datos externas y flujos de trabajo de software. El enfoque basado en el módulo de LangChain permite a los desarrolladores y expertos en datos comparar de forma dinámica diferentes instrucciones e incluso distintos modelos fundacionales con una necesidad mínima de reescribir código. Este entorno modular también permite a los programas utilizar varios LLM: por ejemplo, una aplicación que usa uno para interpretar las consultas de los usuarios y otro para redactar una respuesta.
Lanzado por Harrison Chase en octubre de 2022, LangChain disfrutó de un ascenso meteórico: en junio de 2023, era el único proyecto de código abierto de más rápido crecimiento en Github1 Coincidiendo con el trascendental lanzamiento de ChatGPT de OpenAI el mes siguiente, LangChain ha desempeñado un papel importante a la hora de hacer que la IA generativa (IA gen) sea más accesible para entusiastas y startups a raíz de su amplia popularidad. Los avances en accesibilidad para la IA agéntica están permitiendo actualmente una revolución en la automatización.
LangChain puede facilitar la mayoría de los casos de uso de LLM y procesamiento del lenguaje natural (PLN), como chatbots, búsqueda inteligente, respuesta a preguntas, servicios de resumen o incluso agentes de IA capaces de automatizar procesos robóticos.
Los LLM no son aplicaciones independientes: son modelos estadísticos preentrenados que deben combinarse con una aplicación (y, en algunos casos, fuentes de datos específicas) para cumplir con su propósito.
Por ejemplo, ChatGPT no es un LLM: es una aplicación de chatbot que, dependiendo de la versión elegida, utiliza el modelo de lenguaje GPT-3.5 o GPT-4. Mientras que es el modelo GPT el que interpreta la entrada del usuario y compone una respuesta en lenguaje natural, es la aplicación la que (entre otras cosas) proporciona una interfaz para que el usuario escriba y lea y un diseño de experiencia de usuario que rige la experiencia del chatbot. Incluso a nivel empresarial, Chat-GPT no es la única aplicación que utiliza el modelo GPT: Microsoft utiliza GPT-4 para potenciar Bing Chat.
Además, aunque los modelos fundacionales (como los que impulsan los LLM) están preentrenados en conjuntos de datos masivos, no son omniscientes. Si una tarea en particular requiere acceso a información contextual específica, como documentación interna o experiencia en el dominio, los LLM deben estar conectados a esas fuentes de datos externas. Incluso si simplemente quiere que su modelo refleje la conciencia en tiempo real de los eventos actuales, requiere información externa: los datos internos de un modelo solo están actualizados durante el periodo de tiempo durante el cual se entrenó previamente.
Del mismo modo, si una tarea de IA generativa determinada requiere acceso a flujos de trabajo de software externos (por ejemplo, si desea que su agente virtual se integre con Slack), necesitará una forma de integrar el LLM con la API de ese software.
Aunque estas integraciones generalmente se pueden lograr con código totalmente manual, los marcos de orquestación como LangChain y el portfolio de productos de inteligencia artificial de IBM watsonx simplifican enormemente el proceso. También facilitan mucho la experimentación con distintos LLM para comparar resultados, puesto que se pueden intercambiar diferentes modelos con cambios mínimos en el código.
El núcleo de LangChain es un entorno de desarrollo que racionaliza la programación de aplicaciones LLM mediante el uso de abstracción: la simplificación del código representando uno o más procesos complejos como un componente con nombre que encapsula todos sus pasos constituyentes.
Las abstracciones son un elemento común de la vida cotidiana y del lenguaje. Por ejemplo, "π" nos permite representar la relación entre la longitud de la circunferencia de un círculo y la de su diámetro sin tener que escribir sus infinitos dígitos. Del mismo modo, un termostato nos permite controlar la temperatura de nuestra casa sin necesidad de entender los complejos circuitos que esto implica; solo necesitamos saber cómo los diferentes ajustes del termostato se traducen en diferentes temperaturas.
LangChain es esencialmente una biblioteca de abstracciones para Python y Javascript, que representa los pasos y conceptos comunes necesarios para trabajar con modelos de lenguaje. Estos componentes modulares, como las funciones y las clases de objetos, sirven como bloques de construcción de los programas de IA generativa. Se pueden "encadenar" entre sí para crear aplicaciones, minimizando la cantidad de código y la comprensión precisa necesarios para ejecutar tareas complejas de PLN. Aunque el enfoque abstracto de LangChain puede limitar la medida en que un programador experto puede personalizar con precisión una aplicación, permite tanto a los especialistas como a los recién llegados experimentar y crear prototipos rápidamente.
Casi cualquier LLM se puede utilizar en LangChain. La importación de modelos de lenguaje a LangChain es sencilla, siempre que tenga una clave API. La clase LLM está diseñada para proporcionar una interfaz estándar para todos los modelos.
La mayoría de los proveedores de LLM requerirán que crees una cuenta para recibir una clave API. Algunas de estas API, en particular las de modelos de código cerrado propios, como las que ofrecen OpenAI o Anthropic, pueden tener costes asociados.
Se puede acceder a muchos modelos de código abierto, como LLaMa de Meta AI, Deepseek-LLM de Deepseek,Granite de IBM y Flan-T5 de Google, a través de Hugging Face. IBM® watsonx, a través de su asociación con Hugging Face, también ofrece un conjunto organizado de modelos de código abierto. La creación de una cuenta en cualquiera de los dos servicios le permitirá generar una clave API para cualquiera de los modelos ofrecidos por ese proveedor.
LangChain no se limita a modelos fundacionales listos para usar: la clase CustomLLM permite envoltorios de LLM personalizados. Del mismo modo, puede utilizar las API de IBM watsonx y el SDK de Python, que incluye una integración de LangChain, para crear aplicaciones en LangChain con modelos que ya ha entrenado o ajustado para sus necesidades específicas utilizando la clase WatsonxLLM (y el ID de proyecto específico de ese modelo).
Las instrucciones son las instrucciones proporcionadas a un LLM. El "arte" de crear instrucciones que proporcionen eficazmente el contexto necesario para que el LLM interprete la entrada y estructure el resultado de la manera más útil para usted a menudo se denomina prompt engineering.
La clase PromptTemplate de LangChain formaliza la composición de prompts sin necesidad de codificar manualmente el contexto y las consultas. Los elementos importantes de un prompt también se introducen como clases formales, como input_variables. Así, una plantilla de prompt puede contener y reproducir el contexto, instrucciones (como "no utilice términos técnicos"), un conjunto de ejemplos para guiar sus respuestas (en lo que se denomina "few-shot prompting"), un formato de salida especificado o una pregunta estandarizada a la que responder. Puede guardar y asignar un nombre a una plantilla de prompt estructurada y reutilizarla fácilmente según sea necesario.
Aunque todos estos elementos se pueden codificar manualmente, los módulos PromptTemplate permiten una integración fluida con otras características de LangChain, como las cadenas epónimas.
Como su nombre indica, las cadenas son el núcleo de los flujos de trabajo de LangChain. Combinan LLM con otros componentes, creando aplicaciones ejecutando una secuencia de funciones.
La cadena más básica es LLMChain. Simplemente llama a un modelo y a una plantilla de instrucciones para ese modelo. Por ejemplo, imagine que guardó una instrucción como "ExamplePrompt" y desea ejecutarla en Flan-T5. Puede importar LLMChain desde langchain.chains y, a continuación, defina chain_example = LLMChain(llm = flan-t5, prompt = ExamplePrompt). Para ejecutar la cadena para una entrada determinada, tan solo llame a chain_example.run ("input").
Para utilizar la salida de una función como entrada para la siguiente función, puede utilizar SimpleSequentialChain. Cada función puede utilizar diferentes instrucciones, diferentes herramientas, diferentes parámetros o incluso diferentes modelos, según sus necesidades específicas.
Para realizar ciertas tareas, los LLM necesitarán acceso a fuentes de datos externas específicas no incluidas en su conjunto de datos de entrenamiento, como documentos internos, correos electrónicos o conjuntos de datos. LangChain hace referencia colectivamente a dicha documentación externa como "índices".
LangChain ofrece una amplia variedad de cargadores de documentos para aplicaciones de terceros (enlace externo a ibm.com). Esto permite importar fácilmente datos de fuentes como servicios de almacenamiento de archivos (como Dropbox, Google Drive y Microsoft OneDrive), contenido web (como YouTube, PubMed o URL específicas), herramientas de colaboración (como Airtable, Trello, Figma y Notion), bases de datos (como Pandas, MongoDB y Microsoft) y mucho más.
A diferencia de las bases de datos estructuradas "tradicionales", las bases de datos vectoriales representan puntos de datos convirtiéndolos en incrustaciones vectoriales: representaciones numéricas en forma de vectores con un número fijo de dimensiones, a menudo agrupando puntos de datos relacionados mediante métodos de aprendizaje no supervisado. Esto permite consultas de baja latencia, incluso para conjuntos de datos masivos, lo que aumenta considerablemente la eficiencia. Las incrustaciones vectoriales también almacenan los metadatos de cada vector, lo que mejora aún más las posibilidades de búsqueda.
LangChain proporciona integraciones para más de 25 métodos de incrustación diferentes, así como para más de 50 almacenes de vectores diferentes (tanto alojados en la nube como locales).
Para aumentar la velocidad y reducir las demandas computacionales, a menudo es aconsejable dividir los documentos de texto grandes en trozos más pequeños. Los TextSplitters de LangChain dividen el texto en pequeños fragmentos semánticamente significativos que luego se pueden combinar utilizando los métodos y parámetros de su elección.
Una vez conectadas las fuentes externas de conocimiento, el modelo debe poder recuperar e integrar rápidamente información relevante según sea necesario. Al igual que watsonx, LangChain ofrece generación aumentada por recuperación (RAG): sus módulos de recuperación aceptan una consulta de cadena como entrada y devuelven una lista de Document como resultado.
Con LangChain, también podemos crear sistemas de RAG agéntica. En las aplicaciones RAG tradicionales, el LLM cuenta con una base de datos vectorial para referenciar al formar sus respuestas. Por el contrario, las aplicaciones de IA agéntica no se limitan únicamente a la recuperación de datos. La RAG agéntica también puede abarcar herramientas para tareas como resolver cálculos matemáticos, escribir correos electrónicos, realizar análisis de datos y más.
Los LLM, de forma predeterminada, no tienen memoria a largo plazo de interacciones anteriores (a menos que ese historial de chat se utilice como entrada para una consulta). LangChain resuelve este problema con utilidades simples para agregar memoria a un sistema, con opciones que van desde retener la totalidad de todas las conversaciones hasta retener un resumen de la conversación hasta el momento y retener los n intercambios más recientes.
A pesar de su anunciada potencia y versatilidad, los LLM tienen importantes limitaciones: a saber, falta de información actualizada, falta de conocimientos específicos del ámbito y dificultad general con las matemáticas.
Las herramientas de LangChain son un conjunto de funciones que permiten a los agentes de LangChain interactuar con información del mundo real para ampliar o mejorar los servicios que puede proporcionar. Algunos ejemplos de herramientas LangChain prediseñadas destacadas son:
Wolfram Alpha: proporciona acceso a potentes funciones computacionales y de visualización de datos, lo que permite capacidades matemáticas sofisticadas.
Google Search: proporciona acceso a Google Search, equipando a las aplicaciones y agentes con información en tiempo real.
OpenWeatherMap: obtiene información meteorológica.
Wikipedia: proporciona un acceso eficiente a la información de los artículos de Wikipedia.
Podemos crear un agente con el marco LangChain para dar a un LLM la capacidad de tomar decisiones, utilizar herramientas y completar tareas complejas paso a paso, en lugar de limitarse a generar una única respuesta de texto. A diferencia de una simple interacción de instrucción-respuesta con solo un LLM, un agente impulsado por LangChain puede pensar, planificar, ejecutar una secuencia de acciones, aprender y adaptarse.
LangChain proporciona una experiencia de usuario optimizada con un marco extensible y listo para crear agentes de IA, por lo que no es necesario crear una nueva lógica de selección de herramientas, bucles de razonamiento (como para los agentes ReAct), seguimiento de observación/acción u orquestación y formato de instrucciones.
Los paquetes, clases y métodos específicos de LangChain varían según la plataforma de IA que pretenda utilizar. Algunos componentes clave de la clase watsonxLLM que permiten la comunicación con los modelos watsonx.ai mediante LangChain incluyen:
Otra clase de LangChain para crear agentes de IA con la integración de llamadas a herramientas y encadenamiento con modelos watsonx.ai es ChatWatsonx. Esta clase, que se utiliza en muchos de nuestros tutoriales, utiliza el método bind_tools para pasar una lista de herramientas al LLM en cada iteración. Estos pueden incluir herramientas personalizadas y prediseñadas. Para recuperar la respuesta del agente de IA, se puede utilizar el método invoke. Una vez invocado el agente, el atributo tool_calls de la respuesta muestra el nombre, los argumentos, el id y el tipo de cada llamada a la herramienta realizada, si corresponde.
LangGraph, creado por LangChain, es un marco de agentes de IA de código abierto que admite la orquestación de múltiples agentes y permite a los desarrolladores crear flujos de trabajo agénticos en los que diferentes agentes interactúan, se especializan y colaboran.
En esencia, LangGraph utiliza el poder de las arquitecturas basadas en gráficos para modelar y gestionar las intrincadas relaciones entre varios componentes de un flujo de trabajo de agente de IA. Combinado con el mecanismo de monitorización human-in-the-loop y un conjunto de integraciones de API y herramientas, LangGraph proporciona a los usuarios una plataforma versátil para desarrollar soluciones de IA y flujos de trabajo que incluyen chatbots, gráficos de estado y otros sistemas basados en agentes.
Con la biblioteca langchain-mcp-adapters,los agentes LangGraph también pueden utilizar herramientas definidas en servidores de protocolo de contexto de modelo (MCP). La biblioteca mcp también permite a los usuarios crear servidores MCP personalizados. Básicamente, MCP permite una conexión segura entre un sistema de IA, como un agente de IA, y herramientas externas. Por lo tanto, varios LLM pueden conectarse a las mismas herramientas y fuentes de datos dado el MCP estándar.
Lanzado en otoño de 2023, LangSmith tiene como objetivo cerrar la brecha entre las capacidades de creación de prototipos accesibles que llevaron a LangChain a la prominencia y la creación de aplicaciones LLM de calidad de producción.
LangSmith proporciona herramientas para monitorizar, evaluar y depurar aplicaciones, incluida la capacidad de rastrear automáticamente todas las llamadas al modelo para detectar errores y probar el rendimiento en diferentes configuraciones de modelo. El uso de LangSmith no se limita a las aplicaciones creadas con el ecosistema LangChain. La evaluación del rendimiento de los agentes se realiza utilizando evaluadores LLM como juez. Esta observabilidad y estas métricas clave tienen como objetivo optimizar aplicaciones más sólidas y rentables.
LangChain es de código abierto y de uso gratuito: el código fuente está disponible para descargar en Github.
LangChain también se puede instalar en Python con un simple comando pip: pip install langchain. Para instalar todas las dependencias de LangChain (en lugar de solo las necesarias), puede ejecutar el comando pip install langchain[all].
IBM ofrece muchos tutoriales paso a paso, como llamadas a herramientas LangChain, RAG agéntica, orquestación de agentes LLM, fragmentación agéntica y mucho más.
Las aplicaciones de IA creadas con LangChain son muy útiles para una amplia variedad de casos de uso, desde tareas sencillas de respuesta a preguntas y generación de texto hasta soluciones más complejas que utilizan un LLM como "motor de razonamiento".
Los chatbots se encuentran entre los usos más intuitivos de los LLM. LangChain se puede utilizar para proporcionar el contexto adecuado para el uso específico de un chatbot y para integrar chatbots en los canales de comunicación y flujos de trabajo existentes con sus propias API.
Los modelos de lenguaje pueden encargarse de resumir muchos tipos de texto, desde desglosar artículos académicos complejos y transcripciones hasta proporcionar un resumen de los correos electrónicos entrantes.
Utilizando documentos específicos o bases de conocimiento especializadas (como Wolfram, arXiv o PubMed), los LLM pueden recuperar información relevante del almacenamiento y articular respuestas útiles). Si se ajustan con precisión o se les solicita correctamente, algunos LLM pueden responder a muchas preguntas incluso sin información externa.
Los LLM se pueden utilizar para generar datos sintéticos para su uso en el machine learning. Por ejemplo, un LLM se puede entrenar para generar muestras de datos adicionales que se parezcan mucho a los puntos de datos de un conjunto de datos de entrenamiento.
Integrados con los flujos de trabajo adecuados, los módulos Agent de LangChain pueden utilizar un LLM para determinar de forma autónoma los próximos pasos y tomar medidas mediante automatización de procesos robóticos.