Inicio topics LangChain ¿Qué es LangChain?
Descubra watsonx.ai
Ilustración de una cadena hecha de números y letras
¿Qué es LangChain?

LangChain es un marco de orquestación de código abierto para el desarrollo de aplicaciones que utilizan 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 impulsadas por LLM, como chatbots y agentes virtuales. 

LangChain funciona como una 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 módulos de LangChain permite a los desarrolladores y científicos de datos comparar de manera dinámica diferentes cuadros de instrucciones e incluso diferentes modelos fundacionales con mínima necesidad de reescribir el código. Este entorno modular también permite incluir programas que usan varios LLM: por ejemplo, una aplicación que usa un LLM para interpretar las consultas de los usuarios y otro LLM para crear una respuesta. 

Creada por Harrison Chase en octubre de 2022, LangChain disfrutó de un meteórico ascenso hacia un lugar de protagonismo: en junio de 2023, era el proyecto de código abierto de crecimiento más rápido en Github.1 Coincidiendo con el trascendental lanzamiento de ChatGPT de OpenAI al mes siguiente, LangChain ha desempeñado un papel importante en hacer que la IA generativa sea más accesible para los entusiastas a raíz de su gran popularidad. 

LangChain puede facilitar la mayoría de los casos de uso de LLM y procesamiento de lenguaje natural (PLN), como chatbots, búsqueda inteligente, respuesta a preguntas, servicios de resumen o incluso agentes virtuales capaces de automatizar procesos robóticos.

Integraciones con LLM

Los LLM no son aplicaciones independientes: son modelos estadísticos previamente entrenados que deben vincularse con una aplicación (y, en algunos casos, con fuentes de datos específicas) para cumplir su propósito. 

Por ejemplo, Chat-GPT no es un LLM: es una aplicación de chatbot que, dependiendo de la versión que se haya elegido, utiliza el modelo de lenguaje GPT-3.5 o GPT-4. Aunque es el modelo GPT que interpreta la información ingresada por el usuario y compone una respuesta en lenguaje natural, la aplicación es la que (entre otras cosas) proporciona una interfaz para que el usuario escriba y lea y un diseño UX 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 impulsar Bing Chat. 

Además, aunque los modelos fundacionales (como los que impulsan los LLM) están previamente entrenados con 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 determinada área, los LLM deben estar conectados a esas fuentes de datos externas. Incluso si solo quiere que su modelo refleje en tiempo real el conocimiento de los acontecimientos actuales, necesita información externa: los datos internos de un modelo solo están actualizados durante el periodo de tiempo en el que se realizó el entrenamiento. 

Del mismo modo, si una tarea generativa de IA determinada requiere acceso a flujos de trabajo de software externos, por ejemplo, si desea que su agente virtual se integre con Slack , entonces necesitará una forma de integrar el LLM con la API para ese software. 

Si bien estas integraciones generalmente se pueden lograr con programación manual, los marcos de orquestación como LangChain y la plataforma IBM watsonx simplifican enormemente el proceso. También facilitan mucho la experimentación con distintos LLM para comparar resultados, ya que se pueden intercambiar diferentes modelos con cambios mínimos en el código.  

Open Source @ IBM

Desde blockchain hasta los contenedores, pasando por la inteligencia artificial y los sistemas operativos, nuestros desarrolladores crean proyectos emergentes de código abierto y los rodean de códigos, documentación y material de respaldo, para que pueda unirse a la innovación.

Contenido relacionado

Suscríbase a los boletines de IBM

¿Cómo funciona LangChain?

En el núcleo de LangChain se encuentra un entorno de desarrollo que optimiza la programación de aplicaciones LLM mediante el uso de la abstracción, es decir, la simplificación del código mediante la representación de uno o más procesos complejos como un componente con un nombre asignado que encapsula todos sus pasos.

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 una cantidad infinita de dígitos. Del mismo modo, un termostato nos permite controlar la temperatura en nuestro hogar sin necesidad de entender la compleja red de circuitos que conlleva; solo necesitamos saber cómo se traducen los diferentes ajustes del termostato 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 lingüísticos. 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 que, tanto los especialistas como los usuarios sin conocimiento previo, puedan experimentar y crear prototipos de forma rápida.

Importar modelos de lenguaje

Prácticamente cualquier LLM se puede utilizar en LangChain. Importar modelos de lenguaje a LangChain es fácil, 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 la creación de una cuenta para recibir una clave API. Algunas de estas API, en particular las de modelos de código cerrado patentados, como las que ofrecen OpenAI o Anthropic, pueden tener costos asociados.

Se puede acceder a muchos modelos de código abierto, como BLOOM de BigScience, LLaMa de Meta AI y Flan-T5 de Google, a través de Hugging Face (enlace externo a ibm.com). IBM watsonx, a través de su asociación con Hugging Face, también ofrece un conjunto seleccionado de modelos de código abierto. Crear una cuenta con cualquiera de los servicios le permitirá generar una clave API para cualquiera de los modelos ofrecidos por ese proveedor.

LangChain no se limita a los modelos fundacionales listos para usar: la clase CustomLLM (enlace externo a ibm.com) permite el uso de envoltorios 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).

Explore la demostración: uso de watsonx y LangChain para realizar una serie de llamadas a un modelo de lenguaje
Plantillas de instrucciones

Las instrucciones son las indicaciones que se dan a un LLM. El "arte" de componer instrucciones que proporcionen de manera eficaz el contexto necesario para que el LLM interprete la entrada y estructure la salida de la forma más útil para usted se denomina habitualmente ingeniería de instrucciones. 

La clase PromptTemplate en LangChain formaliza la composición de las instrucciones sin necesidad de programar de forma manual el contexto y las consultas. Los elementos importantes de una instrucción también se ingresan como clases formales, por ejemplo input_variables. Por lo tanto, una plantilla de instrucciones puede contener y reproducir contexto, indicaciones (por ejemplo, “no usar términos técnicos”), un conjunto de ejemplos para guiar las respuestas (en lo que se denomina “few-shot prompting”), un formato de salida especificado o una pregunta estandarizada a responder.  Puede guardar y nombrar una plantilla de instrucciones estructurada de manera efectiva y reutilizarla fácilmente según sea necesario.

Aunque todos estos elementos se pueden programar de forma manual, los módulos PromptTemplate permiten una integración fluida con otras características de LangChain, como las cadenas de epónimos.

Vea el video: ingeniería y ajuste de instrucciones
Cadenas

Como su nombre lo indica, las cadenas son el núcleo de los flujos de trabajo de LangChain. Combinan los LLM con otros componentes, creando aplicaciones mediante la ejecución de 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 ejecutarlo en Flan-T5. Puede importar LLMChain desde langchain.chains, luego defina chain_example = LLMChain(llm = flan-t5, solicitud = EjemploPrompt). Para ejecutar la cadena para una entrada determinada, simplemente llame a chain_example.run(“input”).

Para usar la salida de una función como entrada para la siguiente función, puede usar SimpleSequentialChain. Cada función podría utilizar diferentes instrucciones, diferentes herramientas, diferentes parámetros o incluso diferentes modelos, dependiendo de sus necesidades específicas. 

Índices

Para realizar ciertas tareas, los LLM necesitarán acceso a fuentes de datos externas específicas, que no están incluidas en su conjunto de datos de entrenamiento, por ejemplo, documentos internos, correos electrónicos o conjuntos de datos. En LangChain, la documentación externa se denomina colectivamente “í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 con facilidad datos de fuentes como servicios de almacenamiento de archivos (por ejemplo, Dropbox, Google Drive y Microsoft OneDrive), contenido web (como YouTube, PubMed o URL específicas), herramientas de colaboración (por ejemplo, Airtable, Trello, Figma y Notion), bases de datos (como Pandas, MongoDB y Microsoft), entre muchas otras. 

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 incorporaciones vectoriales: representaciones numéricas en forma de vectores con un número fijo de dimensiones, que a menudo agrupan puntos de datos relacionados utilizando métodos de aprendizaje no supervisados. Esto permite las consultas de baja latencia, incluso para conjuntos de datos masivos, lo que aumenta considerablemente la eficiencia. Las incorporaciones 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 incorporación diferentes, así como para más de 50 tiendas vectoriales diferentes (tanto alojadas en la nube como locales). 

Divisores de texto 
Para aumentar la velocidad y reducir las demandas computacionales, a menudo se aconseja dividir los documentos de texto grande en partes más pequeñas. Los TextSplitters de LangChain dividen el texto en pequeños fragmentos con significado semántico que luego se pueden combinar utilizando los métodos y parámetros que elija.

Recuperación 
Una vez que se han conectado las fuentes externas de conocimiento, el modelo debe ser capaz de recuperar e integrar rápidamente la información pertinente según sea necesario. Al igual que Watsonx, LangChain ofrece generación aumentada de recuperación (RAG): sus módulos de recuperación aceptan una consulta de cadena como entrada y devuelven una lista de documentoscomo salida.

Memoria

Los LLM, de forma predeterminada, no tienen memoria a largo plazo de las conversaciones anteriores (a menos que el 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, retener un resumen de la conversación hasta ese momento y retener los n intercambios más recientes.

Agentes

Los agentes de LangChain pueden usar un modelo de lenguaje determinado como un "motor de razonamiento" para determinar qué acciones tomar. Al crear una cadena para un agente, las entradas incluyen:

  • Una lista de herramientas disponibles para utilizar.
  • Entrada del usuario (por ejemplo, instrucciones y consultas).
  • Cualquier paso pertinente que se haya ejecutado previamente.
Más información sobre los agentes en LangChain
Herramientas

A pesar de su verdadero poder y versatilidad, los LLM tienen limitaciones importantes, a saber: la falta de información actualizada, la falta de experiencia específica del campo y una dificultad general con matemáticas. 

Las herramientas de LangChain (enlace externo a ibm.com) son un conjunto de funciones que permiten a los agentes de LangChain interactuar con información del mundo real, con el fin de ampliar o mejorar los servicios que puede proporcionar. Algunos ejemplos de herramientas destacadas de LangChain son:

  • Wolfram Alpha: proporciona acceso a potentes funciones computacionales y de visualización de datos, lo que permite capacidades matemáticas sofisticadas.

  • Google Search: ofrece acceso a Google Search, dotando a las aplicaciones y agentes de 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.

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 ocupar una posición de protagonismo y la creación de aplicaciones LLM de calidad de producción.

LangSmith proporciona herramientas para monitorear, evaluar y depurar aplicaciones, lo que incluye la capacidad de rastrear de forma automática todas las llamadas al modelo para detectar errores y probar el rendimiento en diferentes configuraciones del modelo. Esta visibilidad tiene como objetivo potenciar aplicaciones más robustas y rentables.

Primeros pasos con LangChain

LangChain es de código abierto y de uso gratuito: el código fuente está se puede descargar de Github (enlace externo a ibm.com). 

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 que considere necesarias), puede ejecutar el comando pip install langchain[all].

En el ecosistema de la comunidad de LangChain existen muchos tutoriales detallados y la documentación oficial se puede consultar en docs.langchain.com (enlace externo a ibm.com).

Casos de uso de LangChain

Las aplicaciones creadas con LangChain brindan una gran utilidad para una 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 lingüísticos 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: con documentos específicos o bases de conocimientos especializadas (como Wolfram, arXiv o PubMed), los LLM pueden recuperar la información pertinente de la información almacenada y articular respuestas útiles). Si se ajusta de forma precisa o se dan las instrucciones adecuadas, algunos LLM pueden responder muchas preguntas, incluso sin información externa.
  • Aumento de datos: los LLM se pueden utilizar para generar datos sintéticos para utilizarlos en el aprendizaje automático.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 del agente de LangChain pueden usar un LLM para determinar de forma autónoma los próximos pasos y tomar medidas mediante la automatización robótica de procesos (RPA).
Soluciones relacionadas
watsonx.ai

Entrene, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de aprendizaje automático con facilidad, y cree aplicaciones de IA en una fracción del tiempo con un fragmento de los datos.

Explore watsonx.ai

Servicios de consultoría de IA

Reimagine su forma de trabajar con IA: nuestro equipo global y diverso de más de 20 000 expertos puede ayudarle a diseñar y escalar la IA y la automatización en su empresa con rapidez y confianza, trabajando con nuestra propia tecnología IBM watsonx y un ecosistema abierto de socios para ofrecer cualquier modelo de IA, en cualquier nube, guiado por la ética y la confianza.

Explore nuestros servicios de consultoría sobre IA

watsonx.data

Escale las cargas de trabajo analíticas y de IA para todos sus datos, en cualquier lugar, con watsonx.data, el único almacén de datos de la industria que es abierto, híbrido y gestionado.

Explore watsonx.data
Recursos de LangChain

Herramientas, consejos y código de muestra para comenzar a crear aplicaciones con LangChain y watsonx.

Consejos para escribir instrucciones para el modelo fundacional

Es un arte, pero también es una ciencia. La ingeniería de instrucciones es el proceso de elaborar un texto con las indicaciones que produzcan el mejor efecto para un modelo y unos parámetros determinados. Estos consejos le ayudarán a generar con éxito las instrucciones para la mayoría de los modelos fundacionales de generación de texto.

Use Watsonx y LangChain para llamar a un modelo de lenguaje

Este cuaderno contiene los pasos y el código para demostrar la cadena secuencial simple mediante la integración de langchain con modelos watsonx. Contar con algunos conocimientos de Python puede ser útil.

Una guía de Python para principiantes

Presentaremos los conceptos básicos que debe conocer para dar los primeros pasos en este sencillo lenguaje de programación, desde la ejecución de cálculos algebraicos hasta la generación de salidas gráficas a partir de sus datos.

Dé el siguiente paso

Capacítese, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de aprendizaje automático con facilidad, y desarrolle aplicaciones de IA en una fracción de tiempo utilizando un fragmento de los datos con IBM watsonx.ai, un entorno empresarial de nueva generación para desarrolladores de IA.

Inicie su prueba gratuita Reserve una demostración en vivo