Aunque crear indicaciones efectivas para modelos de lenguaje grandes (LLM) no es tarea fácil, usar estos modelos generalmente es más fácil. Por otro lado, programar con modelos de lenguaje puede resultar complicado. Aquí es donde el marco de desarrollo de aplicaciones basado en modelos de lenguaje LangChain entra en juego. LangChain se puede utilizar para crear chatbots o asistentes personales, para resumir, analizar o generar preguntas/respuestas sobre documentos o datos estructurados, escribir o comprender código, interactuar con API y crear otras aplicaciones que aprovechen la IA generativa. Actualmente, LangChain existe en dos versiones, una en Python y otra en TypeScript/JavaScript. Al utilizar LangChain, los modelos de lenguaje pueden conectarse a fuentes de datos e interactuar con su entorno. Los componentes de LangChain son abstracciones modulares y colecciones de implementaciones de estas abstracciones. Las cadenas LangChain listas para usar son conjuntos estructurados de componentes con los que se pueden realizar tareas específicas de alto nivel. Los componentes se pueden utilizar para personalizar los canales existentes y crear otros nuevos.

Cabe aclarar que existen dos tipos de modelos de lenguaje, los LLM y los modelos de chat. Los LLM toman una cadena como entrada y devuelven una cadena. Las plantillas de chat toman una lista de mensajes como entrada y devuelven un mensaje de chat. Los mensajes de chat contienen dos elementos: contenido y un rol. Los roles especifican el origen del contenido: un humano, una IA, el sistema, una llamada a función o una entrada genérica. Normalmente, los LLM utilizan plantillas de mensajes para sus entradas. Una plantilla de aviso le permite especificar el rol que desea que asuma el LLM o la plantilla de chat, por ejemplo, "un asistente útil que traduce del inglés al francés". También permite aplicar el modelo a muchas instancias de contenido, como una lista de oraciones para traducir.

Índice
  1. Módulos, la base del funcionamiento de LangChain
  2. Depuración con LangSmith
  3. Integraciones de LangChain
  4. Instalación de LangChain para Python y JavaScript
  5. Ejemplo de uso de LangChain
  6. Lenguaje de expresión LangChain (LCEL)

Módulos, la base del funcionamiento de LangChain

LangChain tiene seis módulos:

- Modelo de E/S que sirve como interfaz con los modelos lingüísticos;
- Conexión de datos : una conexión de datos para interactuar con datos específicos de la aplicación;
- Cadenas : cadenas que construyen secuencias de llamadas;
- Agentes : permiten a los canales elegir qué herramientas utilizar basándose en directrices de alto nivel;
- Memoria : una memoria que mantiene el estado de la aplicación entre ejecuciones de una cadena;
- Devoluciones de llamada : recordatorios, que registran y transmiten pasos intermedios en una cadena.

Model I/O le permite administrar solicitudes, llamar a modelos de lenguaje a través de interfaces comunes y extraer información de las salidas del modelo. (Crédito: IDG)

Las aplicaciones complejas requieren que los LLM estén encadenados, ya sea entre sí o con otros componentes. LangChain proporciona la interfaz Chain para aplicaciones "encadenadas". Un sistema conversacional debe poder acceder directamente a una ventana de mensajes anteriores. Esto es lo que aporta LangChain con su capacidad de Memoria.

Data Connection proporciona los componentes básicos para cargar, transformar, almacenar y consultar datos. (Crédito: IDG)

A diferencia de las cadenas, que codifican secuencias, los agentes utilizan un modelo de lenguaje como motor de razonamiento para determinar qué acciones tomar y el orden en que realizarlas. Las devoluciones de llamada le permiten conectarse a las diferentes etapas de la solicitud de LLM. Son útiles para registrar, monitorear, transmitir y otras tareas.

Las devoluciones de llamada son útiles para registrar, monitorear, transmitir y otras tareas. (Crédito: IDG)

Depuración con LangSmith

LangSmith ayuda a rastrear y evaluar aplicaciones LLM LangChain y agentes inteligentes para pasar más fácilmente del prototipo a la producción. Por ahora, LangSmith todavía está en versión beta cerrada. A demostración y el documentación de LangSmith son accesibles sin tener que participar en la prueba beta.

Integraciones de LangChain

Hasta la fecha existen aproximadamente 163 integraciones de LangChain. Incluyen cinco devoluciones de llamada, nueve modelos de chat, 115 cargadores de documentos, seis transformadores de documentos, 54 LLM, 11 formas de implementar memoria (principalmente con bases de datos), 22 recuperadores (principalmente métodos de búsqueda), 31 plantillas de incrustación de texto, 21 kits de herramientas para agentes, 34 herramientas. y 42 tiendas de vectores. Las integraciones también están disponibles agrupadas por proveedor. LangChain esencialmente sirve como un centro neutral para todas estas capacidades.

Instalación de LangChain para Python y JavaScript

Para instalar LangChain para Python, se puede usar pip o conda. La mejor práctica es instalar paquetes de Python en entornos virtuales para evitar conflictos de versiones en las dependencias. Consulte a continuación la instalación con comandos pip. Para comandos conda, consulte página de instalación y haga clic en Conda.

La instalación básica y mínima es: pip install langchain.

Para su información, esto es lo que usé. Esta instalación no incluye módulos para proveedores de modelos, almacenes de datos u otras integraciones. Planeo instalar los que necesito, cuando los necesite.

Para instalar LangChain y modelos de lenguaje común, utilice pip instalar cadena larga[llms]

Para instalar LangChain y todas las integraciones, use pip instalar cadena larga[all]

Si usa zsh, que es el shell predeterminado en versiones recientes de macOS, las expresiones deben estar entre corchetes. De lo contrario, sin las comillas, el shell interpreta los corchetes como matrices. Por ejemplo : instalación de pip 'langchain[all]'

Para instalar LangChain para JavaScript, use npm, Yarn o pnpm, por ejemplo: npm install -S cadena de idiomas.

LangChain para JavaScript se puede utilizar en Node.js, Cloudflare Workers, Vercel/Next.js (funciones de navegador, sin servidor y Edge), funciones Supabase Edge, navegadores web y Deno.

Para obtener más información sobre LangChain para JavaScript, visite la página de instalación de LangChain para JavaScript.

Ejemplo de uso de LangChain

Aunque hay cientos de ejemplos en la documentación de LangChain, aquí solo presentaré uno. Este código Python se encuentra al final del inicio rápido e ilustra una cadena LLMC. Esta cadena toma variables de entrada, las pasa a una plantilla de solicitud para crear una solicitud, pasa la solicitud a un LLM (ChatOpenAI) y luego pasa la salida CSV a través de un analizador de salida (opcional) para crear una matriz de cadenas de Python.

de langchain.chat_models importar ChatOpenAI
de langchain.prompts.chat importar (

Plantilla de solicitud de chat,
Plantilla de solicitud de mensaje del sistema,
Plantilla de solicitud de mensaje humano,

)

de langchain.cadenas importar LLMChain
de langchain.esquema importar Analizador de salida base

clase CommaSeparatedListOutputParser(Analizador de salida base):
"Analiza el resultado de una llamada LLM en una lista separada por comas".

definición analizar gramaticalmente(sertexto: cadena):

"Analizar el resultado de una llamada LLM".
devolver texto.tira().split(", ")

plantilla = """Eres un asistente útil que genera listas separadas por comas. Un usuario pasará una categoría, y debes generar 5 objetos en esa categoría en una lista separada por comas para devolver SÓLO una lista separada por comas, y nada más." ""

sistema_message_prompt = Plantilla de solicitud de mensaje del sistema.from_template(plantilla)
plantilla_humana = "{texto}"
mensaje_humano_prompt = Plantilla de solicitud de mensaje humano.from_template(plantilla_humana)

chat_prompt = Plantilla de solicitud de chat.from_messages([system_message_prompt, human_message_prompt])
cadena = LLMChain(
llm=ChatOpenAI(),
mensaje = mensaje_chat,
analizador_salida=CommaSeparatedListOutputParser()

)

cadena.run("colores")

# >> ['red', 'blue', 'green', 'yellow', 'orange']

Lenguaje de expresión LangChain (LCEL)

El lenguaje de expresión LangChain es una forma declarativa de componer cadenas y obtener soporte de transmisión, por lotes y asíncrono listo para usar. LCEL facilita el uso de LangChain. Se puede usar cualquier compilación de LangChain existente para crear cadenas tal como lo haría al componerlas en código, ya que LCEL es esencialmente una alternativa de alto nivel a la creación de cadenas en Python o TypeScript/JavaScript.

También se puede ejecutar LangChain existente de forma interactiva para aprender LCEL, aunque primero se debe instalar LangChain para Python. Tenga en cuenta que no pude ejecutar Profesor de Langchain. Parece que hay un error que depende de la versión. Las expresiones LCEL utilizan caracteres de canalización (|) para vincular variables en cadenas. Por ejemplo, una cadena común básica utiliza una plantilla y un mensaje:

cadena = mensaje | modelo

En este contexto, podríamos tener este programa Python:

de langchain.indicaciones importar Plantilla de solicitud de chat
de langchain.chat_models importar ChatOpenAI

modelo = ChatOpenAI()
mensaje = Plantilla de solicitud de chat.from_template("cuéntame un chiste sobre {foo}")

cadena = mensaje | modelo

chain.invoke({"foo": "osos"})

El resultado (como se indica en el sitio) es el siguiente:

ME GUSTAMensaje(content="¿Por qué\"los osos no usan teléfonos celulares? \n\n¡Porque siempre tienen una terrible recepción "grizzly"!', adicional_kwargs={}, ejemplo=FALSO).

Como hemos visto, LangChain proporciona una forma poderosa de crear aplicaciones de IA generativa impulsadas por modelos de lenguaje y datos, conectadas en cadenas. Este artículo proporciona una descripción general de algunos ejemplos de Python, así como un enlace a los ejemplos de JavaScript. También es posible programar LangChain en R usando un shim de Python, como explica Sharon Machlis de InfoWorld en su artículo " IA generativa con LangChain, RStudio y suficiente Python » (IA generativa con LangChain, RStudio y suficiente Python). El blog LangChain, que publica un artículo breve casi todos los días, también ofrece otra base de recursos útiles.