Wie man LLM-Anwendungen mit LangChain erstellt Tutorial
Die Fähigkeiten großer Sprachmodelle (Large Language Models, LLMs) wie GPT-3 von OpenAI, BERT von Google und LLaMA von Meta verändern verschiedene Branchen, indem sie die Generierung verschiedenster Textarten ermöglichen, von Marketinginhalten über Data-Science-Code bis hin zu Gedichten. Obwohl ChatGPT aufgrund seiner benutzerfreundlichen Chat-Oberfläche viel Aufmerksamkeit erregt hat, gibt es noch zahlreiche ungenutzte Möglichkeiten, LLMs durch die Integration in verschiedene Softwareanwendungen zu nutzen.
KI-Anwendungen entwickeln
Lerne, wie man KI-Anwendungen mit der OpenAI API erstellt.
Wenn du von den transformativen Kräften der generativen KI und LLMs fasziniert bist, ist dieses Tutorial genau das Richtige für dich. Hier stellen wir LangChain vor - ein Open-Source-Python-Framework für die Entwicklung von Anwendungen, die auf großen Sprachmodellen wie GPT basieren.
Erfahre mehr über die Erstellung von KI-Anwendungen mit LangChain in unserem Building Multimodal AI Applications with LangChain & the OpenAI API AI Code Along, in dem du erfährst, wie du YouTube-Videos mit der Whisper-Sprache-zu-Text-KI transkribierst und dann GPT verwendest, um Fragen zum Inhalt zu stellen.
Was sind Large Language Models (LLMs)?
Large Language Models (LLMs) sind fortschrittliche Systeme der künstlichen Intelligenz, die menschenähnliche Texte verstehen und erzeugen können. Diese Modelle werden auf riesigen Datenmengen trainiert, damit sie komplexe Muster erkennen, sprachliche Nuancen verstehen und kohärente Antworten geben können. LLMs sind in der Lage, verschiedene sprachbezogene Aufgaben auszuführen, z. B. Sprachübersetzung, Textvervollständigung, Zusammenfassungen und sogar Konversationen. GPT ist ein Beispiel für LLM.
LLM ist eine Art der generativen KI. Wenn du mehr über generative KI erfahren möchtest und darüber, wie sie deine Kreativität fördern kann, schau dir unsere Blogs über die Nutzung generativer KI zur Förderung deiner Kreativität und unseren Podcast Inside the Generative AI Revolution an. Du kannst dich auch für unseren nächsten Kurs über Konzepte für große Sprachmodelle anmelden.
Einführung in LangChain
LangChain ist ein Open-Source-Framework, das die Entwicklung von Anwendungen auf der Grundlage großer Sprachmodelle (LLMs) erleichtern soll. Es bietet eine Reihe von Werkzeugen, Komponenten und Schnittstellen, die die Entwicklung von LLM-zentrierten Anwendungen vereinfachen. Mit LangChain wird es mühelos möglich, Interaktionen mit Sprachmodellen zu verwalten, verschiedene Komponenten nahtlos zu verknüpfen und Ressourcen wie APIs und Datenbanken einzubinden. Du kannst mehr über LangChain für Data Engineering und Datenanwendungen in einem separaten Artikel lesen.
Die LangChain-Plattform umfasst eine Reihe von APIs, die Entwickler in ihre Anwendungen einbinden können. So können sie Sprachverarbeitungsfunktionen einbauen, ohne alles von Grund auf neu entwickeln zu müssen. Daher vereinfacht LangChain den Prozess der Erstellung von LLM-basierten Anwendungen und eignet sich daher für Entwickler/innen aller Fachrichtungen.
Anwendungen wie Chatbots, virtuelle Assistenten, Sprachübersetzungsprogramme und Tools zur Stimmungsanalyse sind alles Beispiele für LLM-gestützte Anwendungen. Entwickler nutzen LangChain, um maßgeschneiderte, auf Sprachmodellen basierende Anwendungen zu erstellen, die auf spezifische Bedürfnisse zugeschnitten sind.
Mit den ständigen Fortschritten und der zunehmenden Verbreitung der natürlichen Sprachverarbeitung dürften die Anwendungsmöglichkeiten dieser Technologie nahezu grenzenlos sein. Hier sind einige bemerkenswerte Merkmale von LangChain:
1. Maßgeschneiderte Prompts für deine spezifischen Anforderungen
2. Konstruktion von Kettengliedern für erweiterte Einsatzszenarien
3. Integration von Modellen zur Datenerweiterung und Zugriff auf erstklassige Sprachmodellfunktionen, wie GPT und HuggingFace Hub.
4. Vielseitige Komponenten, die sich je nach Bedarf kombinieren und anpassen lassen
5. Kontext manipulieren, um den Kontext für mehr Präzision und Nutzerzufriedenheit zu erstellen und zu lenken
LangChain in Python einrichten
Die Installation von LangChain in Python ist ziemlich einfach. Du kannst es entweder mit pip oder conda installieren.
Installieren mit pip
pip install langchain
Mit conda installieren
install langchain -c conda-forge
Damit werden die Grundvoraussetzungen für LangChain geschaffen. Ein Großteil des Nutzens von LangChain kommt zum Tragen, wenn es mit verschiedenen Modellanbietern, Datenspeichern und dergleichen integriert wird.
Standardmäßig sind die Abhängigkeiten, die für diese Integrationen benötigt werden, NICHT in der Installation enthalten. Um alle Abhängigkeiten zu installieren, kannst du den folgenden Befehl ausführen:
pip install langchain[all]
Die letzte Möglichkeit ist, die Bibliothek aus dem Quellcode zu erstellen. In diesem Fall kannst du das Projekt aus seinem GitHub-Repository klonen.
Umgebung einrichten
Die Verwendung von LangChain erfordert in der Regel Integrationen mit verschiedenen Modellanbietern, Datenspeichern, APIs und ähnlichen Komponenten. Wie bei jeder Integration müssen wir geeignete und relevante API-Schlüssel bereitstellen, damit LangChain funktioniert. Es gibt zwei Möglichkeiten, dies zu erreichen:
1. Schlüssel als Umgebungsvariable einrichten
OPENAI_API_KEY="..."
Wenn du keine Umgebungsvariable setzen möchtest, kannst du den Schlüssel direkt über den Parameter openai_api_key übergeben, wenn du die OpenAI LLM-Klasse startest:
2. Richte den Schlüssel direkt in der entsprechenden Klasse ein
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="...")
Die wichtigsten Komponenten von LangChain
LangChain zeichnet sich durch seine Flexibilität und Modularität aus. Sie zerlegt die Pipeline für die Verarbeitung natürlicher Sprache in einzelne Komponenten und ermöglicht es Entwicklern, Workflows nach ihren Bedürfnissen zu gestalten. Diese Anpassungsfähigkeit macht LangChain ideal für den Aufbau von KI-Anwendungen in verschiedenen Szenarien und Sektoren.
Komponenten und Ketten
In LangChain sind Komponenten Module, die bestimmte Funktionen in der Sprachverarbeitungspipeline ausführen. Diese Komponenten können zu "Ketten" für maßgeschneiderte Workflows verknüpft werden, z. B. eine Chatbot-Kette für den Kundenservice mit Modulen zur Stimmungsanalyse, Absichtserkennung und Antwortgenerierung.
Aufforderungsvorlagen
Prompt-Vorlagen sind wiederverwendbare vordefinierte Prompts für verschiedene Ketten. Diese Vorlagen können dynamisch und anpassungsfähig werden, indem du bestimmte "Werte" einfügst. Eine Eingabeaufforderung, die nach dem Namen eines Nutzers fragt, kann zum Beispiel durch das Einfügen eines bestimmten Wertes personalisiert werden. Diese Funktion ist vorteilhaft für die Erstellung von Prompts, die auf dynamischen Ressourcen basieren.
Vektorspeicher
Diese werden verwendet, um Informationen über Einbettungen zu speichern und zu suchen, wobei im Wesentlichen numerische Darstellungen von Dokumentbedeutungen analysiert werden. VectorStore dient als Speicher für diese Einbettungen und ermöglicht eine effiziente Suche auf der Grundlage semantischer Ähnlichkeit.
Indizes und Retriever
Indizes fungieren als Datenbanken, in denen Details und Metadaten zu den Trainingsdaten des Modells gespeichert werden, während Retriever diesen Index schnell nach bestimmten Informationen durchsuchen. Dies verbessert die Antworten des Modells durch die Bereitstellung von Kontext und zugehörigen Informationen.
Parser ausgeben
Output-Parser kommen ins Spiel, um die vom Modell generierten Antworten zu verwalten und zu verfeinern. Sie können unerwünschte Inhalte entfernen, das Ausgabeformat anpassen oder zusätzliche Daten zur Antwort hinzufügen. So helfen Output-Parser dabei, strukturierte Ergebnisse, wie JSON-Objekte, aus den Antworten des Sprachmodells zu extrahieren.
Beispiel-Selektoren
Beispielselektoren in LangChain dienen dazu, geeignete Instanzen aus den Trainingsdaten des Modells zu identifizieren und so die Präzision und Relevanz der generierten Antworten zu verbessern. Diese Selektoren können so eingestellt werden, dass sie bestimmte Arten von Beispielen bevorzugen oder nicht verwandte Beispiele herausfiltern und so eine maßgeschneiderte KI-Antwort basierend auf den Benutzereingaben liefern.
Agenten
Agenten sind einzigartige LangChain-Instanzen, jede mit spezifischen Prompts, Speicher und Kette für einen bestimmten Anwendungsfall. Sie können auf verschiedenen Plattformen eingesetzt werden, z. B. im Web, auf Mobilgeräten und Chatbots, und sprechen so ein breites Publikum an.
Wie man eine Sprachmodell-Anwendung in LangChain erstellt
LangChain bietet eine LLM-Klasse, die als Schnittstelle zu verschiedenen Sprachmodellanbietern wie OpenAI, Cohere und Hugging Face dient. Die grundlegendste Funktion eines LLM ist das Erstellen von Text. Es ist sehr einfach, mit LangChain eine Anwendung zu erstellen, die eine Eingabeaufforderung als String entgegennimmt und die Ausgabe zurückgibt.
API_KEY ="..."
from langchain.llms import OpenAI
llm = OpenAI(model_name="text-ada-001", openai_api_key=API_KEY)
print(llm("Tell me a joke about data scientist"))
Ausgabe:
>>> "Was bekommst du, wenn du mit Daten herumspielst? Ein Datenwissenschaftler!"
Im obigen Beispiel verwenden wir das Modell text-ada-001 von OpenAI. Wenn du sie gegen die Open-Source-Modelle von HuggingFace austauschen möchtest, ist das ein einfacher Vorgang:
API_KEY ="..."
from langchain import HuggingFaceHub
llm = HuggingFaceHub(repo_id = "google/flan-t5-xl", huggingfacehub_api_token = API_KEY)
print(llm("Tell me a joke about data scientist"))
Du kannst die Hugging Face Hub Token ID von deinem HF-Konto erhalten.
Wenn du mehrere Prompts hast, kannst du mit der Methode generate
eine Liste von Prompts auf einmal senden:
llm_response = llm.generate(['Tell me a joke about data scientist',
'Tell me a joke about recruiter',
'Tell me a joke about psychologist'])
Ausgabe:
Dies ist die einfachste App, die du mit LangChain erstellen kannst. Es nimmt eine Eingabeaufforderung entgegen, sendet sie an ein Sprachmodell deiner Wahl und gibt die Antwort zurück. Es gibt viele Parameter, die du einstellen kannst, zum Beispiel die Temperatur. Der Temperaturparameter stellt die Zufälligkeit der Ausgabe ein und ist standardmäßig auf 0,7 eingestellt.
Verwalten von Prompt-Vorlagen für LLMs in LangChain
LLMs haben eigenartige APIs. Auch wenn es intuitiv erscheint, Prompts in natürlicher Sprache einzugeben, müssen die Prompts tatsächlich etwas angepasst werden, um die gewünschte Ausgabe eines LLM zu erreichen. Dieser Anpassungsprozess wird als Prompt Engineering bezeichnet. Sobald du einen guten Prompt hast, kannst du ihn als Vorlage für andere Zwecke verwenden.
Mit PromptTemplate
in LangChain kannst du Templates verwenden, um eine Eingabeaufforderung zu erstellen. Das ist nützlich, wenn du dieselbe Eingabeaufforderung an mehreren Stellen verwenden willst, aber bestimmte Werte geändert hast.
USER_INPUT = 'Paris'
from langchain.llms import OpenAI
from langchain import PromptTemplate
llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)
template = """ I am travelling to {location}. What are the top 3 things I can do while I am there. Be very specific and respond as three bullet points """
prompt = PromptTemplate(
input_variables=["location"],
template=template,
)
final_prompt = prompt.format(location=USER_INPUT )
print(f"LLM Output: {llm(final_prompt)}")
Ausgabe:
1. Besteige den Eiffelturm und genieße die atemberaubende Aussicht auf die Stadt
2. Genieße eine romantische Schifffahrt auf der Seine und bewundere die schöne Architektur am Flussufer
3. Erkunde den Louvre und bewundere die weltberühmten Kunstwerke, die dort ausgestellt sind
Wenn du diese Eingabeaufforderung nun für eine andere Stadt verwenden willst, musst du nur die Variable USER_INPUT
ändern. Ich habe es jetzt von Paris
auf Cancun, Mexico
geändert. Sieh dir an, wie die Ausgabe verändert wurde:
Ausgabe:
1. Entspann dich am Strand: Genieße die weißen Sandstrände und das kristallklare Wasser des Karibischen Meeres.
2. Erforsche die Maya-Ruinen: Besuche alte archäologische Stätten wie Chichen Itza, Tulum und Coba, um mehr über die Geschichte und Kultur der Mayas zu erfahren.
3. Mach eine Food Tour: Probiere die traditionellen Geschmacksrichtungen und lerne die lokale Küche kennen, indem du eine kulinarische Tour durch Cancun machst.
Kombination von LLMs und Prompts in mehrstufigen Workflows
Verkettung im LangChain-Kontext bezieht sich auf die Integration von LLMs mit anderen Elementen, um eine Anwendung aufzubauen. Hier einige Beispiele:
- Sequentielle Kombination mehrerer LLMs, indem die Ausgabe des ersten LLMs als Eingabe für das zweite LLM verwendet wird (siehe diesen Abschnitt)
- Integration von LLMs mit Prompt-Vorlagen
- Zusammenführung von LLMs mit externen Daten, z. B. zur Beantwortung von Fragen
- Einbindung von LLMs mit Langzeitgedächtnis, wie z.B. Chatverläufe
Schauen wir uns ein Beispiel für das erste Szenario an, bei dem wir die Ausgabe des ersten LLM als Eingabe für das zweite LLM verwenden werden.
from langchain.llms import OpenAI
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain import PromptTemplate
llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)
# first step in chain
template = "What is the most popular city in {country} for tourists? Just return the name of the city"
first_prompt = PromptTemplate(
input_variables=["country"],
template=template)
chain_one = LLMChain(llm = llm, prompt = first_prompt)
# second step in chain
second_prompt = PromptTemplate(
input_variables=["city"],
template="What are the top three things to do in this: {city} for tourists. Just return the answer as three bullet points.",)
chain_two = LLMChain(llm=llm, prompt=second_prompt)
# Combine the first and the second chain
overall_chain = SimpleSequentialChain(chains=[chain_one, chain_two], verbose=True)
final_answer = overall_chain.run("Canada")
Ausgabe:
In diesem speziellen Beispiel erstellen wir eine Kette mit zwei Komponenten. Die erste Komponente ist dafür zuständig, die beliebteste Stadt für ein bestimmtes Land zu ermitteln, das vom Nutzer eingegeben wurde. Im Gegensatz dazu konzentriert sich die zweite Komponente darauf, Informationen über die drei wichtigsten Aktivitäten oder Attraktionen zu liefern, die für Touristen in der jeweiligen Stadt verfügbar sind.
Wenn du mehr über fortgeschrittene Konzepte zur Erstellung von Anwendungen in LangChain erfahren möchtest, schau dir diesen Live-Kurs über die Erstellung von KI-Anwendungen mit LangChain und GPT auf DataCamp an.
Schlussfolgerung und weiteres Lernen
Noch vor kurzem waren wir alle sehr beeindruckt von den beeindruckenden Möglichkeiten von ChatGPT. Die Landschaft hat sich jedoch schnell weiterentwickelt, und jetzt haben wir Zugang zu neuen Entwicklertools wie LangChain, mit denen wir in wenigen Stunden ähnlich bemerkenswerte Prototypen auf unseren Laptops erstellen können.
LangChain, ein Open-Source-Python-Framework, ermöglicht es Einzelpersonen, Anwendungen zu erstellen, die auf LLMs (Language Model Models) basieren. Dieses Framework bietet eine vielseitige Schnittstelle zu zahlreichen Grundmodellen, erleichtert die Prompt-Verwaltung und dient als zentraler Knotenpunkt für andere Komponenten wie Prompt-Vorlagen, zusätzliche LLMs, externe Daten und andere Tools durch Agenten (zum Zeitpunkt der Erstellung).
Wenn du mit den Fortschritten in der generativen KI und LLM auf dem Laufenden bleiben willst, schau dir unser Webinar Building AI Applications with LangChain and GPT an. Hier lernst du die Grundlagen der Verwendung von LangChain für die Entwicklung von KI-Anwendungen kennen. Außerdem erfährst du, wie du eine KI-Anwendung strukturierst und wie du Textdaten für hohe Leistung einbettest. Du kannst dir auch unseren Spickzettel über die Landschaft der generativen KI-Tools ansehen, um die verschiedenen Kategorien von generativen KI-Tools, ihre Anwendungen und ihren Einfluss in verschiedenen Sektoren zu erkunden. Schau dir auch unsere Liste der besten Open-Source-LLMs an, um mehr über andere leistungsstarke Tools zu erfahren.
Verdiene eine Top-KI-Zertifizierung
FAQs
Was ist LangChain?
LangChain ist ein Open-Source-Framework, das die Entwicklung von Anwendungen auf der Grundlage großer Sprachmodelle (LLMs) erleichtern soll. Es vereinfacht die Entwicklung von LLM-zentrierten Anwendungen durch die Bereitstellung von Werkzeugen, Komponenten und Schnittstellen.
Ist die Nutzung von LangChain kostenlos?
Ja, LangChain ist ein kostenloses Open-Source-Framework, aber die Nutzung bestimmter LLMs kann ein Abonnement erfordern.
Kann LangChain mit verschiedenen Modellanbietern zusammenarbeiten?
Ja, LangChain ist mit verschiedenen Sprachmodellanbietern wie OpenAI, Cohere und Hugging Face kompatibel und ermöglicht so Flexibilität bei der Anwendungsentwicklung.
Wie kann ich LangChain mit OpenAI-Modellen verwenden?
Nachdem du LangChain installiert hast, kannst du es in OpenAI-Modelle integrieren, indem du deinen OpenAI-API-Schlüssel einrichtest und die bereitgestellten Schnittstellen für die Interaktion mit dem Modell nutzt.
Wie verwalte ich Prompt-Vorlagen in LangChain?
LangChain verwendet PromptTemplate
für die Verwaltung von Prompt-Vorlagen und ermöglicht so dynamische und wiederverwendbare Prompts, die durch die Änderung von Eingabevariablen auf bestimmte Anwendungsfälle zugeschnitten werden können.
Was ist die Verkettung in LangChain?
Die Verkettung bezieht sich auf die Integration von LLMs mit anderen Elementen, um eine Anwendung zu erstellen, z. B. die sequentielle Kombination mehrerer LLMs, die Integration von LLMs mit Prompt-Vorlagen oder die Einbeziehung externer Daten.
Kann LangChain Dokumentdaten aus verschiedenen Quellen verarbeiten?
Ja, LangChain unterstützt Dokumentenlader für verschiedene Datenquellen, darunter Text-, CSV- und PDF-Dateien sowie Plattformen wie Slack und Figma, um sie in LLM-Anwendungen einzubinden.