¿Qué es LangChain?

Autores

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

¿Qué es LangChain?

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.

Integraciones con LLM

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.

¿Cómo funciona LangChain?

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.

Importación de modelos de lenguaje

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).

Plantillas de prompts

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.

Cadenas

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. 

Índices

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".

Cargadores de documentos

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.

Bases de datos vectoriales

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). 

Divisores de texto 

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.

Recuperació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.

Memoria

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.

Herramientas

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.

Las últimas tendencias en IA, presentadas por expertos

Obtenga conocimientos organizados sobre las noticias más importantes e intrigantes de la IA. Suscríbase a nuestro boletín semanal Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Está suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

Agentes de LangChain

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:

  • langchain_ibm: el paquete responsable de la integración de LangChain IBM. Es necesario instalar este paquete para utilizar cualquiera de las siguientes clases y métodos.
  • ibm_watsonx_ai: la biblioteca que permite la conexión a servicios de watsonx.ai como IBM Cloud e IBM® Cloud Pak for Data.
  • APIClient: la clase principal de la biblioteca ibm_watsonx_ai que gestiona los recursos del servicio API. Los parámetros incluyen las credenciales de la API y el endpoint.
  • WatsonxLLM: el contenedor para los modelos fundacionales de IBM watsonx.ai. Este contenedor proporciona integración en cadena y es necesario para importar. Los parámetros incluyen el ID del modelo, la clave de API de watsonx.ai, el endpoint, el ID del proyecto y cualquier parámetro LLM.
  • ModelInference: la clase que instancia la interfaz del modelo. Los parámetros incluyen el ID del modelo, las credenciales de watsonx.ai, el ID del proyecto, los parámetros del modelo y mucho más. Una vez instanciado, el modelo se puede pasar a la clase.
  • invoke: el método que llama directamente al modelo con una única instrucción de tipo cadena. 
  • generate: el método que llama al modelo con varias instrucciones de tipo cadena en una lista.

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

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. 

AI Academy

Por qué los modelos fundacionales son un cambio de paradigma para la IA

Conozca una nueva clase de modelos de IA flexibles y reutilizables capaces de desbloquear nuevos ingresos, reducir costes y aumentar la productividad, y utilice nuestra guía para profundizar más en el tema.

LangSmith

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. 

Introducción a LangChain

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.

Casos prácticos de LangChain

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".

Chatbots

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.

Resumen

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.

Respuesta a preguntas

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.

Aumento de datos

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.

Agentes virtuales

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.

Soluciones relacionadas
Modelos fundacionales

Explore la biblioteca de modelos fundacionales de IBM en la cartera de watsonx para escalar la IA generativa para su negocio con confianza.

Descubra watsonx.ai
Soluciones de inteligencia artificial

Ponga la IA a trabajar en su negocio con la experiencia líder en IA del sector de IBM y junto a su cartera de soluciones.

Explore las soluciones de IA
Consultoría y servicios de IA

Reinvente las operaciones y flujos de trabajo críticos añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.

Explore los servicios de IA
Dé el siguiente paso

Explore la biblioteca de modelos fundacionales de IBM en la cartera de IBM watsonx para escalar la IA generativa para su negocio con confianza.

Explore watsonx.ai Explore las soluciones de IA