Modelos de Bate-papo

Os modelos de bate-papo são uma variante dos modelos de linguagem. Embora os modelos de bate-papo usem modelos de linguagem (LLM) no nível subjacente, suas interfaces públicas são um pouco diferentes. Em vez de expor uma API para "texto de entrada, texto de saída", eles usam uma interface que recebe "mensagens de bate-papo" como entrada e saída. Todo o processo de interação dos modelos de bate-papo é semelhante ao processo de troca de mensagens de bate-papo.

Começando com Modelos de Bate-papo

Este capítulo é baseado no modelo OpenAI.

Configuração

Por padrão, a LangChain não possui as dependências do modelo instaladas. Primeiro, instale o pacote Python da OpenAI:

pip install langchain-openai

O acesso à API requer uma chave de API, que pode ser configurada por meio de variáveis de ambiente. O exemplo a seguir demonstra como configurá-lo em um ambiente Linux:

export OPENAI_API_KEY="..."

Se preferir não definir variáveis de ambiente, você pode passar a chave diretamente pelo parâmetro nomeado openai_api_key ao inicializar a classe OpenAI LLM:

from langchain_openai import ChatOpenAI

chat = ChatOpenAI(openai_api_key="...")

Alternativamente, você pode inicializá-lo sem parâmetros:

from langchain_openai import ChatOpenAI
chat = ChatOpenAI()

Mensagens

A interface do modelo de bate-papo é baseada em mensagens em vez de texto bruto. Os tipos de mensagem suportados pela LangChain atualmente incluem AIMessage, HumanMessage, SystemMessage, FunctionMessage e ChatMessage, onde ChatMessage requer um parâmetro de função arbitrário. Na maioria dos casos, você lidará apenas com HumanMessage, AIMessage e SystemMessage.

LCEL

O modelo de bate-papo implementa a interface Runnable, com métodos de suporte, como invoke, ainvoke, stream, astream, batch, abatch, astream_log, assim o modelo de bate-papo também pode ser usado para expressões da Linguagem de Expressão da LangChain (LCEL).

O modelo de bate-papo aceita uma List[BaseMessage] como entrada, ou pode aceitar objetos que possam ser coercidos em mensagens, incluindo str (convertido em HumanMessage) e PromptValue.

from langchain_core.messages import HumanMessage, SystemMessage

mensagens = [
    SystemMessage(content="Você é um assistente prestativo"),
    HumanMessage(content="Qual é a finalidade da regularização do modelo?"),
]

Chamando o modelo com uma matriz de mensagens:

chat.invoke(mensagens)

Exemplo da mensagem de retorno:

AIMessage(content="O conteúdo da resposta do IA...detalhes omitidos...")

Transmitindo a saída da resposta do IA:

for pedaço in chat.stream(mensagens):
    print(pedaço.content, end="", flush=True)