1. Introdução aos LLMs

Os Modelos de Linguagem de Grande Escala (LLMs) são os componentes principais da LangChain. A própria LangChain não fornece capacidades de modelos de linguagem de grande escala; em vez disso, ela encapsula vários modelos de linguagem de grande escala comuns, fornecendo uma interface padrão para operar esses modelos, tornando conveniente para os desenvolvedores.

Atualmente, a LangChain encapsula muitos modelos de linguagem de grande escala e também suporta modelos personalizados. Os desenvolvedores podem encapsular suas próprias novas interfaces de modelo.

  • Nota: Atualmente, existem muitos modelos de grandes dimensões disponíveis de código aberto e comerciais. Considerando as diferenças de custo e capacidades do modelo, cada pessoa pode ter escolhas diferentes. Além disso, pode haver mudanças frequentes de modelo, e os desenvolvedores podem não querer modificar muito código de negócios ao mudar de modelo. É aqui que o valor da LangChain se destaca.

2. Configuração

2.1 Instalação

Para usar o OpenAI LLM na LangChain, os usuários precisam instalar o pacote OpenAI Python executando o seguinte comando:

pip install openai

2.2 Configuração da Chave de API

O acesso à API do OpenAI requer uma chave de API, que pode ser obtida criando uma conta na plataforma OpenAI. Uma vez que a chave de API é obtida, ela pode ser configurada como uma variável de ambiente usando o seguinte comando:

export OPENAI_API_KEY="sua-chave-de-api"

Ou, se você não deseja configurar uma variável de ambiente, também pode passar diretamente a chave de API ao inicializar a classe OpenAI LLM, conforme mostrado abaixo:

from langchain_openai import OpenAI

llm = OpenAI(openai_api_key="sua-chave-de-api")

3. Implementação do LCEL

Na LangChain, LLMs implementam a Interface Runnable para a Linguagem de Expressão da LangChain (LCEL). Isso significa que eles suportam várias chamadas de função, como invoke, stream, batch e outras.

LLMs aceitam entrada de string ou objetos que possam ser convertidos em um prompt de string, incluindo List[BaseMessage] e PromptValue.

4. Exemplo de Uso do LLM

4.1 Invocação

Para invocar um LLM com um prompt específico, a função invoke pode ser usada, conforme mostrado abaixo:

llm.invoke("Fornecer um prompt para o LLM aqui")

4.2 Streaming

O método de obtenção e processamento de saída de texto em tempo real dos LLMs é chamado de streaming. Abaixo está um exemplo de uso de LLM para processamento de streaming:

for chunk in llm.stream("Fornecer um prompt para o streaming LLM aqui"):
    print(chunk, end="", flush=True)

4.3 Processamento em Lote

O processamento em lote permite o processamento paralelo de várias entradas para LLMs. Você pode processar um lote de prompts assim:

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

4.4 Operações Assíncronas

Para maior eficiência, operações assíncronas podem ser usadas em conjunto com LLMs. Operações assíncronas como ainvoke, astream, abatch e astream_log permitem a execução assíncrona. Abaixo está um exemplo de uso de LLM para processamento de streaming assíncrono:

async for chunk in llm.astream("Fornecer um prompt assíncrono para o streaming LLM aqui"):
    print(chunk, end="", flush=True)

Esses exemplos demonstram as diversas maneiras de aproveitar os LLMs para tarefas de processamento de linguagem natural dentro do framework LangChain.