LangChain-Tutorial: Eine Anleitung zum Erstellen von LLM-gestützten Anwendungen

Large Language Models (LLMs) wie GPT-4 und LLaMA haben in den letzten Jahren völlig neue Möglichkeiten eröffnet. Sie haben einen regelrechten Boom bei KI-Tools und -Anwendungen ausgelöst, und ChatGPT ist quasi über Nacht zu einem allgemein bekannten Begriff geworden. Doch dieser Boom wäre nicht möglich ohne die leistungsstarken Tools und Frameworks, die speziell für die Entwicklung dieser neuen Generation von Anwendungen geschaffen wurden.

Eines dieser Frameworks ist LangChain, das die Entwicklung neuer Anwendungen auf Basis bestehender LLMs erheblich erleichtert. Es wurde von dem Machine-Learning-Experten Harrison Chase entwickelt und 2022 als Open-Source-Projekt auf den Markt gebracht. Dieses Framework ist ein Meilenstein, um die technologische Lücke zwischen bestehenden Sprachmodellen und der Entwicklung neuer, vielseitiger Anwendungen zu schließen.

Was ist LangChain?

Einfach ausgedrückt ist LangChain eine standardisierte Schnittstelle, die den Entwicklungsprozess von KI-Anwendungen vereinfacht. Es bietet Ihnen eine Vielzahl von Tools, mit denen Sie verschiedene Komponenten miteinander verknüpfen und komplexe Workflows erstellen können. Dazu gehören LLMs ebenso wie unterschiedlichste Datenquellen. Interagiert ein Nutzer mit der App, nutzt LangChain die Verbindung zu einem LLM, um die Anfrage zu verarbeiten und die passende Antwort zu generieren. Zudem kann es Informationen und Daten aus externen Quellen wie Dokumenten oder Datenbanken heranziehen, um präzisere und kontextuell relevantere Antworten zu liefern.

Wenn ein Nutzer beispielsweise eine Frage stellt, nutzt LangChain das LLM, um die Frage zu erfassen und eine Antwort zu formulieren. Gleichzeitig greift es jedoch auf eine oder mehrere externe Datenquellen zu, um diese Antwort anzureichern. Das macht Ihre Anwendung um ein Vielfaches intelligenter und versetzt sie in die Lage, auch komplexe und hochspezialisierte Anfragen präzise zu beantworten.

Im Grunde erweitern Sie damit die Fähigkeiten des LLMs, indem Sie es mit Daten speisen, die für die von Ihnen gewünschten Problemlösungen weitaus relevanter sind.

Das Framework ist sowohl als Python- als auch als TypeScript-Paket verfügbar und bietet mehrere beeindruckende Funktionen:

  • Modellinteraktion: LangChain ermöglicht die Interaktion mit beliebigen Sprachmodellen, indem es Eingaben effizient verwaltet und relevante Informationen aus den Ausgaben extrahiert.

  • Effiziente Integration: Es ermöglicht eine effiziente Integration mit beliebten KI-Plattformen wie OpenAI und Hugging Face.

  • Flexibilität und Individualisierung: LangChain bietet Flexibilität, Anpassungsoptionen und leistungsstarke Komponenten, um eine Vielzahl von Anwendungen in verschiedenen Branchen zu schaffen.

  • Kernkomponenten: Das Framework besteht aus LangChain-Bibliotheken, LangChain-Vorlagen, LangServe und LangSmith, die den gesamten Anwendungslebenszyklus vereinfachen. 

  • Standardisierte Schnittstellen: Es bietet standardisierte Schnittstellen, Prompt-Management und Speicherfunktionen, sodass Sprachmodelle mit Datenquellen interagieren können.

Diese Kombination von Funktionen macht das Framework flexibel, schnell, skalierbar und benutzerfreundlich – was Musik in den Ohren all derjenigen Entwickler ist, die den Einstieg in den Bereich der KI wagen möchten. 

Wie funktioniert LangChain?

LangChain ist ein modulares Framework, das sich nahtlos in LLMs integrieren lässt. Als standardisierte Schnittstelle abstrahiert es die Komplexität und die Hürden, die mit der Arbeit mit verschiedenen LLM-APIs einhergehen – der Integrationsprozess bleibt derselbe, egal ob Sie GPT-4, LLaMA oder ein anderes LLM Ihrer Wahl nutzen möchten. Zudem bietet es eine dynamische Modellauswahl, sodass Entwickler stets das am besten geeignete LLM für die jeweilige Aufgabe auswählen können, die sie mit LangChain umsetzen.

Das modulare Design erleichtert zudem die Verarbeitung und Transformation von Eingangsdaten in direkt nutzbare Ergebnisse. Es unterstützt verschiedene Datentypen, darunter Text, Code und Multimedia-Formate, und bietet Werkzeuge für die Vorverarbeitung, Bereinigung und Normalisierung von Daten. Dies stellt sicher, dass die Daten optimal auf die Verarbeitung durch die LLMs vorbereitet sind, was Schritte wie Tokenisierung, Normalisierung und Sprachidentifikation umfassen kann.

Zudem verarbeitet LangChain die Ausgaben des LLMs und transformiert sie in Formate, die für die Anwendung oder die spezifischen Aufgabenanforderungen geeignet sind. Dies umfasst Aufgaben wie die Textformatierung, das Generieren von Code-Snippets oder die Bereitstellung von Zusammenfassungen komplexer Daten.

Kernkonzepte von LangChain

Die Architektur von LangChain basiert auf dem Konzept von Komponenten und Chains (Ketten). Komponenten sind wiederverwendbare Module, die spezifische Aufgaben erfüllen, wie etwa das Verarbeiten von Eingangsdaten, das Formatieren von Texten, der Zugriff auf externe Informationen oder das Verwalten von Workflows. Chains sind Sequenzen dieser Komponenten, die zusammenarbeiten, um ein übergeordnetes Ziel zu erreichen – beispielsweise das Zusammenfassen eines Dokuments, das Generieren kreativer Textformate oder die Bereitstellung personalisierter Empfehlungen.

Komponenten und Module

In LangChain werden die Begriffe „Komponenten“ und „Module“ manchmal synonym verwendet, es besteht jedoch ein subtiler Unterschied zwischen den beiden: 

  • Komponenten sind die zentralen Bausteine von LangChain, die jeweils spezifische Aufgaben oder Funktionalitäten abbilden. Sie sind in der Regel kompakt, fokussiert und lassen sich flexibel in verschiedenen Anwendungen und Workflows wiederverwenden. 

  • Module hingegen kombinieren mehrere Komponenten, um komplexere Funktionalitäten zu bilden. LangChain bietet standardisierte Schnittstellen für einige seiner wichtigsten Module. Dazu gehören Memory-Module – wiederverwendbare Bausteine, die Daten zur Nutzung durch Large Language Models speichern und verwalten – sowie Agenten, die als dynamische Steuerungseinheiten Chains auf Basis von Echtzeit-Feedback und Nutzerinteraktionen orchestrieren. 

Ebenso wie Komponenten sind auch Module wiederverwendbar und lassen sich miteinander kombinieren, um noch komplexere Workflows zu erstellen. Dies wird als Chain (Kette) bezeichnet, bei der Sequenzen von Komponenten oder Modulen aneinandergereiht werden, um ein bestimmtes Ziel zu erreichen. Chains sind von grundlegender Bedeutung für die Workflow-Orchestrierung in LangChain und unerlässlich für die Entwicklung effektiver Anwendungen, die eine Vielzahl von Aufgaben bewältigen.

Integration mit LLMs

Durch die Bereitstellung einer standardisierten Schnittstelle fügt sich LangChain nahtlos in LLMs ein. Die Integration von LangChain geht jedoch weit über einen reinen Verbindungsmechanismus hinaus. Das Framework bietet zudem mehrere Funktionen, die den Einsatz von LLMs für die Entwicklung sprachbasierter Anwendungen optimieren:

  • Prompt-Management: LangChain ermöglicht es Ihnen, effektive Prompts zu erstellen, die den LLMs helfen, die Aufgabe zu verstehen und eine nützliche Antwort zu generieren.

  • Dynamische LLM-Auswahl: Dies ermöglicht es Ihnen, das am besten geeignete LLM für verschiedene Aufgaben basierend auf Faktoren wie Komplexität, Genauigkeitsanforderungen und Rechenressourcen auszuwählen.

  • Integration der Speicherverwaltung: LangChain lässt sich nahtlos in Speichermodule integrieren. Dadurch wird sichergestellt, dass LLMs flexibel auf externe Informationen zugreifen und diese effizient verarbeiten können.

  • Agentenbasiertes Management: So können Sie komplexe, LLM-basierte Workflows orchestrieren, die sich an veränderte Umstände und Nutzerbedürfnisse anpassen.

Workflow-Management

Im Kontext von LangChain beschreibt das Workflow-Management den Prozess der Orchestrierung und Steuerung von Chains und Agenten zur Lösung eines spezifischen Problems. Dies umfasst die Verwaltung des Datenflusses, die Koordination der Komponentenausführung sowie die Sicherstellung, dass Anwendungen effektiv auf Nutzerinteraktionen und sich ändernde Rahmenbedingungen reagieren. Zu den zentralen Komponenten des Workflow-Managements gehören:

  • Orchestrierung von Chains: LangChain koordiniert die Ausführung von Chains, um sicherzustellen, dass Aufgaben in der richtigen Reihenfolge abgearbeitet und Daten korrekt zwischen den einzelnen Komponenten übergeben werden.

  • Agentenbasierte Verwaltung: Die Nutzung von Agenten wird mit vordefinierten Vorlagen und einer benutzerfreundlichen Schnittstelle vereinfacht.

  • Zustandsverwaltung: LangChain verfolgt automatisch den Zustand der Anwendung und bietet Entwicklern eine einheitliche Schnittstelle zum Zugriff auf und zur Änderung von Zustandsinformationen.

  • Verwaltung von Nebenläufigkeit (Concurrency Management): LangChain übernimmt die komplexe Steuerung der gleichzeitigen Ausführung. Dadurch können sich Entwickler voll und ganz auf die Aufgaben und Interaktionen konzentrieren, ohne sich um Threading- oder Synchronisationsprobleme kümmern zu müssen.

Einrichtung von LangChain

Einer der großen Vorteile von LangChain ist, dass nur sehr wenige Voraussetzungen für den Einstieg erforderlich sind. Für diesen Leitfaden verwenden wir Python – Sie müssen lediglich Python 3.8 oder eine neuere Version auf Ihrem Computer installiert haben. Das ist auch schon alles!

Installation und Konfiguration

Der erste Schritt besteht darin, das Kern-Framework von LangChain zu installieren. Der einfachste Weg hierfür ist die Verwendung des folgenden PIP-Befehls:

pip install langchain

Als Nächstes benötigen Sie ein LLM, mit dem LangChain interagieren kann. In diesem Beispiel verwenden wir OpenAI, Sie können jedoch jedes beliebige LLM für Ihre Anwendung nutzen:

pip install openai

Damit OpenAI funktioniert, benötigen Sie zudem einen API-Schlüssel zur Authentifizierung Ihrer Anfragen. Sie erhalten diesen, indem Sie ein OpenAI-Konto erstellen, den Bereich „API keys“ aufrufen und „Create new secret key“ auswählen. Sobald Sie den Schlüssel generiert haben, sollten Sie ihn an einem sicheren Ort aufbewahren. Sie werden ihn in Kürze benötigen.

Erstellen Sie abschließend eine Textdatei namens data.txt. Dies wird die externe Datenquelle sein, die Sie verwenden, um dem LLM Kontext zu geben:

In West Philadelphia born and raised
On the playground was where I spent most of my days
Chillin' out, maxin', relaxin', all cool
And all shootin' some b-ball outside of the school

Jetzt kommt der Spaß ins Spiel.

Entwicklung von Anwendungen mit LangChain

Um diese LangChain-Anwendung zu erstellen, öffnen Sie den Texteditor oder die IDE Ihrer Wahl und legen Sie eine neue Python-Datei (.py) im selben Verzeichnis wie die Datei data.txt an. Sie werden eine sehr einfache Anwendung entwickeln, die einen Prompt an das GPT-3-Modell von OpenAI sendet und die Antwort ausgibt.

Suchen Sie nach etwas Fortgeschrittenerem? Dann schauen Sie sich unseren Leitfaden zur Verwendung von Amazon Bedrock mit Elasticsearch und Langchain an.

Schritt 1: Die OpenAI-Klasse aus LangChain importieren

Fügen Sie am Anfang Ihres Python-Skripts diese Import-Anweisung hinzu, um die OpenAI-Klasse aus dem LLM-Modul von LangChain einzubinden:

from langchain.llms import OpenAI

Schritt 2: Eine Funktion zum Auslesen der Textdatei definieren

Definieren Sie die Funktion so, dass die Anwendung den Dateipfad als Argument akzeptiert. Dadurch wird die Datei zum Lesen geöffnet und ihr Inhalt zurückgegeben:

def read_data_from_file(file_path):
    with open(file_path, 'r') as file:
        return file.read()

Schritt 3: Das OpenAI-Modell initialisieren

Erstellen Sie eine Instanz der OpenAI-Klasse mit Ihrem API-Schlüssel, wobei Sie YOUR-OPENAI-KEY durch den tatsächlichen Schlüssel ersetzen, den Sie von OpenAI erhalten haben:

gpt3 = OpenAI(api_key='YOUR-OPENAI-KEY')

Schritt 4: Eine Funktion zum Abrufen einer Antwort von OpenAI definieren

Erstellen Sie eine Funktion, die einen Prompt als Argument entgegennimmt und die Antwort des GPT-3-Modells zurückgibt:

def get_response(prompt):
    return gpt3(prompt)

Schritt 5: Daten aus der Textdatei lesen

Geben Sie den Pfad zur Textdatei an und nutzen Sie die zuvor definierte Funktion, um deren Inhalt einzulesen. Anschließend speichern Sie diese Daten in der Variable external_data:

file_path = 'data.txt'
external_data = read_data_from_file(file_path)

Schritt 6: Test-Prompt erstellen

An dieser Stelle definieren Sie den Prompt, den Sie an GPT-3 senden möchten. In diesem Beispiel fordern Sie das Modell dazu auf, den Text zu lesen und zu analysieren, um herauszufinden, von welcher Fernsehserie in der Textdatei die Rede ist:

prompt = f"Based on the following data: {external_data}, what TV show is this about?"

Schritt 7: Die Antwort von GPT-3 abrufen und ausgeben

Rufen Sie eine Funktion auf, die den vorbereiteten Prompt sendet und dann die Antwort von GPT-3 abruft und ausgibt:

print("Response:", get_response(prompt))

Schritt 8: App ausführen und Antwort überprüfen

Sobald Sie all dies erledigt haben, haben Sie eine Python-App, die folgendermaßen aussieht:

from langchain.llms import OpenAI

# Function to read data from a file
def read_data_from_file(file_path):
    with open(file_path, 'r') as file:
        return file.read()

# Initialize the LLM
gpt3 = OpenAI(api_key='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')

def get_response(prompt):
    return gpt3(prompt)

# Read data from your text file
file_path = 'data.txt'
external_data = read_data_from_file(file_path)

# Prepare your prompt including the external data
prompt = f"Based on the following data: {external_data}, what TV show is this about?"

# Get the response from GPT-3
print("Response:", get_response(prompt))

Jetzt müssen Sie nur noch Ihre Python-App ausführen, um sicherzustellen, dass sie funktioniert. Speichern Sie die Datei und führen Sie Ihre App mit diesem Befehl im Terminal aus:

python YOUR-APP-NAME.py

Wenn alles nach Plan gelaufen ist, erhalten Sie eine Antwort, die in etwa so aussieht:

Response: 
This is the opening theme song for the popular 1990s TV show "The Fresh Prince of Bel-Air".

Anwendungsfälle

Dieses Beispiel zeigt eine stark vereinfachte Demo, aber dank der Flexibilität von LangChain sind den Möglichkeiten beim Deployment neuer KI-Anwendungen kaum Grenzen gesetzt. Obwohl wir hier unmöglich alle Szenarien auflisten können, werfen wir im Folgenden einen Blick auf einige Fallstudien, um die Bandbreite potenzieller Anwendungsfälle zu verdeutlichen:

  • Chatbot: Entwickeln Sie Ihren eigenen Chatbot, an den Sie Fragen in natürlicher Sprache richten können und der den bisherigen Unterhaltungsverlauf lückenlos beibehält.  

  • Q&A-App: Erstellen Sie eine App, in der Sie nach den gewünschten Informationen fragen können, und sie findet die Antwort aus gespeicherten Dokumenten.

  • Textsuche (BM25): Erstellen Sie Ihre eigene Textsuch-App, um große Datenmengen abzufragen.

  • Vektorsuche: Entwickeln Sie eine App, die nach Datenähnlichkeiten sucht und Metadaten filtert.

  • Hybride Suche (Text und Vektor): Entwickeln Sie eine KI, die ähnliche Dokumente mithilfe von Text- und Vektorfilterung abgleicht.

  • LangChain mit Ihrem eigenen LLM: Verwenden Sie LangChain, um eine KI-App zu erstellen, die Ihr eigenes LLM mit externen Datenquellen nutzt.

Erstellung LLM-basierter Apps mit LangChain

Es sollte inzwischen deutlich geworden sein, dass LangChain Ihnen durch die Kombination der Leistungsfähigkeit von LLMs mit dem Kontext und den Zusatzinformationen externer Datenquellen nahezu unbegrenzte Möglichkeiten bietet. Wie dieses LangChain-Tutorial zeigt, ist der Einstieg zudem bemerkenswert einfach. Diese Benutzerfreundlichkeit, gepaart mit der Flexibilität und Power von LangChain, macht es zu einer idealen Plattform für die Entwicklung einer Vielzahl von KI-Anwendungen. Unabhängig davon, ob Sie einen Chatbot, eine Q&A-App oder eine Suchmaschine entwickeln – LangChain unterstützt Sie dabei, innovative und effektive Lösungen zu realisieren.

Nächste Schritte

Wir können Ihnen helfen, aus den Daten Ihres Unternehmens Erkenntnisse zu gewinnen. Hier sind vier Vorschläge für Ihre nächsten Schritte:

  1. Starten Sie eine kostenlose Testversion und sehen Sie, wie Elastic Ihr Unternehmen unterstützen kann.

  2. Lernen Sie unsere Lösungen bei einer Tour kennen, um zu sehen, wie die Elasticsearch Platform funktioniert und wie unsere Lösungen Ihre Anforderungen erfüllen.

  3. Erfahren Sie, wie Sie generative KI in Ihrem Unternehmen nutzen.

  4. Teilen Sie diesen Artikel mit interessierten Personen. Teilen Sie den Artikel per E-Mail, LinkedIn, X oder Facebook.

Die Entscheidung über die Veröffentlichung der in diesem Blogeintrag beschriebenen Leistungsmerkmale und Features sowie deren Zeitpunkt liegt allein bei Elastic. Es ist möglich, dass noch nicht verfügbare Leistungsmerkmale oder Features nicht rechtzeitig oder überhaupt nicht veröffentlicht werden.

In diesem Blogpost haben wir möglicherweise generative KI-Tools von Drittanbietern verwendet oder darauf Bezug genommen, die von ihren jeweiligen Eigentümern betrieben werden. Elastic hat keine Kontrolle über die Drittanbieter-Tools und übernimmt keine Verantwortung oder Haftung für ihre Inhalte, ihren Betrieb oder ihre Anwendung sowie für etwaige Verluste oder Schäden, die sich aus Ihrer Anwendung solcher Tools ergeben. Gehen Sie vorsichtig vor, wenn Sie KI-Tools mit personenbezogenen, sensiblen oder vertraulichen Daten verwenden. Alle von Ihnen eingegebenen Daten können für das Training von KI oder andere Zwecke verwendet werden. Es gibt keine Garantie dafür, dass von Ihnen bereitgestellte Informationen sicher oder vertraulich behandelt werden. Setzen Sie sich vor Gebrauch mit den Datenschutzpraktiken und den Nutzungsbedingungen generativer KI-Tools auseinander. 

Elastic, Elasticsearch, ESRE, Elasticsearch Relevance Engine und zugehörige Marken, Waren- und Dienstleistungszeichen sind Marken oder eingetragene Marken von Elastic N.V. in den USA und anderen Ländern. Alle anderen Unternehmens- und Produktnamen sind Marken, Logos oder eingetragene Marken ihrer jeweiligen Eigentümer.