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.