Hogyan lehet egyéni memóriatípust hozzáadni a LangChainhez?

Hogyan Lehet Egyeni Memoriatipust Hozzaadni A Langchainhez



A LangChain olyan nyelvi modellek vagy chatbotok konfigurálására/tervezésére szolgál, amelyek csevegésszerűen kommunikálhatnak az emberekkel. Ezek a chat üzenetek láncokon keresztül kapcsolódnak egymáshoz, ahogy a LangChain név is sugallja, és a felhasználó a memóriában is tárolhatja őket. A LangChain lehetővé teszi a fejlesztők számára olyan memóriakönyvtárak használatát, amelyek lehetővé teszik a beépített osztályok használatát vagy a saját memória testreszabását.

Gyors vázlat

Ez a bejegyzés a következőket fogja mutatni:







Egyéni memóriatípus hozzáadása a LangChainben



Következtetés



Hogyan lehet egyéni memóriatípust hozzáadni a LangChainhez?

Egy testreszabott memóriatípus hozzáadása a LangChain-hez lehetővé teszi a felhasználó számára, hogy memóriaként a legnagyobb teljesítményt érje el. A felhasználó saját igényei szerint konfigurálhatja a memória típusát. Egyéni memóriatípus hozzáadásához a LangChainben, egyszerűen hajtsa végre a következő lépéseket:





1. lépés: Keretrendszerek telepítése

Először telepítse a LangChain keretrendszert az egyéni memóriatípus hozzáadásának megkezdéséhez:

pip install langchain

A fenti parancs futtatása a Python-jegyzetfüzetben telepíti a LangChain függőségeit a következő részletben látható módon:



Telepítse az OpenAI modult, hogy megkapja az LLM-ek konfigurálására használható könyvtárait:

pip install openai

Ez az útmutató a spaCy keretrendszert fogja használni a LangChain egyéni memóriatípusának megtervezéséhez, és a következő kódot használják a modul telepítéséhez:

pip install space

A spaCy modell a hash táblát használja az információk megfigyelésként történő tárolására, mint a korábbi chat üzeneteknél. A következő kóddal tölthető le a Large Language Model vagy az LLM a spaCy könyvtárból egy fejlett NLP-modell létrehozásához:

! python -m spacy letöltés en_core_web_lg

Importálás te ” és „ getpass ” könyvtárak az API-kulcs bevitelére szolgálnak az OpenAI fiókjából kialakítani a környezetét :

import te
import getpass

te . hozzávetőlegesen, körülbelül [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API kulcs:' )

2. lépés: Könyvtárak importálása

A következő lépés a szükséges könyvtárak importálása a memóriatípus csevegési modell szerinti testreszabásához:

tól től langchain. séma import BaseMemory

tól től langchain. láncok import Beszélgetési lánc

tól től pydantikus import BaseModel

tól től langchain. llms import OpenAI

tól től gépelés import Lista , Dict , Bármi

A ' borsos ' könyvtár a ' en_core_web_lg ” modellt, és rendelje hozzá a „ nlp ” változó, mivel ez a Natural Language Processing modell:

import borsos

nlp = borsos. Betöltés ( 'en_core_web_lg' )

3. lépés: Egyéni memória létrehozása

Ezt követően egyszerűen építse fel az egyéni memóriát a Memory osztály BaseMemory és BaseModel argumentumainak használatával. Ezután konfigurálja az entitásokat (az adatokból gyűjtve/tárolva), amelyek teljes információként vagy egyetlen egységként tárolhatók a memóriában. A memória úgy van beállítva, hogy a dokumentum összes entitását tartalmazza a memória és a modell teljesítményének optimalizálása érdekében:

osztály SpaceEntityMemory ( BaseMemory , BaseModel ) :
''' Memóriaosztály az entitásokkal kapcsolatos információk tárolására'''
entitások: diktálja = { }
memória_kulcs: str = 'entitások'
def egyértelmű ( maga ) :
maga . entitások = { }
@ ingatlan
def memória_változók ( maga ) - > Lista [ str ] :
''' Inicializálja a lekérdezéshez megadott változókat'''
Visszatérés [ maga . memória_kulcs ]
#definiálja a memóriaváltozókat az argumentumok segítségével
def load_memory_variables ( maga , bemenetek: Dict [ str , Bármi ] ) - > Dict [ str , str ] :
''' Hívja meg a memória változóit, azaz az entitáskulcsot'''
doc = nlp ( bemenetek [ lista ( bemenetek. kulcsok ( ) ) [ 0 ] ] )
#konfigurálja a memóriában tárolandó entitásokat az egyes egységekhez
entitások = [
maga . entitások [ str ( ent ) ] számára ent ban ben doc. ent ha str ( ent ) ban ben maga . entitások
]
Visszatérés { maga . memória_kulcs : ' \n ' . csatlakozik ( entitások ) }
#define a save_context() a memória használatához
def save_context ( maga , bemenetek: Dict [ str , Bármi ] , kimenetek: Dict [ str , str ] ) - > Egyik sem :
'''A csevegés áruházi megfigyelése a memóriába'''
szöveg = bemenetek [ lista ( bemenetek. kulcsok ( ) ) [ 0 ] ]
doc = nlp ( szöveg )
számára ent ban ben doc. ent :
ent_str = str ( ent )
ha ent_str ban ben maga . entitások :
maga . entitások [ ent_str ] + = f ' \n {szöveg}'
más :
maga . entitások [ ent_str ] = szöveg

4. lépés: A prompt sablon konfigurálása

Ezután egyszerűen állítsa be a prompt sablont, amely elmagyarázza a felhasználó/ember által megadott bemenet szerkezetét:

tól től langchain. felszólítja . gyors import PromptTemplate

sablon = '''A következő interakció egy gép és egy ember között Azt mondja, hogy nem tudja Ha a gép nem tudja a választ A gép (AI) részleteket közöl a kontextusából, és ha nem érti a választ bármely kérdésre csak annyit mond, hogy elnézést

Az entitás adatai:

{entities}

Kommunikáció:

Ember: {input}

AI: '''


gyors = PromptTemplate ( bemeneti_változók = [ 'entitások' , 'bemenet' ] , sablon = sablon )

5. lépés: A modell tesztelése

A modell tesztelése előtt egyszerűen konfigurálja az LLM-et az OpenAI() metódussal, és állítsa be a ConversationChain() függvényt argumentumokkal:

llm = OpenAI ( hőfok = 0 )

beszélgetés = Beszélgetési lánc (

llm = llm , gyors = gyors , bőbeszédű = Igaz , memória = SpaceEntityMemory ( )

)

Adjon információt a modellnek a bemeneti argumentum használatával, miközben meghívja a ennusta() metódust a beszélgetési változóval:

beszélgetés. megjósolni ( bemenet = 'Harrison szereti a gépi tanulást' )

Kimenet

A modell az információt magába szívta és eltárolta a memóriában, valamint feltette az információval kapcsolatos kérdést a beszélgetés folytatásához:

A felhasználó válaszolhat a modell kérdésére, hogy további információkat adjon a memóriához, vagy tesztelheti a memóriát az információra vonatkozó kérdés feltevésével:

beszélgetés. megjósolni (

bemenet = 'Mi Harrison kedvenc témája'

)

A modell az előző információk alapján adja meg a kimenetet, és megjeleníti a képernyőn, ahogy az alábbi részlet mutatja:

Ez minden arról szól, hogy egyéni memóriatípust adjunk hozzá a LangChainhez.

Következtetés

Egyéni memóriatípus hozzáadásához a LangChainben egyszerűen telepítse a szükséges modulokat a könyvtárak importálásához az egyéni memória felépítéséhez. A spaCy az a fontos könyvtár, amelyet ebben az útmutatóban használunk egyéni memória hozzáadásához az NLP-modell használatával. Ezt követően konfigurálja az egyéni memóriát és a prompt sablont, hogy megadja a csevegési felület szerkezetét. A konfiguráció befejezése után egyszerűen tesztelje a modell memóriáját a tárolt adatokkal kapcsolatos információk kérésével.