Wie füge ich einen benutzerdefinierten Speichertyp in LangChain hinzu?

Wie Fuge Ich Einen Benutzerdefinierten Speichertyp In Langchain Hinzu



LangChain wird zum Konfigurieren/Entwerfen von Sprachmodellen oder Chatbots verwendet, die wie ein Chat mit Menschen interagieren können. Diese Chatnachrichten sind, wie der Name LangChain vermuten lässt, durch Ketten verknüpft und können vom Benutzer auch im Speicher gespeichert werden. Mit LangChain können Entwickler Speicherbibliotheken verwenden, die die Verwendung integrierter Klassen oder die Anpassung ihres eigenen Speichers ermöglichen.

Kurzer Überblick

Dieser Beitrag zeigt:







So fügen Sie einen benutzerdefinierten Speichertyp in LangChain hinzu



Abschluss



Wie füge ich einen benutzerdefinierten Speichertyp in LangChain hinzu?

Durch das Hinzufügen eines benutzerdefinierten Speichertyps in LangChain kann der Benutzer die maximale Speicherleistung erzielen. Der Benutzer kann den Speichertyp entsprechend seinen Anforderungen konfigurieren. Um einen benutzerdefinierten Speichertyp in LangChain hinzuzufügen, führen Sie einfach die folgenden Schritte aus:





Schritt 1: Frameworks installieren

Installieren Sie zunächst das LangChain-Framework, um mit dem Hinzufügen eines benutzerdefinierten Speichertyps zu beginnen:

pip langchain installieren

Wenn Sie den obigen Befehl im Python-Notebook ausführen, werden die Abhängigkeiten für LangChain installiert, wie im folgenden Snippet angezeigt:



Installieren Sie das OpenAI-Modul, um dessen Bibliotheken zu erhalten, die zur Konfiguration der LLMs verwendet werden können:

pip openai installieren

In dieser Anleitung wird das spaCy-Framework verwendet, um den benutzerdefinierten Speichertyp in LangChain zu entwerfen, und der folgende Code wird zur Installation des Moduls verwendet:

pip install spacy

Das spaCy-Modell verwendet die Hash-Tabelle, um die Informationen als Beobachtung wie frühere Chat-Nachrichten zu speichern. Der folgende Code wird verwendet, um das Large Language Model oder LLM aus der spaCy-Bibliothek herunterzuladen, um ein erweitertes NLP-Modell zu erstellen:

! python -m spacy herunterladen en_core_web_lg

Importieren „ Du ' Und ' getpass „Bibliotheken dienen zur Eingabe des API-Schlüssels vom OpenAI-Konto in.“ seine Umgebung einrichten :

importieren Du
importieren getpass

Du . etwa [ „OPENAI_API_KEY“ ] = getpass . getpass ( „OpenAI-API-Schlüssel:“ )

Schritt 2: Bibliotheken importieren

Der nächste Schritt besteht darin, die erforderlichen Bibliotheken zu importieren, um den Speichertyp entsprechend dem Chat-Modell anzupassen:

aus langchain. Schema importieren Basisspeicher

aus langchain. Ketten importieren Konversationskette

aus pydantisch importieren Basismodell

aus langchain. lms importieren OpenAI

aus Tippen importieren Aufführen , Diktat , Beliebig

Importieren der „ spacig ”-Bibliothek zum Laden der „ en_core_web_lg ”-Modell und weisen Sie es dem „ nlp ” Variable, da es sich um das Natural Language Processing-Modell handelt:

importieren spacig

nlp = spacig. Belastung ( „en_core_web_lg“ )

Schritt 3: Erstellen eines benutzerdefinierten Speichers

Anschließend erstellen Sie einfach den benutzerdefinierten Speicher mithilfe der Argumente BaseMemory und BaseModel in der Memory-Klasse. Konfigurieren Sie dann Entitäten (aus den Daten gesammelt/gespeichert), die als vollständige Informationen oder als einzelne Einheit im Speicher gespeichert werden können. Der Speicher ist so konfiguriert, dass er alle Entitäten aus dem Dokument enthält, um die Leistung des Speichers und des Modells zu optimieren:

Klasse SpacyEntityMemory ( Basisspeicher , Basismodell ) :
„““ Speicherklasse zum Speichern von Informationen über Entitäten““
Entitäten: dict = { }
Speicherschlüssel: str = „Entitäten“
def klar ( selbst ) :
selbst . Entitäten = { }
@ Eigentum
def Speichervariablen ( selbst ) - > Aufführen [ str ] :
„““ Initialisieren Sie die für die Abfrage bereitgestellten Variablen.“
zurückkehren [ selbst . Speicherschlüssel ]
#Definieren Sie die Speichervariablen mithilfe der Argumente
def Load_memory_variables ( selbst , Eingaben: Dikt [ str , Beliebig ] ) - > Diktat [ str , str ] :
„““ Rufen Sie die Variablen für den Speicher auf, d. h. den Entitätsschlüssel““
Dok = nlp ( Eingänge [ Liste ( Eingänge. Schlüssel ( ) ) [ 0 ] ] )
#Konfigurieren Sie Entitäten, die im Speicher für eine einzelne Einheit gespeichert werden sollen
Entitäten = [
selbst . Entitäten [ str ( ent ) ] für ent In Dok. ents Wenn str ( ent ) In selbst . Entitäten
]
zurückkehren { selbst . Speicherschlüssel : ' \N ' . verbinden ( Entitäten ) }
#Definieren Sie save_context(), um den Speicher zu verwenden
def save_context ( selbst , Eingaben: Dikt [ str , Beliebig ] , Ausgaben: Dikt [ str , str ] ) - > Keiner :
„“„Beobachtungen aus diesem Chat im Speicher speichern““
Text = Eingänge [ Liste ( Eingänge. Schlüssel ( ) ) [ 0 ] ]
Dok = nlp ( Text )
für ent In Dok. ents :
ent_str = str ( ent )
Wenn ent_str In selbst . Entitäten :
selbst . Entitäten [ ent_str ] + = F ' \N {Text}'
anders :
selbst . Entitäten [ ent_str ] = Text

Schritt 4: Eingabeaufforderungsvorlage konfigurieren

Anschließend konfigurieren Sie einfach die Eingabeaufforderungsvorlage, die die Struktur der vom Benutzer/Menschen bereitgestellten Eingaben erklärt:

aus langchain. Aufforderungen . prompt importieren PromptTemplate

Vorlage = '''Das Folgende ist eine Interaktion zwischen einer Maschine und einem Menschen. Es heißt, es weiß es nicht. Wenn die Maschine die Antwort nicht kennt, liefert die Maschine (KI) Details aus ihrem Kontext und wenn sie die Antwort auf eine Frage nicht versteht entschuldigt sich einfach

Informationen zur Entität:

{Entitäten}

Kommunikation:

Mensch: {input}

KI:'''


prompt = PromptTemplate ( Eingabevariablen = [ „Entitäten“ , 'Eingang' ] , Vorlage = Vorlage )

Schritt 5: Testen des Modells

Bevor Sie das Modell testen, konfigurieren Sie einfach das LLM mit der OpenAI()-Methode und richten Sie die ConversationChain()-Funktion mit Argumenten ein:

llm = OpenAI ( Temperatur = 0 )

Gespräch = Konversationskette (

llm = llm , prompt = prompt , ausführlich = WAHR , Erinnerung = SpacyEntityMemory ( )

)

Geben Sie dem Modell mithilfe des Eingabearguments Informationen, während Sie die Methode „predict()“ mit der Konversationsvariablen aufrufen:

Gespräch. vorhersagen ( Eingang = „Harrison mag maschinelles Lernen“ )

Ausgabe

Das Modell hat die Informationen aufgenommen und im Gedächtnis gespeichert und außerdem die Frage nach den Informationen gestellt, um mit dem Gespräch weiterzukommen:

Der Benutzer kann auf die Frage des Modells antworten, um dem Speicher weitere Informationen hinzuzufügen, oder den Speicher testen, indem er die Frage zu den Informationen stellt:

Gespräch. vorhersagen (

Eingang = „Was ist Harrisons Lieblingsfach?“

)

Das Modell gibt die Ausgabe basierend auf den vorherigen Informationen aus und zeigt sie auf dem Bildschirm an, wie im folgenden Snippet dargestellt:

Dabei geht es darum, einen benutzerdefinierten Speichertyp in LangChain hinzuzufügen.

Abschluss

Um einen benutzerdefinierten Speichertyp in LangChain hinzuzufügen, installieren Sie einfach die erforderlichen Module zum Importieren von Bibliotheken, um den benutzerdefinierten Speicher zu erstellen. spaCy ist die wichtige Bibliothek, die in diesem Handbuch verwendet wird, um mithilfe ihres NLP-Modells einen benutzerdefinierten Speicher hinzuzufügen. Anschließend konfigurieren Sie die benutzerdefinierte Speicher- und Eingabeaufforderungsvorlage, um die Struktur der Chat-Oberfläche festzulegen. Sobald die Konfiguration abgeschlossen ist, testen Sie einfach den Speicher des Modells, indem Sie nach Informationen zu den gespeicherten Daten fragen.