banner

Nachricht

Jun 23, 2023

Zero to Advanced Prompt Engineering mit Langchain in Python

Veröffentlicht

An

Von

Ein wichtiger Aspekt von Large Language Models (LLMs) ist die Anzahl der Parameter, die diese Modelle zum Lernen verwenden. Je mehr Parameter ein Modell hat, desto besser kann es die Beziehung zwischen Wörtern und Phrasen verstehen. Dies bedeutet, dass Modelle mit Milliarden von Parametern in der Lage sind, verschiedene kreative Textformate zu generieren und offene und anspruchsvolle Fragen auf informative Weise zu beantworten.

LLMs wie ChatGPT, die das Transformer-Modell verwenden, sind in der Lage, menschliche Sprache zu verstehen und zu generieren, was sie für Anwendungen nützlich macht, die das Verständnis natürlicher Sprache erfordern. Sie sind jedoch nicht ohne Einschränkungen, zu denen unter anderem veraltetes Wissen, die Unfähigkeit, mit externen Systemen zu interagieren, mangelndes Kontextverständnis und manchmal plausibel klingende, aber falsche oder unsinnige Antworten gehören.

Um diese Einschränkungen zu beseitigen, müssen LLMs mit externen Datenquellen und -funktionen integriert werden, was komplex sein kann und umfassende Programmier- und Datenverarbeitungsfähigkeiten erfordert. Dies trägt zusammen mit den Herausforderungen, KI-Konzepte und komplexe Algorithmen zu verstehen, zur Lernkurve bei, die mit der Entwicklung von Anwendungen mithilfe von LLMs verbunden ist.

Dennoch könnte die Integration von LLMs mit anderen Tools zur Bildung LLM-gestützter Anwendungen unsere digitale Landschaft neu definieren. Das Potenzial solcher Anwendungen ist enorm, einschließlich der Verbesserung von Effizienz und Produktivität, der Vereinfachung von Aufgaben, der Verbesserung der Entscheidungsfindung und der Bereitstellung personalisierter Erlebnisse.

In diesem Artikel werden wir uns eingehender mit diesen Themen befassen, die fortgeschrittenen Techniken des Prompt Engineering mit Langchain erkunden und klare Erklärungen, praktische Beispiele und Schritt-für-Schritt-Anleitungen für deren Implementierung bieten.

Langchain, eine hochmoderne Bibliothek, bietet Komfort und Flexibilität beim Entwerfen, Implementieren und Optimieren von Eingabeaufforderungen. Während wir die Prinzipien und Praktiken des Prompt Engineering erläutern, erfahren Sie, wie Sie die leistungsstarken Funktionen von Langchain nutzen können, um die Stärken generativer SOTA-KI-Modelle wie GPT-4 zu nutzen.

Bevor Sie sich mit den technischen Details des Prompt Engineering befassen, ist es wichtig, das Konzept der Prompts und ihre Bedeutung zu verstehen.

A 'prompt ' ist eine Folge von Token, die als Eingabe für ein Sprachmodell verwendet werden und dieses anweisen, eine bestimmte Art von Antwort zu generieren. Eingabeaufforderungen spielen eine entscheidende Rolle bei der Steuerung des Verhaltens eines Modells. Sie können sich auf die Qualität des generierten Textes auswirken und bei korrekter Gestaltung dazu beitragen, dass das Modell aufschlussreiche, genaue und kontextspezifische Ergebnisse liefert.

Prompt Engineering ist die Kunst und Wissenschaft, effektive Eingabeaufforderungen zu entwerfen. Das Ziel besteht darin, die gewünschte Ausgabe aus einem Sprachmodell hervorzurufen. Durch sorgfältige Auswahl und Strukturierung von Eingabeaufforderungen kann das Modell dazu geführt werden, genauere und relevantere Antworten zu generieren. In der Praxis beinhaltet dies die Feinabstimmung der Eingabephrasen, um den Trainings- und Strukturverzerrungen des Modells gerecht zu werden.

Die Komplexität des Prompt-Engineerings reicht von einfachen Techniken, etwa der Versorgung des Modells mit relevanten Schlüsselwörtern, bis hin zu fortgeschritteneren Methoden, die den Entwurf komplexer, strukturierter Prompts beinhalten, die die internen Mechanismen des Modells zu ihrem Vorteil nutzen.

LangChain wurde im Oktober 2022 von Harrison Chase ins Leben gerufen und hat sich 2023 zu einem der am höchsten bewerteten Open-Source-Frameworks auf GitHub entwickelt. Es bietet eine vereinfachte und standardisierte Schnittstelle für die Integration großer Sprachmodelle (LLMs) in Anwendungen. Es bietet außerdem eine funktionsreiche Schnittstelle für schnelles Engineering, die es Entwicklern ermöglicht, mit verschiedenen Strategien zu experimentieren und ihre Ergebnisse zu bewerten. Durch den Einsatz von Langchain können Sie zeitnahe Engineering-Aufgaben effektiver und intuitiver ausführen.

LangFlow dient als Benutzeroberfläche zum Orchestrieren von LangChain-Komponenten in einem ausführbaren Flussdiagramm und ermöglicht so ein schnelles Prototyping und Experimentieren.

LangChain füllt eine entscheidende Lücke in der KI-Entwicklung für die Massen. Es ermöglicht eine Reihe von NLP-Anwendungen wie virtuelle Assistenten, Inhaltsgeneratoren, Frage-Antwort-Systeme und mehr, um eine Reihe realer Probleme zu lösen.

LangChain ist kein eigenständiges Modell oder Anbieter, sondern vereinfacht die Interaktion mit verschiedenen Modellen und erweitert die Funktionen von LLM-Anwendungen über die Einschränkungen eines einfachen API-Aufrufs hinaus.

Zu den Hauptkomponenten von LangChain gehören Modell-I/O, Eingabeaufforderungsvorlagen, Speicher, Agenten und Ketten.

LangChain ermöglicht eine nahtlose Verbindung mit verschiedenen Sprachmodellen, indem es sie mit einer standardisierten Schnittstelle namens Model I/O umschließt. Dies ermöglicht einen mühelosen Modellwechsel zur Optimierung oder besseren Leistung. LangChain unterstützt verschiedene Sprachmodellanbieter, darunter OpenAI, HuggingFace, Azure, Fireworks und mehr.

Diese werden verwendet, um Interaktionen mit LLMs zu verwalten und zu optimieren, indem prägnante Anweisungen oder Beispiele bereitgestellt werden. Die Optimierung von Eingabeaufforderungen verbessert die Modellleistung und ihre Flexibilität trägt erheblich zum Eingabeprozess bei.

Ein einfaches Beispiel für eine Eingabeaufforderungsvorlage:

Mit zunehmender Komplexität stoßen wir in LangChain auf ausgefeiltere Muster, wie zum Beispiel das Reason and Act (ReAct)-Muster. ReAct ist ein wichtiges Muster für die Aktionsausführung, bei dem der Agent einem geeigneten Tool eine Aufgabe zuweist, die Eingabe dafür anpasst und seine Ausgabe analysiert, um die Aufgabe zu erfüllen. Das folgende Python-Beispiel zeigt ein ReAct-Muster. Es zeigt, wie eine Eingabeaufforderung in LangChain strukturiert ist und eine Reihe von Gedanken und Aktionen verwendet, um ein Problem zu durchdenken und eine endgültige Antwort zu finden:

Speicher ist ein entscheidendes Konzept in LangChain, das es LLMs und Tools ermöglicht, Informationen über einen längeren Zeitraum hinweg zu speichern. Dieses zustandsbehaftete Verhalten verbessert die Leistung von LangChain-Anwendungen, indem frühere Antworten, Benutzerinteraktionen, der Zustand der Umgebung und die Ziele des Agenten gespeichert werden. Die Strategien „ConversationBufferMemory“ und „ConversationBufferWindowMemory“ helfen dabei, den Überblick über die vollständigen bzw. letzten Teile einer Konversation zu behalten. Für einen anspruchsvolleren Ansatz ermöglicht die ConversationKGMemory-Strategie die Kodierung der Konversation als Wissensgraphen, der in Eingabeaufforderungen zurückgeführt oder zur Vorhersage von Antworten verwendet werden kann, ohne das LLM aufzurufen.

Ein Agent interagiert mit der Welt, indem er Aktionen und Aufgaben ausführt. In LangChain kombinieren Agenten Tools und Ketten zur Aufgabenausführung. Es kann eine Verbindung zur Außenwelt zum Abrufen von Informationen herstellen, um das LLM-Wissen zu erweitern und so deren inhärente Einschränkungen zu überwinden. Sie können je nach Situation entscheiden, Berechnungen an einen Taschenrechner oder einen Python-Interpreter zu übergeben.

Agenten sind mit Unterkomponenten ausgestattet:

Agenten in LangChain folgen auch dem Zero-Shot-ReAct-Muster, bei dem die Entscheidung nur auf der Beschreibung des Tools basiert. Dieser Mechanismus kann mit Speicher erweitert werden, um den gesamten Gesprächsverlauf zu berücksichtigen. Mit ReAct können Sie einen LLM nicht bitten, Ihren Text automatisch zu vervollständigen, sondern ihn dazu veranlassen, in einer Gedanken-/Handlungs-/Beobachtungsschleife zu reagieren.

Ketten sind, wie der Begriff schon sagt, Abfolgen von Operationen, die es der LangChain-Bibliothek ermöglichen, Eingaben und Ausgaben von Sprachmodellen nahtlos zu verarbeiten. Diese integralen Komponenten von LangChain bestehen im Wesentlichen aus Links, bei denen es sich um andere Ketten oder Grundelemente wie Eingabeaufforderungen, Sprachmodelle oder Dienstprogramme handeln kann.

Stellen Sie sich eine Kette als Förderband in einer Fabrik vor. Jeder Schritt auf diesem Gürtel stellt eine bestimmte Operation dar, die darin bestehen kann, ein Sprachmodell aufzurufen, eine Python-Funktion auf einen Text anzuwenden oder sogar das Modell auf eine bestimmte Weise aufzufordern.

LangChain kategorisiert seine Ketten in drei Typen: Utility-Ketten, generische Ketten und Combine-Documents-Ketten. Für unsere Diskussion werden wir uns mit Versorgungs- und generischen Ketten befassen.

Wir begleiten Sie durch den Prozess der Implementierung von Prompt Engineering mit Langchain. Bevor Sie fortfahren, stellen Sie sicher, dass Sie die erforderliche Software und Pakete installiert haben.

Für die Einrichtung von LangChain können Sie beliebte Tools wie Docker, Conda, Pip und Poetry nutzen. Die relevanten Installationsdateien für jede dieser Methoden finden Sie im LangChain-Repository unter https://github.com/benman1/generative_ai_with_langchain. Dazu gehört u. aDocker-Dateifür Docker, aAnforderungen.txtfür Pip, apyproject.tomlfür Poesie und alangchain_ai.ymlDatei für Conda.

In unserem Artikel verwenden wir Pip, den Standard-Paketmanager für Python, um die Installation und Verwaltung von Bibliotheken von Drittanbietern zu erleichtern. Wenn es nicht in Ihrer Python-Distribution enthalten ist, können Sie Pip installieren, indem Sie den Anweisungen unter https://pip.pypa.io/ folgen.

Um eine Bibliothek mit Pip zu installieren, verwenden Sie den Befehl pip install bibliotheksname.

Allerdings verwaltet Pip Umgebungen nicht alleine. Um mit unterschiedlichen Umgebungen umgehen zu können, verwenden wir das Toolvirtuelle Umgebung.

Im nächsten Abschnitt besprechen wir Modellintegrationen.

Zuerst müssen Sie das Langchain-Paket installieren. Wir verwenden das Windows-Betriebssystem. Führen Sie den folgenden Befehl in Ihrem Terminal aus, um es zu installieren:

Als nächstes importieren Sie Langchain zusammen mit anderen notwendigen Modulen. Hier importieren wir auch die Transformers-Bibliothek, die häufig in NLP-Aufgaben verwendet wird.

OpenAI-Modelle können bequem mit der LangChain-Bibliothek oder der OpenAI-Python-Clientbibliothek verbunden werden. Insbesondere stellt OpenAI eine Embedding-Klasse für Texteinbettungsmodelle bereit. Zwei wichtige LLM-Modelle sind GPT-3.5 und GPT-4, die sich hauptsächlich in der Token-Länge unterscheiden. Die Preise für jedes Modell finden Sie auf der Website von OpenAI. Zwar gibt es anspruchsvollere Modelle wie GPT-4-32K, die eine höhere Token-Akzeptanz bieten, ihre Verfügbarkeit über die API ist jedoch nicht immer garantiert.

Für den Zugriff auf diese Modelle ist ein OpenAI-API-Schlüssel erforderlich. Dies kann durch die Erstellung eines Kontos auf der OpenAI-Plattform, die Einrichtung von Rechnungsinformationen und die Generierung eines neuen geheimen Schlüssels erfolgen.

Nachdem Sie den Schlüssel erfolgreich erstellt haben, können Sie ihn als Umgebungsvariable (OPENAI_API_KEY) festlegen oder als Parameter während der Klasseninstanziierung für OpenAI-Aufrufe übergeben.

Betrachten Sie ein LangChain-Skript, um die Interaktion mit den OpenAI-Modellen zu veranschaulichen:

In diesem Beispiel wird ein Agent initialisiert, um Berechnungen durchzuführen. Der Agent nimmt eine Eingabe, eine einfache Additionsaufgabe, entgegen, verarbeitet sie mithilfe des bereitgestellten OpenAI-Modells und gibt das Ergebnis zurück.

Hugging Face ist einKOSTENLOSE NUTZUNGTransformers-Python-Bibliothek, kompatibel mit PyTorch, TensorFlow und JAX und enthält Implementierungen von Modellen wie BERT, T5 usw.

Hugging Face bietet außerdem den Hugging Face Hub, eine Plattform zum Hosten von Code-Repositories, Modellen für maschinelles Lernen, Datensätzen und Webanwendungen.

Um Hugging Face als Anbieter für Ihre Models nutzen zu können, benötigen Sie ein Konto und API-Schlüssel, die Sie auf deren Website erhalten können. Das Token kann in Ihrer Umgebung als HUGGINGFACEHUB_API_TOKEN verfügbar gemacht werden.

Betrachten Sie das folgende Python-Snippet, das ein von Google entwickeltes Open-Source-Modell, das Flan-T5-XXL-Modell, verwendet:

Dieses Skript verwendet eine Frage als Eingabe und gibt eine Antwort zurück, die das Wissen und die Vorhersagefähigkeiten des Modells demonstriert.

Zunächst generieren wir eine einfache Eingabeaufforderung und sehen, wie das Modell reagiert.

Im obigen Codeausschnitt stellen wir eine Aufforderung zur Übersetzung von englischem Text ins Französische bereit. Das Sprachmodell versucht dann, den angegebenen Text basierend auf der Eingabeaufforderung zu übersetzen.

Obwohl der obige Ansatz gut funktioniert, nutzt er die Möglichkeiten des Prompt Engineering nicht voll aus. Lassen Sie uns es verbessern, indem wir einige komplexere Eingabeaufforderungsstrukturen einführen.

In diesem Codeausschnitt ändern wir die Eingabeaufforderung, um darauf hinzuweisen, dass die Übersetzung von einem „sehr kompetenten Französisch-Übersetzer“ angefertigt wird. Die Änderung der Eingabeaufforderung kann zu verbesserten Übersetzungen führen, da das Modell nun die Persona eines Experten annimmt.

Wir werden mithilfe von LangChain ein Frage- und Antwortsystem für wissenschaftliche Literatur aufbauen, das Fragen zu kürzlich veröffentlichten wissenschaftlichen Arbeiten beantworten kann.

Um unsere Umgebung einzurichten, installieren wir zunächst die notwendigen Abhängigkeiten.

Im Anschluss an die Installation erstellen wir ein neues Python-Notebook und importieren die notwendigen Bibliotheken:

Der Kern unseres Q&A-Systems ist die Möglichkeit, relevante wissenschaftliche Arbeiten zu einem bestimmten Fachgebiet abzurufen. Hier betrachten wir die Verarbeitung natürlicher Sprache (NLP) mithilfe der akademischen Datenbank arXiv. Um dies durchzuführen, definieren wir eine Funktion get_arxiv_data(max_results=10). Diese Funktion sammelt die neuesten NLP-Papierzusammenfassungen von arXiv und kapselt sie in LangChain-Dokumentobjekte, wobei die Zusammenfassung als Inhalt und die eindeutige Eintrags-ID als Quelle verwendet werden.

Wir verwenden die arXiv-API, um aktuelle Veröffentlichungen zum Thema NLP abzurufen:

Diese Funktion ruft die Zusammenfassungen der neuesten NLP-Papiere von arXiv ab und konvertiert sie in LangChain-Dokumentobjekte. Wir verwenden die Zusammenfassung des Artikels und seine eindeutige Eintrags-ID (URL des Artikels) als Inhalt bzw. Quelle.

Definieren wir unseren Korpus und richten wir LangChain ein:

Da unser akademisches Q&A-System nun fertig ist, können wir es testen, indem wir eine Frage stellen:

Die Ausgabe ist die Antwort auf Ihre Frage unter Angabe der Quellen, aus denen die Informationen extrahiert wurden. Zum Beispiel:

Sie können ganz einfach das Modell wechseln oder das System entsprechend Ihren Anforderungen anpassen. Hier wechseln wir beispielsweise zu GPT-4, wodurch wir letztendlich eine viel bessere und detailliertere Antwort erhalten.

Ein Token in GPT-4 kann nur ein Zeichen oder ein Wort lang sein. Beispielsweise kann GPT-4-32K bis zu 32.000 Token in einem einzigen Durchgang verarbeiten, während GPT-4-8K und GPT-3.5-turbo 8.000 bzw. 4.000 Token unterstützen. Es ist jedoch wichtig zu beachten, dass jede Interaktion mit diesen Modellen mit Kosten verbunden ist, die direkt proportional zur Anzahl der verarbeiteten Token sind, sei es Eingabe oder Ausgabe.

Wenn im Rahmen unseres Q&A-Systems ein Teil der wissenschaftlichen Literatur die maximale Token-Grenze überschreitet, kann das System ihn nicht vollständig verarbeiten, was sich auf die Qualität und Vollständigkeit der Antworten auswirkt. Um dieses Problem zu umgehen, kann der Text in kleinere Teile zerlegt werden, die dem Token-Limit entsprechen.

FAISS (Facebook AI Similarity Search) hilft dabei, schnell die relevantesten Textabschnitte im Zusammenhang mit der Suchanfrage des Benutzers zu finden. Es erstellt eine Vektordarstellung jedes Textabschnitts und verwendet diese Vektoren, um die Abschnitte zu identifizieren und abzurufen, die der Vektordarstellung einer bestimmten Frage am ähnlichsten sind.

Es ist wichtig zu bedenken, dass selbst bei der Verwendung von Tools wie FAISS die Notwendigkeit, den Text aufgrund von Token-Einschränkungen in kleinere Abschnitte zu unterteilen, manchmal zu einem Kontextverlust führen kann, was sich auf die Qualität der Antworten auswirkt. Daher sind eine sorgfältige Verwaltung und Optimierung der Token-Nutzung bei der Arbeit mit diesen großen Sprachmodellen von entscheidender Bedeutung.

Nachdem Sie sichergestellt haben, dass die oben genannten Bibliotheken installiert sind, führen Sie sie aus

Mit der Fertigstellung des Codes verfügen wir nun über ein leistungsstarkes Tool zum Abfragen der neuesten akademischen Literatur im Bereich NLP.

Die Integration von Large Language Models (LLMs) in Anwendungen hat die Einführung mehrerer Bereiche beschleunigt, darunter Sprachübersetzung, Stimmungsanalyse und Informationsabruf. Prompt Engineering ist ein leistungsstarkes Werkzeug zur Maximierung des Potenzials dieser Modelle, und Langchain ist führend bei der Vereinfachung dieser komplexen Aufgabe. Seine standardisierte Schnittstelle, flexible Eingabeaufforderungsvorlagen, robuste Modellintegration und der innovative Einsatz von Agenten und Ketten sorgen für optimale Ergebnisse für die Leistung von LLMs.

Trotz dieser Fortschritte gibt es jedoch nur wenige Tipps, die Sie beachten sollten. Wenn Sie Langchain verwenden, ist es wichtig zu verstehen, dass die Qualität der Ausgabe stark von der Formulierung der Eingabeaufforderung abhängt. Das Experimentieren mit verschiedenen Eingabeaufforderungsstilen und -strukturen kann zu besseren Ergebnissen führen. Denken Sie auch daran, dass Langchain zwar eine Vielzahl von Sprachmodellen unterstützt, jedes jedoch seine Stärken und Schwächen hat. Die Auswahl des richtigen Geräts für Ihre spezifische Aufgabe ist entscheidend. Abschließend ist es wichtig, sich daran zu erinnern, dass die Verwendung dieser Modelle mit Kostenüberlegungen verbunden ist, da die Token-Verarbeitung die Kosten von Interaktionen direkt beeinflusst.

Wie in der Schritt-für-Schritt-Anleitung gezeigt, kann Langchain robuste Anwendungen wie das Q&A-System für akademische Literatur unterstützen. Mit einer wachsenden Benutzergemeinschaft und zunehmender Bedeutung in der Open-Source-Landschaft verspricht Langchain, ein entscheidendes Werkzeug zu sein, um das volle Potenzial von LLMs wie GPT-4 auszuschöpfen.

ChatGPT und Advanced Prompt Engineering: Die KI-Evolution vorantreiben

Ich habe die letzten fünf Jahre damit verbracht, in die faszinierende Welt des maschinellen Lernens und des Deep Learning einzutauchen. Meine Leidenschaft und mein Fachwissen haben dazu geführt, dass ich an über 50 verschiedenen Software-Engineering-Projekten mitgewirkt habe, mit besonderem Schwerpunkt auf KI/ML. Meine anhaltende Neugier hat mich auch zur Verarbeitung natürlicher Sprache geführt, einem Bereich, den ich gerne weiter erforschen möchte.

ChatGPT und Advanced Prompt Engineering: Die KI-Evolution vorantreiben

KI-Kunst beherrschen: Ein prägnanter Leitfaden für Midjourney und Prompt Engineering

Der wesentliche Leitfaden für Prompt Engineering in ChatGPT

Verarbeitung natürlicher Sprache (NLP): Inklusivität und gerechte Zukunftsaussichten in der Kapitalinfrastrukturplanung erschließen

Erstellen eines Chatbots von Grund auf: Ein Leitfaden für Anfänger

Was ist ein Datenanalyst? Gehalt, Verantwortlichkeiten, Fähigkeiten und Karriereweg

promptWerkzeugeToolkitsAgent-AusführendeVersorgungskettenGenerische KettenDocker-DateiAnforderungen.txtpyproject.tomllangchain_ai.ymlvirtuelle UmgebungKOSTENLOSE NUTZUNG
AKTIE