Como adicionar um tipo de memória personalizado no LangChain?

Como Adicionar Um Tipo De Memoria Personalizado No Langchain



LangChain é usado para configurar/projetar modelos de linguagem ou chatbots que podem interagir com humanos como um chat. Essas mensagens de bate-papo são vinculadas por meio de cadeias, como sugere o nome LangChain, e o usuário também pode armazená-las na memória. O LangChain permite que os desenvolvedores utilizem bibliotecas de memória que proporcionam o uso de classes integradas ou a customização de sua própria memória.

Esboço rápido

Esta postagem mostrará:







Como adicionar um tipo de memória personalizado em LangChain



Conclusão



Como adicionar um tipo de memória personalizado no LangChain?

Adicionar um tipo de memória personalizado no LangChain permite ao usuário obter o máximo desempenho da memória. O usuário pode configurar o tipo de memória de acordo com suas necessidades. Para adicionar um tipo de memória personalizado no LangChain, basta seguir as seguintes etapas:





Etapa 1: instalação de estruturas

Primeiro, instale a estrutura LangChain para iniciar o processo de adição de um tipo de memória personalizado:

pip instalar langchain

A execução do comando acima no Python Notebook instalará as dependências do LangChain conforme exibido no seguinte trecho:



Instale o módulo OpenAI para obter suas bibliotecas que podem ser usadas para configurar os LLMs:

pip instalar openai

Este guia usará a estrutura spaCy para projetar o tipo de memória personalizado no LangChain e o seguinte código será usado para instalar o módulo:

pip instalar espaçoso

O modelo spaCy usa a tabela hash para armazenar as informações como observação, como mensagens de bate-papo anteriores. O código a seguir é usado para baixar o Large Language Model ou LLM da biblioteca spaCy para construir um modelo de PNL avançado:

! python -m download espacial en_core_web_lg

Importando “ os ' e ' Obter passagem ”as bibliotecas servem para inserir a chave API da conta do OpenAI para configurar seu ambiente :

importar os
importar Obter passagem

os . aproximadamente [ 'OPENAI_API_KEY' ] = Obter passagem . Obter passagem ( 'Chave de API OpenAI:' )

Passo 2: Importando Bibliotecas

O próximo passo é importar as bibliotecas necessárias para customizar o tipo de memória de acordo com o modelo de chat:

de cadeia longa. esquema importar Memória Base

de cadeia longa. correntes importar Cadeia de conversação

de pydantico importar Modelo Base

de cadeia longa. llms importar OpenAI

de digitando importar Lista , Ditado , Qualquer

Importando o “ spaCy ”biblioteca para carregar o“ en_core_web_lg ”Modelo e atribua-o ao“ PNL ”variável, pois é o modelo de Processamento de Linguagem Natural:

importar espaçoso

PNL = espaçoso. carregar ( 'en_core_web_lg' )

Etapa 3: Construindo Memória Personalizada

Depois disso, basta construir a memória customizada usando os argumentos BaseMemory e BaseModel na classe Memory. Em seguida, configure entidades (coletadas/armazenadas a partir dos dados) que podem ser armazenadas na memória como informações completas ou como uma unidade única. A memória é configurada para conter todas as entidades do documento para otimizar o desempenho da memória e do modelo:

aula Memória SpacyEntity ( Memória Base , Modelo Base ) :
''' Classe de memória para armazenar informações sobre entidades'''
entidades: ditar = { }
chave_de_memória: str = 'entidades'
definição claro ( auto ) :
auto . entidades = { }
@ propriedade
definição variáveis_de_memória ( auto ) - > Lista [ str ] :
''' Inicialize as variáveis ​​fornecidas para a consulta'''
retornar [ auto . chave_de_memória ]
#define as variáveis ​​de memória usando os argumentos
definição carregar_memória_variáveis ( auto , entradas: ditado [ str , Qualquer ] ) - > Ditado [ str , str ] :
''' Chame as variáveis ​​para memória, ou seja, chave de entidade'''
documento = PNL ( entradas [ lista ( entradas. chaves ( ) ) [ 0 ] ] )
#configure entidades a serem armazenadas na memória de uma unidade individual
entidades = [
auto . entidades [ str ( ent ) ] para ent em doutor. entes se str ( ent ) em auto . entidades
]
retornar { auto . chave_de_memória : ' \n ' . juntar ( entidades ) }
#define o save_context() para usar a memória
definição salvar_contexto ( auto , entradas: ditado [ str , Qualquer ] , saídas: ditado [ str , str ] ) - > Nenhum :
'''Armazenar a observação deste bate-papo na memória'''
texto = entradas [ lista ( entradas. chaves ( ) ) [ 0 ] ]
documento = PNL ( texto )
para ent em doutor. entes :
ent_str = str ( ent )
se ent_str em auto . entidades :
auto . entidades [ ent_str ] + = f ' \n {texto}'
outro :
auto . entidades [ ent_str ] = texto

Etapa 4: configurar o modelo de prompt

Depois disso, basta configurar o modelo de prompt que explica a estrutura da entrada fornecida pelo usuário/humano:

de cadeia longa. Comandos . incitar importar Modelo de prompt

modelo = '''O que se segue é uma interação entre uma máquina e um humano Ele diz que não sabe Se a máquina não sabe a resposta A máquina (IA) fornece detalhes de seu contexto e se não entende a resposta a qualquer pergunta, ela simplesmente pede desculpas

Informações da entidade:

{entidades}

Comunicação:

Humano: {entrada}

IA:'''


incitar = Modelo de prompt ( variáveis_de_entrada = [ 'entidades' , 'entrada' ] , modelo = modelo )

Etapa 5: Testando o Modelo

Antes de testar o modelo, basta configurar o LLM usando o método OpenAI() e configurar a função ConversationChain() com argumentos:

llm = OpenAI ( temperatura = 0 )

conversação = Cadeia de conversação (

llm = llm , incitar = incitar , detalhado = Verdadeiro , memória = Memória SpacyEntity ( )

)

Forneça informações ao modelo usando o argumento de entrada enquanto chama o método predizer() com a variável de conversação:

conversação. prever ( entrada = 'Harrison gosta de aprendizado de máquina' )

Saída

A modelo absorveu as informações e as armazenou na memória e também colocou a questão relacionada às informações para prosseguir a conversa:

O usuário pode responder à pergunta do modelo para adicionar mais informações à memória ou testar a memória fazendo a pergunta sobre as informações:

conversação. prever (

entrada = 'Qual é a matéria favorita do Harrison'

)

O modelo fornece a saída com base nas informações anteriores e a exibe na tela como mostra o seguinte trecho:

Trata-se de adicionar um tipo de memória personalizado no LangChain.

Conclusão

Para adicionar um tipo de memória customizada no LangChain, basta instalar os módulos necessários para importar bibliotecas para construir a memória customizada. SpaCy é a importante biblioteca usada neste guia para adicionar uma memória customizada usando seu modelo de PNL. Depois disso, configure a memória customizada e o modelo de prompt para fornecer a estrutura da interface de chat. Feita a configuração, basta testar a memória do modelo solicitando informações relacionadas aos dados armazenados.