Want to Become a Sponsor? Contact Us Now!🎉

langchain-tutorials
Construyendo chatbots potenciados por LLM con LangChain: Un tutorial paso a paso

Published on

Introducción a LangChain para modelos de lenguaje grandes

Los Modelos de Lenguaje Grandes (LLMs) han revolucionado el campo del procesamiento del lenguaje natural, permitiendo la creación de aplicaciones potentes como chatbots, sistemas de respuesta a preguntas y herramientas de generación de texto. Sin embargo, construir estas aplicaciones desde cero puede resultar desafiante y consumir mucho tiempo. Ahí es donde entra en juego LangChain, una biblioteca de Python que facilita el desarrollo de aplicaciones potenciadas por LLMs.

En este artículo, profundizaremos en LangChain y exploraremos cómo se puede utilizar para construir aplicaciones potenciadas por LLMs. Cubriremos la instalación, los conceptos clave y proporcionaremos ejemplos de código para ayudarte a comenzar.

Anakin AI - The Ultimate No-Code AI App Builder

¿Qué es LangChain?

LangChain es una biblioteca de código abierto que proporciona una interfaz estándar para trabajar con LLMs. Abstrae muchas de las complejidades de interactuar directamente con LLMs, lo que permite a los desarrolladores centrarse en la construcción de sus aplicaciones.

Algunas características clave de LangChain incluyen:

  • Soporte para múltiples proveedores de LLMs como OpenAI, Cohere, Hugging Face, etc.
  • Componentes modulares como prompts, chains, agents y memory
  • Utilidades para trabajar con documentos, embeddings y vector stores
  • Integración con otras herramientas y frameworks

Al aprovechar LangChain, los desarrolladores pueden prototipar y implementar rápidamente aplicaciones potenciadas por LLMs sin tener que preocuparse por los detalles de bajo nivel de las APIs de LLMs.

Instalación

Para comenzar con LangChain, deberás instalarlo utilizando pip. Se recomienda crear un entorno virtual primero:

python -m venv langchain-env
source langchain-env/bin/activate
pip install langchain

También deberás instalar los paquetes del proveedor de LLM que desees utilizar. Por ejemplo, para usar los modelos de OpenAI:

pip install openai

Asegúrate de tener una clave de API para el proveedor que estés utilizando. Puedes configurarlo como una variable de entorno:

export OPENAI_API_KEY=tu_clave_de_api_aquí

Conceptos clave

Prompts

Los prompts son las instrucciones o contexto que proporcionas al LLM para guiar su salida. LangChain proporciona una clase PromptTemplate para facilitar la creación y el uso de prompts.

Aquí tienes un ejemplo de cómo crear una plantilla de prompt:

from langchain import PromptTemplate
 
template = """
Eres un asistente que ayuda a los usuarios a escribir correos electrónicos profesionales.
 
Dado el siguiente contexto:
{context}
 
Escribe una respuesta de correo electrónico profesional. Firma el correo como "John".
"""
 
prompt = PromptTemplate(
    input_variables=["context"],
    template=template,
)

Luego puedes usar el prompt pasando las variables de entrada:

context = "Necesito informar a mi jefe que me tomaré unas vacaciones la próxima semana."
print(prompt.format(context=context))

Esto imprimirá el prompt completado con el contexto proporcionado.

LLMs

LangChain proporciona una interfaz estándar para interactuar con diferentes proveedores de LLMs a través de la clase LLM.

Aquí tienes un ejemplo de cómo usar el modelo text-davinci-003 de OpenAI:

from langchain.llms import OpenAI
 
llm = OpenAI(model_name="text-davinci-003")
 
result = llm("¿Cuál es la capital de Francia?")
print(result)

Esto imprimirá la respuesta del modelo a la pregunta.

Chains

Las chains te permiten combinar múltiples componentes, como prompts y LLMs, para crear aplicaciones más complejas. LangChain proporciona varias chains integradas, además de la capacidad de crear chains personalizadas.

Aquí tienes un ejemplo de una cadena secuencial simple que toma un prompt, lo pasa a un LLM y luego pasa la salida del LLM a un segundo prompt:

from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
 
first_prompt = PromptTemplate(
    input_variables=["product"],
    template="¿Cuál es un buen nombre para una empresa que fabrica {product}?",
)
 
second_prompt = PromptTemplate(
    input_variables=["company_name"],
    template="Escribe un lema para la siguiente empresa: {company_name}",
)
 
chain = LLMChain(llm=llm, prompt=first_prompt)
second_chain = LLMChain(llm=llm, prompt=second_prompt)
 
result = chain.run("calcetines coloridos")
print(f"Nombre de la empresa: {result}")
 
result = second_chain.run(result)
print(f"Lema: {result}")

Esto generará un nombre de empresa basado en el producto "calcetines coloridos" y luego generará un lema para ese nombre de empresa.

Agents

Los agents son sistemas que utilizan LLMs para determinar dinámicamente qué acciones tomar en función de la entrada del usuario. Pueden utilizar herramientas para interactuar con el mundo exterior y tomar decisiones sobre qué hacer a continuación.

Aquí tienes un ejemplo de un agente simple que utiliza una herramienta de búsqueda y una herramienta de calculadora:

from langchain.agents import initialize_agent, Tool
from langchain.tools import BaseTool
from langchain.llms import OpenAI
 
def search_api(query):
    return "Aquí se mostrarían los resultados de búsqueda para {query}"
 
def calculator(expression):
    return eval(expression)
 
search_tool = Tool(
    name="Búsqueda",
    func=search_api,
    description="Útil para buscar información en Internet."
)
 
calculator_tool = Tool(
    name="Calculadora",
    func=calculator,
    description="Útil para hacer cálculos matemáticos."
)
 
tools = [search_tool, calculator_tool]
 
llm = OpenAI(temperature=0)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
 
result = agent.run("¿Cuál es la población de Canadá dividida por la población de Estados Unidos?")
print(result)

Este agente buscará en primer lugar las poblaciones de Canadá y Estados Unidos, extraerá los números de los resultados de búsqueda y luego utilizará la calculadora para dividirlos.

Conclusión

LangChain es una potente biblioteca que facilita el desarrollo de aplicaciones alimentadas por LLMs. Al proporcionar una interfaz estándar y componentes modulares, permite a los desarrolladores centrarse en la construcción de sus aplicaciones en lugar de preocuparse por los detalles de las APIs de LLM.

En este artículo, cubrimos los conceptos básicos de LangChain, incluyendo la instalación, conceptos clave como prompts, LLMs, chains y agents, y proporcionamos ejemplos de código para ayudarte a comenzar.

Para obtener más información sobre LangChain, consulta la documentación oficial en https://langchain.readthedocs.io/ (opens in a new tab). También puedes explorar el directorio de ejemplos en el repositorio de GitHub para obtener casos de uso más avanzados e ideas.

A medida que los LLMs siguen avanzando, herramientas como LangChain jugarán un papel cada vez más importante para hacerlos accesibles y fáciles de usar para una amplia gama de aplicaciones. Al aprovechar LangChain, puedes construir aplicaciones potentes basadas en el lenguaje y estar a la vanguardia de este apasionante campo.

<AdComponent />