Come aggiungere un tipo di memoria personalizzato in LangChain?

Come Aggiungere Un Tipo Di Memoria Personalizzato In Langchain



LangChain viene utilizzato per configurare/progettare modelli linguistici o chatbot in grado di interagire con gli esseri umani come una chat. Questi messaggi di chat sono collegati tramite catene come suggerisce il nome LangChain e l'utente può anche archiviarli in memoria. LangChain consente agli sviluppatori di utilizzare librerie di memoria che prevedono l'uso di classi integrate o la personalizzazione della propria memoria.

Contorno rapido

Questo post mostrerà:







Come aggiungere un tipo di memoria personalizzato in LangChain



Conclusione



Come aggiungere un tipo di memoria personalizzato in LangChain?

L'aggiunta di un tipo di memoria personalizzato in LangChain consente all'utente di ottenere le massime prestazioni della memoria. L'utente può configurare il tipo di memoria in base alle sue esigenze. Per aggiungere un tipo di memoria personalizzato in LangChain, segui semplicemente i seguenti passaggi:





Passaggio 1: installazione dei framework

Innanzitutto, installa il framework LangChain per iniziare con il processo di aggiunta di un tipo di memoria personalizzato:

pip installa langchain

L'esecuzione del comando precedente in Python Notebook installerà le dipendenze per LangChain come visualizzato nel seguente frammento:



Installa il modulo OpenAI per ottenere le sue librerie che possono essere utilizzate per configurare gli LLM:

pip installa openai

Questa guida utilizzerà il framework spaCy per progettare il tipo di memoria personalizzato in LangChain e il seguente codice verrà utilizzato per installare il modulo:

pip installa spazio

Il modello spaCy utilizza la tabella hash per memorizzare le informazioni come osservazione come i precedenti messaggi di chat. Il seguente codice viene utilizzato per scaricare il Large Language Model o LLM dalla libreria spaCy per creare un modello NLP avanzato:

! python -m spacy download en_core_web_lg

Importazione “ Voi ' E ' getpass ' servono per inserire la chiave API dall'account OpenAI a impostare il suo ambiente :

importare Voi
importare getpass

Voi . circa [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Chiave API OpenAI:' )

Passaggio 2: importazione delle librerie

Il passo successivo è importare le librerie richieste per personalizzare il tipo di memoria in base al modello di chat:

da langchain. schema importare BaseMemory

da langchain. Catene importare Catena di conversazione

da pidantico importare Modello base

da langchain. llms importare OpenAI

da digitando importare Elenco , Dict , Qualunque

Importare il ' SPAZIOSO ' libreria per caricare il ' it_core_web_lg ' e assegnarlo al modello ' nlp ” variabile in quanto è il modello di elaborazione del linguaggio naturale:

importare spazio

nlp = spazio. carico ( 'en_core_web_lg' )

Passaggio 3: creazione di memoria personalizzata

Successivamente, crea semplicemente la memoria personalizzata utilizzando gli argomenti BaseMemory e BaseModel nella classe Memory. Quindi, configurare le entità (raccolte/immagazzinate dai dati) che possono essere archiviate nella memoria come informazioni complete o come una singola unità. La memoria è configurata per contenere tutte le entità del documento per ottimizzare le prestazioni della memoria e del modello:

classe SpazioEntityMemory ( BaseMemory , Modello base ) :
''' Classe di memoria per la memorizzazione di informazioni sulle entità'''
entità: dict = { }
chiave_memoria: stra = 'entità'
def chiaro ( se stesso ) :
se stesso . entità = { }
@ proprietà
def variabili_di_memoria ( se stesso ) - > Elenco [ stra ] :
''' Inizializza le variabili fornite alla query'''
ritorno [ se stesso . chiave_memoria ]
#definire le variabili di memoria utilizzando gli argomenti
def carica_variabili_memoria ( se stesso , ingressi: dict [ stra , Qualunque ] ) - > Dict [ stra , stra ] :
''' Chiama le variabili per la memoria, ad esempio la chiave di entità'''
doc = nlp ( input [ elenco ( input. chiavi ( ) ) [ 0 ] ] )
#configurare le entità da archiviare nella memoria per una singola unità
entità = [
se stesso . entità [ stra ( ent ) ] per ent In doc. enti Se stra ( ent ) In se stesso . entità
]
ritorno { se stesso . chiave_memoria : ' \N ' . giuntura ( entità ) }
#define save_context() per utilizzare la memoria
def salva_contesto ( se stesso , ingressi: dict [ stra , Qualunque ] , uscite: dict [ stra , stra ] ) - > Nessuno :
'''Memorizza l'osservazione da questa chat nella memoria'''
testo = input [ elenco ( input. chiavi ( ) ) [ 0 ] ]
doc = nlp ( testo )
per ent In doc. enti :
ent_str = stra ( ent )
Se ent_str In se stesso . entità :
se stesso . entità [ ent_str ] + = F ' \N {testo}'
altro :
se stesso . entità [ ent_str ] = testo

Passaggio 4: configurazione del modello di prompt

Successivamente, configura semplicemente il modello di prompt che spiega la struttura dell'input fornito dall'utente/umano:

da langchain. richiede . richiesta importare Modello Prompt

modello = '''Quella che segue è un'interazione tra una macchina e un essere umano Dice di non sapere Se la macchina non conosce la risposta La macchina (AI) fornisce dettagli dal suo contesto e se non capisce la risposta a qualsiasi domanda dice semplicemente scusa

Informazioni sull'entità:

{entità}

Comunicazione:

Umano: {input}

AI:'''


richiesta = Modello Prompt ( input_variabili = [ 'entità' , 'ingresso' ] , modello = modello )

Passaggio 5: test del modello

Prima di testare il modello, configura semplicemente LLM utilizzando il metodo OpenAI() e imposta la funzione ConversationChain() con argomenti:

llm = OpenAI ( temperatura = 0 )

conversazione = Catena di conversazione (

llm = llm , richiesta = richiesta , prolisso = VERO , memoria = SpazioEntityMemory ( )

)

Fornisci informazioni al modello utilizzando l'argomento di input mentre chiami il metodo predit() con la variabile conversazione:

conversazione. prevedere ( ingresso = 'A Harrison piace l'apprendimento automatico' )

Produzione

Il modello ha assorbito le informazioni e le ha immagazzinate nella memoria e ha anche posto la domanda relativa alle informazioni per proseguire la conversazione:

L'utente può rispondere alla domanda del modello per aggiungere ulteriori informazioni alla memoria o testare la memoria ponendo la domanda sulle informazioni:

conversazione. prevedere (

ingresso = 'Qual è la materia preferita di Harrison'

)

Il modello fornisce l'output in base alle informazioni precedenti e lo visualizza sullo schermo come mostra il seguente frammento:

Si tratta di aggiungere un tipo di memoria personalizzato in LangChain.

Conclusione

Per aggiungere un tipo di memoria personalizzata in LangChain, installa semplicemente i moduli richiesti per importare le librerie per creare la memoria personalizzata. spaCy è l'importante libreria utilizzata in questa guida per aggiungere una memoria personalizzata utilizzando il suo modello NLP. Successivamente, configura la memoria personalizzata e il modello di prompt per fornire la struttura dell'interfaccia della chat. Una volta terminata la configurazione è sufficiente testare la memoria del modello chiedendo informazioni relative ai dati memorizzati.