Guía definitiva para empezar con LangChain
¿Has visto últimamente el emoji de loro + cadena apareciendo en torno a la IA? Esos son los emojis distintivos de LangChain. LangChain es una herramienta de agente de IA que añade funcionalidad a large language models (LLMs) como GPT. Además, incluye funcionalidades como gestión de tokens, gestión de contexto y plantillas de prompts. Para este tutorial de introducción, veremos dos ejemplos principales de LangChain con casos de uso reales. Primero, cómo consultar GPT. Segundo, cómo consultar un documento con un cuaderno de Colab disponible aquí. Este tutorial de LangChain te guiará a través del proceso de consultar GPT y documentos usando LangChain.
En este tutorial cubrimos:
- ¿Qué es LangChain?
- ¿Cómo puedes ejecutar consultas de LangChain?
- Consultar GPT
- Consultar un documento
- Resumen de introducción a LangChain
¿Qué es LangChain?
LangChain es un framework para crear aplicaciones que aprovechan los modelos de lenguaje grandes. Te permite crear rápidamente con el CVP Framework. Las dos funcionalidades principales de LangChain para aprovechar los modelos de lenguaje grandes son 1) ser consciente de los datos y 2) ser agéntico. La conciencia de datos es la capacidad de incorporar fuentes de datos externas en una aplicación de LLM. La agencia es la capacidad de usar otras herramientas.
Como ocurre con muchas herramientas de LLM, el LLM predeterminado de LangChain es GPT de OpenAI y necesitas una clave de API de OpenAI para usarlo. Además, LangChain ofrece el LangChain Expression Language (LCEL) para componer cadenas complejas de procesamiento del lenguaje, simplificando la transición del prototipado a producción. Además, LangChain funciona tanto con Python como con JavaScript. En este tutorial, aprenderás cómo funciona usando ejemplos en Python. Puedes instalar la biblioteca de Python a través de pip ejecutando pip install langchain.
¿Cómo funciona LangChain?
El flujo de preguntas y respuestas de LangChain consiste en bloques de construcción que se pueden intercambiar fácilmente para crear una plantilla personalizada según las necesidades individuales. Estos bloques incluyen la pregunta, el embedding, los documentos usados para entrenar el modelo, el prompt construido y una respuesta. LangChain también utiliza analizadores de salida para gestionar y refinar las respuestas generadas por los modelos de lenguaje, asegurando resultados estructurados y relevantes. Por lo tanto, si una empresa desea una experiencia de chat entrenada con documentos específicos, LangChain puede intercambiar los diversos componentes para lograr ese objetivo.
¿Cómo usar LangChain con GPT y la base de datos vectorial Milvus?
Uno de los principales casos de uso de LangChain es consultar datos de texto. Puedes usarlo para consultar documentos, almacenes vectoriales o para hacer más fluidas tus interacciones con GPT, de forma muy similar a LlamaIndex. En este tutorial, cubrimos un ejemplo sencillo de cómo interactuar con GPT usando LangChain y consultar un documento para obtener significado semántico usando LangChain con un almacén vectorial. Este proceso, conocido como Retrieval Augmented Generation (RAG), mejora las capacidades de los modelos de lenguaje incorporando datos externos durante el proceso de generación.
Consultar GPT
La familiaridad de la mayoría de las personas con GPT proviene de chatear con ChatGPT. ChatGPT es la interfaz insignia de OpenAI para interactuar con GPT. Sin embargo, si quieres interactuar con GPT programáticamente, necesitas una interfaz de consulta como LangChain. LangChain proporciona una variedad de interfaces de consulta para GPT, desde prompts simples de una sola pregunta hasta aprendizaje con pocos ejemplos mediante contexto.
En este ejemplo, veremos cómo usar LangChain para encadenar preguntas usando una plantilla de prompt. Hay algunas bibliotecas de Python que debes instalar primero. Podemos instalarlas con # pip install langchain openai python-dotenv tiktoken. Uso python-dotenv porque gestiono mis variables de entorno en un archivo .env, pero puedes usar el método que quieras para cargar tu clave de API de OpenAI.
Con nuestra clave de API de OpenAI lista, debemos cargar nuestras herramientas de LangChain. Necesitamos las importaciones PromptTemplate y LLMChain de langchain y la importación OpenAI de langchain.llms. Usamos el modelo de texto de OpenAI, text-davinci-003, para este ejemplo. A continuación, creamos una plantilla con la que consultar a GPT. La plantilla que creamos a continuación le indica a GPT que responda las preguntas dadas una por una. Primero, creamos una cadena que representa variables de entrada entre llaves, de forma similar a como funcionan las f-strings.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain import PromptTemplate, LLMChain
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
multi_template = """Answer the following questions one at a time.
Questions:
{questions}
Answers:
"""
A continuación, usamos el objeto PromptTemplate para crear una plantilla a partir de la cadena con variables de entrada especificadas. Con nuestra plantilla de prompt lista, podemos crear una “cadena” LLM pasando el prompt y los modelos de lenguaje grandes elegidos. Ahora es momento de crear las preguntas. Una vez que tengamos las preguntas que queremos hacer, ejecutamos con run la cadena LLM con las preguntas pasadas para obtener nuestras respuestas.
long_prompt = PromptTemplate(template=multi_template, input_variables=["questions"])
llm_chain = LLMChain(
prompt=long_prompt,
llm=davinci
)
qs_str = (
"Which NFL team won the Super Bowl in the 2010 season?\n" +
"If I am 6 ft 4 inches, how tall am I in centimeters?\n" +
"Who was the 12th person on the moon?" +
"How many eyes does a blade of grass have?"
)
print(llm_chain.run(qs_str))
La imagen a continuación muestra los resultados esperados de nuestras preguntas de ejemplo.
Resultados de las preguntas de ejemplo.
Consultar documentos relevantes
Una de las áreas de mejora de GPT y de los modelos de lenguaje grandes en general es que solo están entrenados con datos disponibles en el momento de su entrenamiento. Esto significa que, con el tiempo, pierden contexto y precisión. Al igual que el marco CVP, LangChain proporciona una forma de solucionar este problema con bases de datos vectoriales. Hay muchas bases de datos vectoriales disponibles; para este ejemplo, usamos Milvus debido a nuestra familiaridad con ella.
LangChain destaca en el manejo de datos de documentos, transformando documentos escaneados en datos accionables mediante la automatización de flujos de trabajo.
Para demostrar la capacidad de LangChain de inyectar conocimiento actualizado en tu aplicación LLM y la capacidad de realizar una búsqueda semántica, explicamos cómo consultar un documento. Usamos una transcripción del discurso sobre el Estado de la Unión para este ejemplo. Puedes descargar la transcripción y encontrar el cuaderno de Colab aquí. Para obtener las bibliotecas que necesitas para esta parte del tutorial, ejecuta pip install langchain openai milvus [pymilvus](https://zilliz.com/blog/get-started-with-pymilvus) python-dotenv tiktoken.
La capacidad de recuperar documentos relevantes dinámicamente en función de las consultas de los usuarios mejora significativamente la precisión de las respuestas generadas.
Al igual que con el ejemplo de encadenar preguntas, comenzamos cargando nuestra clave de API de OpenAI y aprovechando los modelos de lenguaje grandes. Luego, ponemos en marcha una base de datos vectorial usando Milvus Lite, lo que nos permite ejecutar Milvus directamente en nuestro notebook.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
from milvus import default_server
default_server.start()
Ahora estamos listos para entrar en los detalles de consultar un documento. Esta vez hay muchas importaciones de LangChain. Necesitamos Open AI Embeddings, el divisor de texto por caracteres, la integración de Milvus, el cargador de texto y la cadena de recuperación Q/A.
Lo primero que hacemos es configurar un cargador y cargar el archivo de texto. En este caso, lo tengo almacenado en la misma carpeta que este notebook bajo state_of_the_union.txt. A continuación, dividimos el texto y lo almacenamos como un conjunto de documentos de LangChain. Luego, podemos configurar nuestra base de datos vectorial. En este caso, creamos una colección de Milvus a partir de los documentos que acabamos de ingerir mediante TextLoader y CharacterTextSplitter. También pasamos los embeddings de OpenAI como el conjunto de embeddings vectoriales de texto.
Con nuestra base de datos vectorial cargada, podemos usar el objeto RetrievalQA para consultar los documentos mediante una base de datos vectorial. Usamos el tipo de cadena stuff " y pasamos OpenAI como nuestro LLM y la base de datos vectorial Milvus como recuperador. Luego, podemos crear una consulta, como “¿Qué dijo el presidente sobre Ketanji Brown Jackson?” yrun` la consulta. Finalmente, deberíamos cerrar nuestra base de datos vectorial para un cierre limpio.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
from langchain.chains import RetrievalQA
loader = TextLoader('./state_of_the_union.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={"host": "127.0.0.1", "port": default_server.listen_port},
)
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=vector_db.as_retriever())
query = "What did the president say about Ketanji Brown Jackson?"
qa.run(query)
default_server.stop()
La imagen de abajo muestra cómo podría verse una respuesta esperada. Deberíamos obtener una respuesta como “El presidente dijo que Ketanji Brown Jackson es una de las principales mentes jurídicas de la nación, una ex litigante principal en la práctica privada, una ex defensora pública federal, …”
Resultados de consulta
Alternativa a LangChain
Hay varias herramientas basadas en chat que podrían considerarse alternativas a LangChain, y la gente suele debatir cuáles son las mejores. Muchas de estas alternativas también utilizan modelos de chat especializados diseñados para aplicaciones de chat interactivas. Algunas que surgen con frecuencia incluyen:
- AgentGPT
- TensorFlow
- Auto-GPT
- BabyAGI
- Semantic UI
- LlamaIndex
Resumen de un tutorial de LangChain
En este artículo, cubrimos los conceptos básicos de cómo usar LangChain. Aprendimos que LangChain es un framework para crear aplicaciones de LLM que se basa en dos factores clave. El primer factor es usar datos externos, como un documento de texto. La capacidad de LangChain para integrar datos externos mejora la eficacia de los modelos de lenguaje al incorporar información específica del usuario. El segundo factor es usar otras herramientas, como una base de datos vectorial.
Cubrimos dos ejemplos. Primero, vimos uno de los ejemplos clásicos de LangChain: cómo encadenar múltiples preguntas. LangChain funciona sin problemas con varios proveedores de modelos, incluidos OpenAI y Hugging Face, para mejorar su funcionalidad. Luego, vimos una forma práctica de usar LangChain para inyectar conocimiento de dominio combinándolo con una base de datos vectorial como Milvus para consultar documentos.
Los analizadores de salida desempeñan un papel crucial en el refinamiento de las respuestas del modelo de lenguaje, garantizando resultados estructurados y relevantes.
Sigue leyendo

Smarter Autoscaling in Zilliz Cloud: Always Optimized for Every Workload
With the latest upgrade, Zilliz Cloud introduces smarter autoscaling—a fully automated, more streamlined, elastic resource management system.

Bringing AI to Legal Tech: The Role of Vector Databases in Enhancing LLM Guardrails
Discover how vector databases enhance AI reliability in legal tech, ensuring accurate, compliant, and trustworthy AI-powered legal solutions.

DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding
Explore DeepSeek-VL2, the open-source MoE vision-language model. Discover its architecture, efficient training pipeline, and top-tier performance.



