Saltar al contenido principal

Tutorial sobre cómo crear aplicaciones LLM con LangChain

Explore el potencial sin explotar de los grandes modelos lingüísticos con LangChain, un marco Python de código abierto para crear aplicaciones avanzadas de IA.
3 may 2024  · 12 min de lectura

Las capacidades de los grandes modelos lingüísticos (LLM), como GPT-3 de OpenAI, BERT de Google y LLaMA de Meta, están transformando varios sectores al permitir la generación de diversos tipos de texto, desde contenido de marketing y código de ciencia de datos hasta poesía. Aunque ChatGPT ha acaparado una gran atención por su interfaz de chat de fácil uso, existen numerosas posibilidades sin explotar para aprovechar los LLM integrándolos en distintas aplicaciones de software.

Si te cautivan los poderes transformadores de la IA Generativa y los LLM, este tutorial es perfecto para ti. Aquí, exploramos LangChain - Un framework de código abierto en Python para construir aplicaciones basadas en Grandes Modelos Lingüísticos como GPT.

Obtenga más información sobre la creación de aplicaciones de IA con LangChain en nuestro Building Multimodal AI Applications with LangChain & the OpenAI API AI Code Along, donde descubrirá cómo transcribir contenido de vídeo de YouTube con la IA de voz a texto Whisper y, a continuación, utilizar GPT para hacer preguntas sobre el contenido.

¿Qué son los grandes modelos lingüísticos (LLM)?

Los grandes modelos lingüísticos (LLM) son sistemas avanzados de inteligencia artificial diseñados para comprender y generar textos similares a los humanos. Estos modelos se entrenan con grandes cantidades de datos, lo que les permite captar patrones complejos, comprender los matices del lenguaje y generar respuestas coherentes. Los LLM son capaces de realizar diversas tareas relacionadas con el lenguaje, como traducir idiomas, completar textos, resumirlos e incluso participar en interacciones conversacionales. GPT es un ejemplo de LLM.

LLM es un tipo de IA Generativa. Si quieres saber más sobre la IA Generativa y cómo puede potenciar tu creatividad, consulta nuestros blogs Using Generative AI to Boost Your Creativity y nuestro podcast, Inside the Generative AI Revolution. También puede inscribirse en nuestro próximo curso sobre Conceptos de grandes modelos lingüísticos.

Introducción a LangChain

LangChain es un marco de código abierto diseñado para facilitar el desarrollo de aplicaciones basadas en grandes modelos lingüísticos (LLM). Ofrece un conjunto de herramientas, componentes e interfaces que simplifican la construcción de aplicaciones centradas en LLM. Con LangChain, resulta muy sencillo gestionar las interacciones con los modelos lingüísticos, vincular a la perfección distintos componentes e incorporar recursos como API y bases de datos. Puede leer más sobre LangChain para ingeniería de datos y aplicaciones de datos en otro artículo. 

La plataforma LangChain incluye una serie de API que los desarrolladores pueden integrar en sus aplicaciones, lo que les permite incorporar funciones de procesamiento del lenguaje sin tener que crear todo desde cero. Por lo tanto, LangChain simplifica eficazmente el proceso de creación de aplicaciones basadas en LLM, lo que lo hace adecuado para desarrolladores de todo el espectro de conocimientos.

Aplicaciones como los chatbots, los asistentes virtuales, las utilidades de traducción de idiomas y las herramientas de análisis de opiniones son ejemplos de aplicaciones impulsadas por LLM. Los desarrolladores aprovechan LangChain para crear aplicaciones a medida basadas en modelos lingüísticos que respondan a necesidades específicas.

Con los continuos avances y la mayor adopción del procesamiento del lenguaje natural, se espera que las aplicaciones potenciales de esta tecnología sean prácticamente ilimitadas. Estas son algunas características destacables de LangChain:

1. Avisos personalizables para satisfacer sus necesidades específicas

2. Construcción de eslabones de cadena para usos avanzados

3. Integración de modelos para el aumento de datos y acceso a capacidades de modelos lingüísticos de primera categoría, como GPT y HuggingFace Hub.

4. Componentes versátiles que permiten mezclarlos y combinarlos para necesidades específicas

5. Manipular el contexto para establecerlo y guiarlo a fin de mejorar la precisión y la satisfacción del usuario.

Configuración de LangChain en Python

Instalar LangChain en Python es bastante sencillo. Puedes instalarlo con pip o conda.

Instalar con pip

pip install langchain

Instalación mediante conda

install langchain -c conda-forge

Esto establecerá las necesidades básicas de LangChain. Gran parte de la utilidad de LangChain se materializa cuando se integra con diversos proveedores de modelos, almacenes de datos y similares.

Por defecto, las dependencias necesarias para estas integraciones NO se incluyen en la instalación. Para instalar todas las dependencias, puede ejecutar el siguiente comando:

pip install langchain[all]

La última opción es crear la biblioteca a partir del código fuente. En ese caso, puedes clonar el proyecto desde su repositorio de GitHub.

Configuración del entorno

El uso de LangChain suele requerir integraciones con diversos proveedores de modelos, almacenes de datos, API y componentes similares. Como con cualquier integración, debemos proporcionar las claves API adecuadas y relevantes para que LangChain funcione. Hay dos formas de conseguirlo:

1. Configurar la clave como variable de entorno

OPENAI_API_KEY="..."

Si prefieres no establecer una variable de entorno, puedes pasar la clave directamente a través del parámetro con nombre openai_api_key al iniciar la clase OpenAI LLM:

2. Configurar directamente la clave en la clase correspondiente

from langchain.llms import OpenAI

llm = OpenAI(openai_api_key="...")

Componentes clave de LangChain

LangChain destaca por su énfasis en la flexibilidad y la modularidad. Desmonta la cadena de procesamiento del lenguaje natural en componentes independientes, lo que permite a los desarrolladores adaptar los flujos de trabajo a sus necesidades. Esta adaptabilidad hace que LangChain sea ideal para construir aplicaciones de IA en diversos escenarios y sectores.

Componentes y cadenas

En LangChain, los componentes son módulos que realizan funciones específicas en la cadena de procesamiento lingüístico. Estos componentes pueden enlazarse en "cadenas" para crear flujos de trabajo a medida, como una cadena de chatbot de atención al cliente con módulos de análisis de sentimientos, reconocimiento de intenciones y generación de respuestas.

Plantillas

Las plantillas de avisos son avisos predefinidos reutilizables en todas las cadenas. Estas plantillas pueden volverse dinámicas y adaptables insertando "valores" específicos. Por ejemplo, una pregunta sobre el nombre de un usuario podría personalizarse insertando un valor específico. Esta función es beneficiosa para generar avisos basados en recursos dinámicos.

Almacenes vectoriales

Se utilizan para almacenar y buscar información mediante incrustaciones, es decir, analizando representaciones numéricas del significado de los documentos. VectorStore sirve de almacén para estas incrustaciones, lo que permite una búsqueda eficaz basada en la similitud semántica.

Índices y recuperadores

Los índices actúan como bases de datos que almacenan detalles y metadatos sobre los datos de entrenamiento del modelo, mientras que los recuperadores buscan rápidamente en este índice información específica. De este modo se mejoran las respuestas del modelo al proporcionarle contexto e información relacionada.

Analizadores de salida

Los analizadores de salida entran en juego para gestionar y refinar las respuestas generadas por el modelo. Pueden eliminar contenidos no deseados, adaptar el formato de salida o añadir datos adicionales a la respuesta. Así, los analizadores sintácticos de salida ayudan a extraer resultados estructurados, como objetos JSON, de las respuestas del modelo lingüístico.

Ejemplos de selectores

Los selectores de ejemplos en LangChain sirven para identificar instancias apropiadas a partir de los datos de entrenamiento del modelo, mejorando así la precisión y pertinencia de las respuestas generadas. Estos selectores pueden ajustarse para favorecer ciertos tipos de ejemplos o filtrar otros no relacionados, proporcionando una respuesta de IA a medida basada en la entrada del usuario.

Agentes

Los agentes son instancias únicas de LangChain, cada una con indicaciones, memoria y cadena específicas para un caso de uso concreto. Pueden desplegarse en varias plataformas, como web, móvil y chatbots, para atender a un público amplio.

Cómo construir una aplicación de modelo lingüístico en LangChain

LangChain proporciona una clase LLM diseñada para interactuar con varios proveedores de modelos lingüísticos, como OpenAI, Cohere y Hugging Face. La funcionalidad más básica de un LLM es la generación de texto. Es muy sencillo construir una aplicación con LangChain que tome una cadena de texto y devuelva la salida.

API_KEY ="..."

from langchain.llms import OpenAI

llm = OpenAI(model_name="text-ada-001", openai_api_key=API_KEY)

print(llm("Tell me a joke about data scientist"))

Salida:

>>> ¿Qué se obtiene cuando se manipulan datos? Un científico de datos".

En el ejemplo anterior, estamos utilizando el modelo text-ada-001 de OpenAI. Si desea cambiarlo por cualquier modelo de código abierto de HuggingFace, es un cambio sencillo:

API_KEY ="..."

from langchain import HuggingFaceHub

llm = HuggingFaceHub(repo_id = "google/flan-t5-xl", huggingfacehub_api_token = API_KEY)

print(llm("Tell me a joke about data scientist"))

Puedes obtener el identificador del hub de Hugging Face en tu cuenta de HF.

Si tiene varios avisos, puede enviar una lista de avisos a la vez utilizando el método generate:

llm_response = llm.generate(['Tell me a joke about data scientist',

'Tell me a joke about recruiter',

'Tell me a joke about psychologist'])

Salida:

Esta es la aplicación más sencilla que puedes crear con LangChain. Recibe una pregunta, la envía a un modelo lingüístico de su elección y le devuelve la respuesta. Hay muchos parámetros que puedes controlar, como la `temperatura`. El parámetro de temperatura ajusta la aleatoriedad de la salida, y está fijado en 0,7 por defecto.

Gestión de plantillas para LLM en LangChain

Los LLM tienen API peculiares. Aunque pueda parecer intuitivo introducir las instrucciones en lenguaje natural, en realidad es necesario ajustarlas para obtener el resultado deseado de un LLM. Este proceso de ajuste se conoce como ingeniería rápida. Una vez que tenga un buen aviso, puede utilizarlo como plantilla para otros fines.

Un PromptTemplate en LangChain le permite utilizar plantillas para generar un aviso. Esto es útil cuando se desea utilizar el mismo esquema de aviso en varios lugares pero con ciertos valores cambiados.

USER_INPUT = 'Paris'

from langchain.llms import OpenAI

from langchain import PromptTemplate

llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)

template = """ I am travelling to {location}. What are the top 3 things I can do while I am there. Be very specific and respond as three bullet points """

prompt = PromptTemplate(

input_variables=["location"],

template=template,

)

final_prompt = prompt.format(location=USER_INPUT )

print(f"LLM Output: {llm(final_prompt)}")

Salida:

1. Suba a la Torre Eiffel y disfrute de las impresionantes vistas de la ciudad

2. Disfrute de un romántico crucero por el Sena y admire la bella arquitectura de sus orillas

3. Explore el Louvre y admire las obras de arte de renombre mundial expuestas

Si ahora quiere reutilizar este aviso para otra ciudad, sólo tiene que cambiar la variable USER_INPUT. Ahora lo he cambiado de Paris a Cancun, Mexico. Vea cómo se ha modificado la salida:

Salida:

1. Relájese en la playa: Disfrute de las playas de arena blanca y aguas cristalinas del mar Caribe.

2. Explore las ruinas mayas: Visite antiguos yacimientos arqueológicos como Chichén Itzá, Tulum y Cobá para conocer la historia y la cultura de los mayas.

3. Haga un recorrido gastronómico: Pruebe los sabores tradicionales y conozca la cocina local haciendo una ruta gastronómica por Cancún.

Combinación de LLM y avisos en flujos de trabajo de varios pasos

El encadenamiento dentro del contexto LangChain se refiere al acto de integrar LLMs con otros elementos para construir una aplicación. Algunos ejemplos son:

  • Combinación secuencial de varios LLM utilizando la salida del primer LLM como entrada para el segundo LLM (consulte esta sección).
  • Integración de LLM con plantillas de avisos
  • Fusión de LLM con datos externos, por ejemplo para responder preguntas
  • Incorporación de LLM con memoria a largo plazo, como el historial de chat

Veamos un ejemplo del primer escenario en el que utilizaremos la salida del primer LLM como entrada para el segundo LLM.

from langchain.llms import OpenAI

from langchain.chains import LLMChain, SimpleSequentialChain

from langchain import PromptTemplate

llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)

# first step in chain

template = "What is the most popular city in {country} for tourists? Just return the name of the city"

first_prompt = PromptTemplate(

input_variables=["country"],

template=template)

chain_one = LLMChain(llm = llm, prompt = first_prompt)

# second step in chain

second_prompt = PromptTemplate(

input_variables=["city"],

template="What are the top three things to do in this: {city} for tourists. Just return the answer as three bullet points.",)

chain_two = LLMChain(llm=llm, prompt=second_prompt)

# Combine the first and the second chain

overall_chain = SimpleSequentialChain(chains=[chain_one, chain_two], verbose=True)

final_answer = overall_chain.run("Canada")

Salida:

En este ejemplo concreto, creamos una cadena con dos componentes. El primer componente se encarga de identificar la ciudad más popular correspondiente a un determinado país introducido por el usuario. En cambio, el segundo componente se centra en proporcionar información sobre las tres principales actividades o atracciones disponibles para los turistas que visitan esa ciudad concreta.

Si quieres aprender conceptos más avanzados sobre la creación de aplicaciones en LangChain, echa un vistazo a este curso en directo sobre Creación de aplicaciones de IA con LangChain y GPT en DataCamp.

Conclusión y aprendizaje

Hace poco tiempo, todos estábamos muy impresionados por las impresionantes capacidades de ChatGPT. Sin embargo, el panorama ha evolucionado rápidamente y ahora tenemos acceso a nuevas herramientas para desarrolladores como LangChain, que nos permiten crear prototipos igual de notables en nuestros portátiles personales en cuestión de horas.

LangChain, un framework Python de código abierto, permite crear aplicaciones basadas en LLM (modelos de lenguaje). Este marco ofrece una interfaz versátil para numerosos modelos fundacionales, facilitando la gestión de avisos y sirviendo de eje central para otros componentes como plantillas de avisos, LLM adicionales, datos externos y otras herramientas a través de agentes (en el momento de escribir este artículo).

Si estás intentando mantenerte al día de todos los avances en IA Generativa y LLM, echa un vistazo a nuestro webinar Building AI Applications with LangChain and GPT. Aquí aprenderás los fundamentos del uso de LangChain para desarrollar aplicaciones de IA, así como a estructurar una aplicación de IA y a incrustar datos de texto para obtener un alto rendimiento. También puede consultar nuestra hoja de trucos sobre el panorama de las herramientas de IA generativa para explorar las distintas categorías de herramientas de IA generativa, sus aplicaciones y su influencia en diversos sectores.

Preguntas frecuentes

¿Qué es LangChain?

LangChain es un marco de código abierto diseñado para facilitar el desarrollo de aplicaciones basadas en grandes modelos lingüísticos (LLM). Simplifica la construcción de aplicaciones centradas en LLM proporcionando herramientas, componentes e interfaces.

¿Es gratuito el uso de LangChain?

Sí, LangChain es un framework gratuito y de código abierto, pero el uso de determinados LLM puede requerir una suscripción.

¿Puede LangChain trabajar con diferentes proveedores de modelos?

Sí, LangChain es compatible con varios proveedores de modelos lingüísticos como OpenAI, Cohere y Hugging Face, lo que permite flexibilidad en el desarrollo de aplicaciones.

¿Cómo se utiliza LangChain con los modelos de OpenAI?

Después de instalar LangChain, puedes integrarlo con los modelos de OpenAI configurando tu clave API de OpenAI y utilizando las interfaces proporcionadas para la interacción con el modelo.

¿Cómo se gestionan las plantillas de avisos en LangChain?

LangChain utiliza PromptTemplate para gestionar plantillas de avisos, lo que permite crear avisos dinámicos y reutilizables que pueden adaptarse a casos de uso específicos cambiando las variables de entrada.

¿Qué es el encadenamiento en LangChain?

El encadenamiento se refiere a la integración de LLMs con otros elementos para construir una aplicación, como la combinación secuencial de múltiples LLMs, la integración de LLMs con plantillas de avisos o la incorporación de datos externos.

¿Puede LangChain manejar datos de documentos procedentes de diversas fuentes?

Sí, LangChain soporta cargadores de documentos para múltiples fuentes de datos, incluyendo texto, CSV, archivos PDF, y plataformas como Slack y Figma, para incorporar en aplicaciones LLM.

Temas
Relacionado

blog

12 proyectos LLM para todos los niveles

Descubre 12 ideas de proyectos LLM con guías visuales fáciles de seguir y códigos fuente, adecuados para principiantes, estudiantes de nivel intermedio, estudiantes de último curso y expertos.
Abid Ali Awan's photo

Abid Ali Awan

12 min

tutorial

Construir agentes LangChain para automatizar tareas en Python

Un tutorial completo sobre la construcción de agentes LangChain multiherramienta para automatizar tareas en Python utilizando LLMs y modelos de chat utilizando OpenAI.
Bex Tuychiev's photo

Bex Tuychiev

14 min

tutorial

RAG Con Llama 3.1 8B, Ollama y Langchain: Tutorial

Aprende a crear una aplicación RAG con Llama 3.1 8B utilizando Ollama y Langchain, configurando el entorno, procesando documentos, creando incrustaciones e integrando un recuperador.
Ryan Ong's photo

Ryan Ong

12 min

tutorial

Cómo formar a un LLM con PyTorch

Domine el proceso de entrenamiento de grandes modelos lingüísticos con PyTorch, desde la configuración inicial hasta la implementación final.
Zoumana Keita 's photo

Zoumana Keita

8 min

tutorial

Guía introductoria para el ajuste preciso de los LLM

El ajuste preciso de los grandes modelos lingüísticos (LLM) ha revolucionado el procesamiento del lenguaje natural (PLN) y ofrece capacidades sin precedentes en tareas como la traducción lingüística, el análisis del sentimiento y la generación de textos. Este enfoque transformador aprovecha modelos preentrenados como el GPT-2 y mejora su rendimiento en dominios específicos mediante el proceso de ajuste preciso.
Josep Ferrer's photo

Josep Ferrer

12 min

tutorial

Ajuste fino de LLaMA 2: Guía paso a paso para personalizar el modelo de lenguaje grande

Aprende a ajustar Llama-2 en Colab utilizando nuevas técnicas para superar las limitaciones de memoria y computación y hacer más accesibles los grandes modelos lingüísticos de código abierto.
Abid Ali Awan's photo

Abid Ali Awan

12 min

See MoreSee More