Imagen del editor
Los modelos de lenguajes grandes (LLM) como GPT-3 de OpenAI, BERT de Google y LLaMA de Meta están revolucionando varios sectores con su capacidad de generar una amplia gama de textos, desde textos de marketing y guiones de ciencia de datos hasta poesía.
Aunque la interfaz intuitiva de ChatGPT ha logrado estar en los dispositivos de la mayoría de las personas hoy en día, todavía existe un vasto panorama de potencial sin explotar para el uso de LLM en diversas integraciones de software.
¿El problema principal?
La mayoría de las aplicaciones requieren una comunicación más fluida y nativa con los LLM.
¡Y aquí es precisamente donde entra en juego LangChain!
Si está interesado en la IA generativa y los LLM, este tutorial está hecho a su medida.
Entonces… ¡comencemos!
En caso de que hayas estado viviendo dentro de una cueva y no hayas recibido ninguna noticia últimamente, te explicaré brevemente los modelos de lenguajes grandes o LLM.
Un LLM es un sofisticado sistema de inteligencia artificial creado para imitar la comprensión y generación de textos similares a los humanos. Al entrenarse con enormes conjuntos de datos, estos modelos disciernen patrones intrincados, captan sutilezas lingüísticas y producen resultados coherentes.
Si se pregunta cómo interactuar con estos modelos impulsados por IA, hay dos formas principales de hacerlo:
- La forma más común y directa es hablando o chateando con la modelo. Implica elaborar un mensaje, enviarlo al modelo impulsado por IA y obtener un resultado basado en texto como respuesta.
- Otro método es convertir texto en matrices numéricas. Este proceso implica redactar un mensaje para la IA y recibir a cambio una matriz numérica. Lo que comúnmente se conoce como “incrustación”. Ha experimentado un reciente aumento en las bases de datos vectoriales y la búsqueda semántica.
Y son precisamente estos dos problemas principales los que LangChain intenta abordar. Si estás interesado en los principales problemas de la interacción con los LLM, puedes consultar este artículo aquí.
LangChain es un marco de código abierto creado en torno a LLM. Aporta un arsenal de herramientas, componentes e interfaces que agilizan la arquitectura de las aplicaciones basadas en LLM.
Con LangChain, interactuar con modelos de lenguaje, interconectar diversos componentes e incorporar activos como API y bases de datos se vuelve muy sencillo. Este marco intuitivo simplifica sustancialmente el recorrido de desarrollo de aplicaciones LLM.
La idea central de Long Chain es que podemos conectar diferentes componentes o módulos, también conocidos como cadenas, para crear soluciones más sofisticadas impulsadas por LLM.
Estas son algunas de las características destacadas de LangChain:
- Plantillas de mensajes personalizables para estandarizar nuestras interacciones.
- Componentes de eslabones de cadena diseñados para casos de uso sofisticados.
- Integración perfecta con los principales modelos de lenguaje, incluidos los GPT de OpenAI y los de HuggingFace Hub.
- Componentes modulares para un enfoque de combinación y combinación para evaluar cualquier problema o tarea específica.
Imagen por autor
LangChain se distingue por su enfoque en la adaptabilidad y el diseño modular.
La idea principal detrás de LangChain es dividir la secuencia de procesamiento del lenguaje natural en partes individuales, lo que permite a los desarrolladores personalizar los flujos de trabajo según sus requisitos.
Esta versatilidad posiciona a LangChain como una opción privilegiada para crear soluciones de inteligencia artificial en diferentes situaciones e industrias.
Algunos de sus componentes más importantes son…
Imagen por autor
1. LLM
Los LLM son componentes fundamentales que aprovechan grandes cantidades de datos de capacitación para comprender y generar texto similar a un humano. Están en el centro de muchas operaciones dentro de LangChain y brindan las capacidades de procesamiento del lenguaje necesarias para analizar, interpretar y responder a la entrada de texto.
Uso: Impulsar chatbots, generar texto similar a un humano para diversas aplicaciones, ayudar en la recuperación de información y realizar otros procesos de lenguaje.
2. Plantillas de aviso
Las indicaciones son fundamentales para interactuar con LLM y, cuando se trabaja en tareas específicas, su estructura tiende a ser similar. Las plantillas de avisos, que son avisos preestablecidos que se pueden utilizar en todas las cadenas, permiten la estandarización de los “avisos” agregando valores específicos. Esto mejora la adaptabilidad y personalización de cualquier LLM.
Uso: Estandarizar el proceso de interacción con los LLM.
3. Analizadores de salida
Los analizadores de salida son componentes que toman la salida sin procesar de una etapa anterior de la cadena y la convierten a un formato estructurado. Estos datos estructurados se pueden utilizar de forma más eficaz en etapas posteriores o entregarse como respuesta al usuario final.
Uso: Por ejemplo, en un chatbot, un analizador de salida podría tomar la respuesta de texto sin formato de un modelo de lenguaje, extraer información clave y formatearla en una respuesta estructurada.
4. Componentes y cadenas
En LangChain, cada componente actúa como un módulo responsable de una tarea particular en la secuencia de procesamiento del lenguaje. Estos componentes se pueden conectar para formar cadenas para flujos de trabajo personalizados.
Uso: Generar cadenas de detección de sentimiento y generador de respuestas en un chatbot específico.
5. Memoria
La memoria en LangChain se refiere a un componente que proporciona un mecanismo de almacenamiento y recuperación de información dentro de un flujo de trabajo. Este componente permite el almacenamiento temporal o persistente de datos a los que otros componentes pueden acceder y manipular durante la interacción con el LLM.
Uso: Esto es útil en escenarios donde es necesario conservar datos en diferentes etapas de procesamiento, por ejemplo, almacenar el historial de conversaciones en un chatbot para proporcionar respuestas contextuales.
6. Agentes
Los agentes son componentes autónomos capaces de tomar acciones en función de los datos que procesan. Pueden interactuar con otros componentes, sistemas externos o usuarios para realizar tareas específicas dentro de un flujo de trabajo de LangChain.
Uso: Por ejemplo, un agente podría manejar las interacciones del usuario, procesar solicitudes entrantes y coordinar el flujo de datos a través de la cadena para generar respuestas apropiadas.
7. Índices y recuperadores
Los índices y los recuperadores desempeñan un papel crucial en la gestión y el acceso a datos de manera eficiente. Los índices son estructuras de datos que contienen información y metadatos de los datos de entrenamiento del modelo. Por otro lado, los recuperadores son mecanismos que interactúan con estos índices para obtener datos relevantes en función de criterios específicos y permitir que el modelo responda mejor al proporcionar un contexto relevante.
Uso: Son fundamentales para recuperar rápidamente datos o documentos relevantes de un gran conjunto de datos, lo cual es esencial para tareas como la recuperación de información o la respuesta a preguntas.
8. Transformadores de documentos
En LangChain, los Document Transformers son componentes especializados diseñados para procesar y transformar documentos de una manera que los haga adecuados para su posterior análisis o procesamiento. Estas transformaciones pueden incluir tareas como la normalización de texto, la extracción de características o la conversión de texto a un formato diferente.
Uso: Preparar datos de texto para etapas de procesamiento posteriores, como el análisis mediante modelos de aprendizaje automático o la indexación para una recuperación eficiente.
9. Incrustar modelos
Se utilizan para convertir datos de texto en vectores numéricos en un espacio de alta dimensión. Estos modelos capturan relaciones semánticas entre palabras y frases, permitiendo una representación legible por máquina. Forman la base para varias tareas posteriores de procesamiento del lenguaje natural (NLP) dentro del ecosistema LangChain.
Uso: Facilitar búsquedas semánticas, comparaciones de similitudes y otras tareas de aprendizaje automático al proporcionar una representación numérica del texto.
10. Tiendas de vectores
Tipo de sistema de base de datos que se especializa en almacenar y buscar información mediante incrustaciones, esencialmente analizando representaciones numéricas de datos similares a texto. VectorStore sirve como lugar de almacenamiento para estas incrustaciones.
Uso: Permitiendo una búsqueda eficiente basada en similitud semántica.
Instalarlo usando PIP
Lo primero que tenemos que hacer es asegurarnos de tener LangChain instalado en nuestro entorno.
Configuración del entorno
Utilizar LangChain generalmente significa integrarse con diversos proveedores de modelos, almacenes de datos, API, entre otros componentes. Y como ya sabe, como cualquier integración, proporcionar las claves API correctas y relevantes es crucial para el funcionamiento de LangChain.
Imaginemos que queremos utilizar nuestra API OpenAI. Podemos lograr esto fácilmente de dos maneras:
- Configurar la clave como variable de entorno
o
import os
os.environ('OPENAI_API_KEY') = “...”
Si elige no establecer una variable de entorno, tiene la opción de proporcionar la clave directamente a través del parámetro con nombre openai_api_key al iniciar la clase OpenAI LLM:
- Configure directamente la clave en la clase relevante.
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="...")
Cambiar entre LLM se vuelve sencillo
LangChain proporciona una clase LLM que nos permite interactuar con diferentes proveedores de modelos de lenguaje, como OpenAI y Hugging Face.
Es bastante fácil comenzar con cualquier LLM, ya que la funcionalidad más básica y fácil de implementar de cualquier LLM es simplemente generar texto.
Sin embargo, no es tan fácil hacer la misma pregunta a diferentes LLM a la vez.
Aquí es donde LangChain entra en acción…
Volviendo a la funcionalidad más sencilla de cualquier LLM, podemos crear fácilmente una aplicación con LangChain que reciba un mensaje de cadena y devuelva el resultado de nuestro LLM designado.
Código por autor
¡Podemos simplemente usar el mismo mensaje y obtener la respuesta de dos modelos diferentes en unas pocas líneas de código!
Código por autor
Impresionante… ¿verdad?
Dar estructura a nuestras indicaciones con plantillas de indicaciones
Un problema común con los modelos de lenguaje (LLM) es su incapacidad para escalar aplicaciones complejas. LangChain aborda esto ofreciendo una solución para agilizar el proceso de creación de indicaciones, que a menudo es más complejo que simplemente definir una tarea, ya que requiere delinear la personalidad de la IA y garantizar la precisión de los hechos. Una parte importante de esto implica texto repetitivo repetitivo. LangChain alivia esto ofreciendo plantillas de mensajes, que incluyen automáticamente texto repetitivo en nuevos mensajes, simplificando así la creación de mensajes y garantizando la coherencia entre diferentes tareas.
Código por autor
Obtener respuestas estructuradas con analizadores de salida
En las interacciones basadas en chat, la salida del modelo es simplemente texto. Sin embargo, dentro de las aplicaciones de software, es preferible tener una salida estructurada, ya que permite acciones de programación adicionales. Por ejemplo, al generar un conjunto de datos, es deseable recibir la respuesta en un formato específico como CSV o JSON. Suponiendo que se pueda diseñar un mensaje para obtener una respuesta coherente y con el formato adecuado de la IA, se necesitan herramientas para gestionar este resultado. LangChain satisface este requisito ofreciendo herramientas de análisis de salida para manejar y utilizar la salida estructurada de manera efectiva.
Código por autor
Puedes ir a verificar el código completo en mi GitHub.
No hace mucho, las capacidades avanzadas de ChatGPT nos dejaron asombrados. Sin embargo, el entorno tecnológico está en constante cambio y ahora herramientas como LangChain están a nuestro alcance, lo que nos permite crear prototipos excepcionales desde nuestras computadoras personales en tan solo unas horas.
LangChain, una plataforma Python disponible gratuitamente, proporciona un medio para que los usuarios desarrollen aplicaciones basadas en LLM (Modelos de modelos de lenguaje). Esta plataforma ofrece una interfaz flexible para una variedad de modelos fundamentales, agilizando el manejo de avisos y actuando como un nexo para elementos como plantillas de avisos, más LLM, información externa y otros recursos a través de agentes, a partir de la documentación actual.
Imagine chatbots, asistentes digitales, herramientas de traducción de idiomas y utilidades de análisis de sentimientos; Todas estas aplicaciones habilitadas para LLM cobran vida con LangChain. Los desarrolladores utilizan esta plataforma para crear soluciones de modelos de lenguaje personalizados que aborden distintos requisitos.
A medida que se expande el horizonte del procesamiento del lenguaje natural y se profundiza su adopción, el ámbito de sus aplicaciones parece ilimitado.
Josep Ferrer Es ingeniero analítico de Barcelona. Se licenció en ingeniería física y actualmente trabaja en el campo de la Ciencia de Datos aplicada a la movilidad humana. Es un creador de contenido a tiempo parcial enfocado en ciencia y tecnología de datos. Puedes contactarlo en LinkedIn, Gorjeo o Medio.