Prompt Chaining ist ein grundlegendes Konzept beim Aufbau fortschrittlicher Workflows mit großen Sprachmodellen (LLMs). Dabei werden mehrere Prompts in einer logischen Abfolge miteinander verknüpft. Die Ausgabe eines Prompts dient als Eingabe für den nächsten. Dieser modulare Ansatz eignet sich zur Lösung komplexer Aufgaben wie mehrstufiger Textverarbeitung, Erstellung von Zusammenfassungen oder Beantwortung von Fragen.
LangChain ist ein vielseitiges Framework, das die Erstellung solcher Workflows vereinfachen soll. Es bietet Tools, um LLMs wie die IBM® Granite-Modelle oder die GPT-Modelle (Generative Pre-Trained Transformer) von OpenAI zu verwalten, benutzerdefinierte Prompts zu definieren und diese zu wiederverwendbaren Ketten zu verbinden. Durch die Abstraktion der Komplexität der Promptverwaltung ermöglicht LangChain den Entwicklern, sich auf die Lösung von Problemen zu konzentrieren, anstatt die Interaktionen mit LLMs zu orchestrieren.
In diesem Tutorial werden wir:
LangChain bietet ein leistungsstarkes Framework für den Aufbau modularer Workflows in Chatbot-Anwendungen. Durch die Kombination von strukturierten Prompts, dynamischer Verkettung und erweiterter LLM-Integration können Entwickler skalierbare, adaptive Pipelines erstellen, die RAG-Techniken nutzen und strukturierte Ausgaben wie JSON liefern. So geht LangChain effektiv mit der Verkettung von Eingabeaufforderungen um:
Prompt-Abstraktion: LangChain nutzt from_template, um strukturierte Eingabe-/Ausgabe-Workflows für jeden Schritt zu entwerfen. Dadurch lassen sich komplexe Chatbot-Vorgänge einfacher handhaben.
LLM-Integration: Das Framework lässt sich nahtlos mit verschiedenen LLMs wie IBM Granite, OpenAI und Hugging Face integrieren und ermöglicht so eine Feinabstimmung für benutzerdefinierte Aufgaben.
Chain Management: SequentialChain und SimpleSequentialChain von LangChain ermöglichen modulare Workflows für Chatbot-Pipelines, während stroutputparser strukturierte Ausgaben wie JSON sicherstellt.
Dynamische Workflows: Mithilfe von Tools wie ConditionalChain und Systemmessage-Vorlagen unterstützt LangChain adaptive Workflows, die sich an den Prinzipien der RAG (Retrieval-Augmented Generation) für die dynamische Inhaltserstellung orientieren.
Nach Abschluss dieses Tutorials haben Sie ein solides Verständnis dafür, wie Sie LangChain verwenden können, um modulare und erweiterbare Workflows für eine Vielzahl von Anwendungen zu erstellen.
Prompt Chaining ermöglicht es Ihnen, Workflows zu entwerfen, bei denen die Ausgaben eines Schritts an den nächsten weitergegeben werden. Verschiedene Arten der Verkettung unterstützen unterschiedliche Workflows, die von einfachen sequenziellen Aufgaben bis hin zu komplexeren, dynamischen Prozessen reichen. Hier ist ein kurzer Überblick über die Arten des Prompt Chainings:
Sequenzielle Verkettung: Die einfachste Art der Verkettung, bei der die Ausgabe eines Prompts direkt als Eingabe an den nächsten übergeben wird. Diese Option ist ideal für Aufgaben mit linearem Verlauf.[1]
Verzweigungsverkettung: Bei der Verzweigungsverkettung wird eine einzelne Ausgabe in mehrere parallele Workflows aufgeteilt. Jeder Zweig verarbeitet die Ausgabe unabhängig. [2]
Iterative Verkettung: Bei der iterativen Verkettung handelt es sich um die wiederholte Ausführung eines Prompts oder einer Kette, bis eine bestimmte Bedingung erfüllt ist. Diese Option ist nützlich, um die Ergebnisse zu verfeinern.[3]
Hierarchische Verkettung: Hier wird eine große Aufgabe in kleinere Teilaufgaben aufgegliedert, die hierarchisch ausgeführt werden. Ausgaben auf niedrigerer Ebene werden für übergeordnete Aufgaben eingesetzt. [4]
Bedingte Verkettung: Bei der bedingten Verkettung wird der nächste Schritt dynamisch auf der Grundlage der Ausgabe eines vorhergehenden Prompts ausgewählt. Es ermöglicht die Entscheidungsfindung innerhalb von Workflows.
Multimodale Verkettung: Die multimodale Verkettung integriert Prompts, die unterschiedliche Datentypen verarbeiten (z. B. Text, Bilder oder Audio). Diese Vorgehensweise eignet sich für Anwendungen, die mehrere Modalitäten kombinieren. [2]
Dynamische Verkettung: Die dynamische Verkettung passt den Workflow an die Echtzeit-Ausgaben oder sich ändernde Bedingungen an. So wird das Prompt Chaining noch flexibler. [5]
Rekursive Verkettung: Bei der rekursiven Verkettung werden große Eingaben zur individuellen Verarbeitung in kleinere Teile aufgeteilt. Die Ergebnisse werden dann kombiniert. Dies ist nützlich für die Bearbeitung längerer Dokumente oder Datensätze. [6]
Rückwärtsverkettung: Die Rückwärtsverkettung beginnt mit einer erwarteten Ausgabe und arbeitet rückwärts, um die notwendigen Eingaben oder Schritte zu bestimmen, um diese zu erreichen. Diese Vorgehensweise eignet sich hervorragend zur Problemlösung und Fehlerbehebung. [5]
Da jede Art der Verkettung auf bestimmte Anwendungsfälle ausgelegt ist, ist es wichtig, je nach Komplexität und Anforderungen der Aufgabe die passende Methode zu wählen.
In diesem Workflow verarbeiten wir Kunden-Feedback mit Chat-Modellen und Prompt Engineering, um eine skalierbare Textverarbeitungspipeline aufzubauen. In den folgenden Phasen des Tutorials werden sequenzielle, verzweigte und iterative Verkettungstechniken vorgestellt, die auf generativer KI basieren.
Extrahieren von Schlüsselwörtern (sequenzielle Verkettung)
Generieren einer Stimmungszusammenfassung (Verzweigungsverkettung)
Verfeinerung der Stimmungszusammenfassung (iterative Verkettung)
Endgültige Ausgabe
Dieser Ansatz kombiniert sequenzielle, verzweigte und iterative Verkettung in Python mit Chat-Modellen und Prompt-Engineering. Er gewährleistet eine zuverlässige Verarbeitung von Kundenfeedback und nutzt generative KI für die Extraktion von Schlüsselwörtern, die Stimmungsanalyse und die Verfeinerung.
Sie benötigen ein IBM Cloud-Konto für das Erstellen eines watsonx.ai™- Projekts.
Sie können zwar aus mehreren Tools wählen, aber dieses Tutorial führt Sie durch die Einrichtung eines IBM® Kontos für die Verwendung eines Jupyter Notebook.
In diesem Schritt wird eine Notebook-Umgebung geöffnet, in die Sie den Code aus diesem Tutorial kopieren können. Alternativ können Sie dieses Notebook auf Ihr lokales System herunterladen und als Asset in Ihr watsonx.ai-Projekt hochladen. Weitere Granite-Tutorials finden Sie in der IBM Granite®-Community. Dieses Tutorial ist auch auf GitHub verfügbar.
Wir benötigen Bibliotheken, um mit dem Langchain-Framework und watsonxLLM zu arbeiten. Lassen Sie uns zuerst die erforderlichen Pakete installieren.
Hinweis: Wenn Sie eine ältere Version von „pip“ verwenden, können Sie diese mit dem Befehl pip install --upgrade pip aktualisieren. Das ist hilfreich bei der einfachen Installation der neuesten Pakete, die möglicherweise nicht mit einer älteren Version kompatibel sind. Wenn Sie jedoch bereits die neueste Version verwenden oder Ihre Pakete kürzlich aktualisiert haben, können Sie diesen Befehl überspringen.
Mit diesem Codeblock werden wichtige Python-Bibliotheken und Tools zum Erstellen und Verwalten einer LLM-Anwendung mithilfe von LangChain und IBM Watson LLM importiert.
Das os-Modul wird verwendet, um auf Umgebungsvariablen zuzugreifen, z. B. auf Zugangsdaten oder API-Schlüssel.
WatsonxLLM ist ein Modul von langchain_ibm, das IBM Watson für die Generierung von Ausgaben von generativen KI-Modellen integriert.
PromptTemplate hilft bei der Erstellung wiederverwendbarer Vorlagen für Prompts und gewährleistet die Eingabe und Flexibilität im Prompt Engineering.
LLMChain erstellt dabei individuelle Aufgabenketten.
SequencialChain verknüpft mehrere Schritte zu einem einzigen Workflow und „getpass“ ruft sensible Informationen (z. B. API-Schlüssel) sicher ab, ohne sie auf dem Bildschirm zu zeigen.
Dieser Code richtet die Anmeldedaten für den Zugriff auf die IBM Watson Machine Learning (WML) API ein und stellt sicher, dass die PROJECT_ID korrekt konfiguriert ist.
Dieser Code initialisiert das IBM Watson LLM zur Verwendung in der Anwendung:
In diesem Schritt wird das Watson LLM für die Generierung von Antworten im Workflow vorbereitet.
Dieser Code definiert Promptvorlagen für drei Phasen des Textverarbeitungs-Workflows:
Diese PromptTemplate-Instanzen ermöglichen ein wiederverwendbares und strukturiertes Prompt Engineering für die LLM-Anwendung.
Dieser Code definiert LLM-Ketten, die die Prompts mit dem initialisierten IBM Watson LLM verbinden, und weist für jede Phase eindeutige Ausgabeschlüssel zu:
Diese LLMChain-Instanzen ermöglichen eine modulare Aufgabenausführung und erleichtern einen schrittweisen Workflow.
Mithilfe dieses Codes werden die zuvor definierten Ketten zu einem sequenziellen Workflow zusammengefasst, der einen schrittweisen Prozess für die Texteingabe ermöglicht. Die SequentialChain verknüpft die keyword_chain, sentiment_chain und refine_chain in einer definierten Reihenfolge und stellt sicher, dass die Ausgabe der einen Kette als Eingabe für die nächste dient. Der Workflow ist so konfiguriert, dass er Text als erste Eingabe akzeptiert, wobei die endgültige Ausgabe, eine verfeinerte Stimmungszusammenfassung, unter dem Schlüssel refined_summary gespeichert wird. Dieses Setup ermöglicht eine optimierte und effiziente Ausführung der LLM-Anwendung und gewährleistet eine kohärente und modulare Verarbeitungspipeline.
In diesem Codeblock führen wir den gesamten Workflow aus. Erstens haben wir eine mehrzeilige Feedback-Zeichenfolge namens feedback_text, die sowohl positive als auch negative Benutzerkommentare zu einer App enthält. Die Methode workflow.run verarbeitet das Feedback über die sequenziellen Ketten (Schlüsselwortextraktion, Stimmungsanalyse und Verfeinerung) unter Verwendung der bereitgestellten Eingabe. Die verfeinerte Stimmungszusammenfassung wird direkt als Ergebnis ausgedruckt.
AUSGABE
Verfeinerte Stimmungszusammenfassung:
Trotz der Wertschätzung für die Funktionen der App und des gelegentlich hilfreichen Kundensupports ist die Stimmung der Benutzer aufgrund der wiederkehrenden Abstürze der App und der langsamen Reaktionszeiten des Kundensupports überwiegend negativ. Um die Benutzerzufriedenheit zu erhöhen, sollte sich das Entwicklungsteam auf die Behebung von App-Abstürzen und die schnelle Bearbeitung von Supportanfragen konzentrieren.
Die verfeinerte Stimmungszusammenfassung ist eine präzise und klare Bewertung des Feedbacks. Sie unterstreicht die Wertschätzung der Benutzer für die Funktionen der App, bringt aber auch die Frustration über häufige Abstürze und den langsamen Kundensupport zum Ausdruck, was die Fähigkeit des Workflows widerspiegelt, kritische Erkenntnisse effektiv zu destillieren.
Um Effizienz und Kohärenz sicherzustellen, müssen bei der Auswahl des geeigneten Verkettungstyps für die LLM-Anwendung die Schlüsselfaktoren bewertet werden.
Komplexität der Aufgaben: Verwenden Sie ausführbare Workflows für Aufgaben mit mehreren Schritten. Few-Shot-Beispiele oder Chatprompt-Vorlagen können bei der Strukturierung komplexer Aufgaben helfen, die unterschiedliche Prompts erfordern.
Abhängigkeit: Wenn die Ausgaben eines Schritts als Platzhalter für den nächsten Prompt dienen, verwenden Sie eine sequenzielle Verkettung. Output-Parser ermöglichen einen reibungslosen Übergang von Ausgaben zu strukturierten Eingaben.
Anpassungsfähigkeit: Für dynamische Workflows, wie z. B. solche, an denen Langchain-Agenten beteiligt sind, ermöglicht iteratives Verketten Anpassungen von Parametern und nächsten Prompts in Echtzeit.
Datenmodalität: Wählen Sie Workflows, die mit verschiedenen Datentypen kompatibel sind. Verwenden Sie Einbettungsmethoden für Text- und Vektordaten oder die LangChain Expression Language für flexible Operationen.
Durch die Berücksichtigung dieser Faktoren können Sie eine robuste und anpassungsfähige LLM-Anwendung mit kohärenten Workflows erstellen.
Die Verkettung von Prompts ist eine vielseitige Technik zum Erstellen anspruchsvoller NLP-Workflows (Verarbeitung natürlicher Sprache). In diesem Tutorial haben wir verschiedene Verkettungsarten erkundet und ein allgemeines Beispiel gezeigt, das mehrere Verkettungsansätze integriert. Durch Experimentieren mit diesen Methoden können Sie das volle Potenzial von Sprachmodellen für reale Anwendungen freischalten.
[1] Roegiest, A., & Chitta, R. (2024). Answering Questions in Stages: Prompt Chaining for Contract QA.
[2] Ge, J., Luo, H., Qian, S., Gan, Y., Fu, J., & Zhang, S. (2023). Chain of Thought Prompt Tuning in Vision Language Models.
[3] Sun, S., Yuan, R., Cao, Z., Li, W., & Liu, P. (2024). Prompt Chaining or Stepwise Prompt? Refinement in Text Summarization. , 7551-7558. https://arxiv.org/abs/2406.00507.
[4] Huang, Q., Zhu, J., Li, Z., Xing, Z., Wang, C., & Xu, X. (2023). PCR-Chain: Partial Code Reuse Assisted by Hierarchical Chaining of Prompts on Frozen Copilot. 2023 IEEE/ACM 45th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion), 1-5. https://ieeexplore.ieee.org/document/10172550.
[5] Wu, T., Jiang, E., Donsbach, A., Gray, J., Molina, A., Terry, M., & Cai, C. (2022). PromptChainer: Chaining Large Language Model Prompts through Visual Programming. CHI Conference on Human Factors in Computing Systems Extended Abstracts. https://dl.acm.org/doi/10.1145/3491101.3519729.
[6] Trautmann, D. (2023). Large Language Model Prompt Chaining for Long Legal Document Classification. ArXiv, abs/2308.04138. https://arxiv.org/abs/2308.04138.