1. Introducción a los LLM (Modelos de Lenguaje Grande)

Los Modelos de Lenguaje Grande (LLMs) son componentes fundamentales de LangChain. LangChain en sí no proporciona capacidades de modelos de lenguaje grande; en su lugar, encapsula varios modelos de lenguaje grande comunes, proporcionando una interfaz estándar para operar con modelos de lenguaje grande, lo que facilita el trabajo a los desarrolladores.

Actualmente, LangChain encapsula muchos modelos de lenguaje grande y también admite modelos personalizados. Los desarrolladores pueden encapsular sus propias interfaces de modelos nuevas.

  • Nota: Actualmente, existen muchos modelos grandes de código abierto y comerciales disponibles. Teniendo en cuenta las diferencias en costo y capacidades de modelos, cada persona puede tener diferentes elecciones. Además, puede haber cambios frecuentes de modelo, y los desarrolladores pueden no querer modificar demasiado el código comercial al cambiar de modelo. Aquí es donde entra en juego el valor de LangChain.

2. Configuración

2.1 Instalación

Para utilizar el LLM de OpenAI en LangChain, los usuarios deben instalar el paquete de Python de OpenAI ejecutando el siguiente comando:

pip install openai

2.2 Configuración de la Clave de la API

El acceso a la API de OpenAI requiere una clave de API, que se puede obtener creando una cuenta en la plataforma de OpenAI. Una vez obtenida la clave de la API, se puede configurar como una variable de entorno utilizando el siguiente comando:

export OPENAI_API_KEY="tu-clave-de-api"

Alternativamente, si no desea configurar una variable de entorno, también puede pasar directamente la clave de la API al inicializar la clase LLM de OpenAI, como se muestra a continuación:

from langchain_openai import OpenAI

llm = OpenAI(openai_api_key="tu-clave-de-api")

3. Implementación de LCEL

En LangChain, los LLMs implementan la Interfaz Ejecutable para el Lenguaje de Expresión de LangChain (LCEL). Esto significa que admiten diversas llamadas de funciones, como invoke, stream, batch y más.

Los LLMs aceptan una entrada de cadena o objetos que pueden convertirse en un indicador de cadena, incluidos List[BaseMessage] y PromptValue.

4. Ejemplo de Uso de LLM

4.1 Invocación

Para invocar un LLM con un indicador específico, se puede utilizar la función invoke, como se muestra a continuación:

llm.invoke("Proporciona un indicador para el LLM aquí")

4.2 Transmisión

El método de obtención y procesamiento de la salida de texto en tiempo real de los LLMs se llama transmisión. A continuación se muestra un ejemplo de uso de LLM para el procesamiento en tiempo real:

for fragmento in llm.stream("Proporciona un indicador para la transmisión de LLM aquí"):
    print(fragmento, end="", flush=True)

4.3 Procesamiento por Lotes

El procesamiento por lotes permite el procesamiento paralelo de múltiples entradas para los LLMs. Puedes procesar un lote de indicadores de esta manera:

llm.batch(["indicador 1", "indicador 2", "indicador 3"])

4.4 Operaciones Asincrónicas

Para mejorar la eficiencia, se pueden utilizar operaciones asincrónicas en conjunto con los LLMs. Operaciones asincrónicas como ainvoke, astream, abatch y astream_log permiten la ejecución asincrónica. A continuación se muestra un ejemplo de uso de LLM para el procesamiento asincrónico en tiempo real:

async for fragmento in llm.astream("Proporciona un indicador asincrónico para la transmisión de LLM aquí"):
    print(fragmento, end="", flush=True)

Estos ejemplos demuestran las diversas formas de aprovechar los LLMs para tareas de procesamiento de lenguaje natural dentro del marco de trabajo LangChain.