Prompt Chaining mit LangChain: Ein umfassender Überblick

Autor

Vrunda Gadesha

AI Advocate | Technical Content Author

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:

  1. Erkunden Sie verschiedene Arten der Promptverkettung (sequenziell, verzweigt, iterativ und andere).
  2. Implementieren Sie ein generisches Verkettungsbeispiel, das sequenzielle, verzweigte und iterative Verkettungstypen kombiniert.
  3. Nutzen Sie die in LangChain integrierten Klassen, beispielsweise PromptTemplate, LLMChain und SequentialChain, um Ihren Workflow zu definieren und zu verwalten.

Wie LangChain die Prompt-Verkettung verwaltet

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.

Diagramm des Prompts Abbildung – 1 Framework der Promptkette mit langchain

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.

Arten des Prompt Chainings

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.

Anwendungsfall – mehrstufige Textverarbeitung

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)

  • Der Eingabetext oder die Benutzereingabe in natürlicher Sprache wird anhand einer Prompt-Vorlage verarbeitet, um wichtige Schlüsselwörter zu identifizieren.
  • In diesem Schritt wird eine sequenzielle Verkettung verwendet, um sicherzustellen, dass die extrahierten Schlüsselwörter direkt in die nachfolgenden Aufgaben eingespeist werden.

Generieren einer Stimmungszusammenfassung (Verzweigungsverkettung)

  • Extrahierte Schlüsselwörter werden an ein Chat-Modell weitergeleitet, um eine Stimmungszusammenfassung zu erstellen.
  • Die Verzweigungsverkettung ermöglicht parallele Pfade für die Zusammenfassung, um die Ausgaben basierend auf dem Kontext anzupassen.

Verfeinerung der Stimmungszusammenfassung (iterative Verkettung)

  • Erfüllt die Stimmungszusammenfassung die vordefinierten Qualitätskriterien nicht, wird sie durch einen Prompt zur Präzisierung geleitet.
  • Die iterative Verkettung ermöglicht die erneute Verarbeitung, bis die Ausgabe die erwartete Präzision erreicht.

Endgültige Ausgabe

  • Die verfeinerte Stimmungszusammenfassung wird als Ausgabe geliefert und bietet dem Benutzer ausgefeilte Erkenntnisse.
  • Dies demonstriert die Integration von Prompt Engineering, generativer KI und fortschrittlicher Verkettungstechniken.

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.

Voraussetzungen

Sie benötigen ein IBM Cloud-Konto für das Erstellen eines watsonx.ai™- Projekts.

Schritte

Schritt 1. Einrichten Ihrer Umgebung

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.

  1. Melden Sie sich bei watsonx.ai mit Ihrem IBM Cloud-Konto an.
  2. Erstellen Sie ein watsonx.ai-Projekt. Sie können Ihre Projekt-ID in Ihrem Projekt abrufen. Klicken Sie auf die Registerkarte Verwalten. Kopieren Sie dann die Projekt-ID aus dem Abschnitt Details der Seite Allgemein. Sie benötigen diese ID für dieses Tutorial.
  3. Erstellen Sie ein 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.

Schritt 2. Einrichten von watsonx.ai Runtime Service und API-Schlüssel

  1. Erstellen Sie eine Instanz des watsonx.ai Runtime Service (wählen Sie den Lite-Plan als kostenlose Instanz).
  2. Generieren Sie einen API-Schlüssel.
  3. Verknüpfen Sie den watsonx.ai Runtime Service mit dem Projekt, das Sie in watsonx.ai erstellt haben.

Schritt 3. Installation der Pakete

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.

!pip install --upgrade pip
%pip install langchain
!pip install langchain-ibm

Schritt 4. Importieren erforderlicher Bibliotheken

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.

import os
from langchain_ibm import WatsonxLLM
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SequentialChain
import getpass

Schritt 5. Einrichten von Zugangsdaten

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.

  • Die Zugangsdaten eines Wörterbuchs werden mit der WML-Dienst-URL und dem API-Schlüssel erstellt. Der API-Schlüssel wird sicher mithilfe von gatepass.gatepass erfasst, um die Offenlegung sensibler Informationen zu vermeiden.
  • Der Code versucht, die PROJECT_ID mithilfe der Funktion os.environ aus Umgebungsvariablen abzurufen. Wenn die PROJECT_ID nicht gefunden wird, wird der Benutzer aufgefordert, sie manuell über die Eingabe einzugeben.
# Set up credentials
credentials = {
    "url": "https://us-south.ml.cloud.ibm.com", # Replace with the correct region if needed
    "apikey": getpass.getpass("Please enter your WML API key (hit enter): ")
}

# Set up project_id
try:
    project_id = os.environ["PROJECT_ID"]
except KeyError:
    project_id = input("Please enter your project_id (hit enter): ")

Schritt 6. Initialisieren eines Large Language Models

Dieser Code initialisiert das IBM Watson LLM zur Verwendung in der Anwendung:

  1. Dieser Code erstellt eine Instanz von WatsonxLLM mit dem Modell ibm/granite-3-8b-instruct, das für anweisungsbasierte generative KI-Aufgaben entwickelt wurde.
  2. Die Werte für url, apikey und project_id aus den zuvor eingerichteten Zugangsdaten werden zur Authentifizierung und Verbindung zum IBM Watson LLM-Service übergeben.
  3. Konfiguriert den Parameter max_new_tokens, um die Anzahl der Token zu begrenzen, die vom Modell in jeder Antwort generiert werden (in diesem Fall 150 Token).

In diesem Schritt wird das Watson LLM für die Generierung von Antworten im Workflow vorbereitet.

# Initialize the IBM LLM
llm = WatsonxLLM(
    model_id="ibm/granite-3-8b-instruct",
    url=credentials["url"],
    apikey=credentials["apikey"],
    project_id=project_id,
    params={
    "max_new_tokens": 150
    }
)   

Schritt 7. Prompt-Vorlagen definieren

Dieser Code definiert Promptvorlagen für drei Phasen des Textverarbeitungs-Workflows:

  1. Schlüsselwort-Extraktion: keyword_prompt wurde entwickelt, um die wichtigsten Schlüsselwörter aus dem bereitgestellten Text zu extrahieren. Es verwendet den Platzhalter {text}, um die Eingabe dynamisch einzufügen.
  2. Erstellung von Stimmungszusammenfassungen: sentiment_prompt nimmt die extrahierten {keywords} als Eingabe und generiert eine Stimmungszusammenfassung des Feedbacks. Mithilfe der Vorlage wird sichergestellt, dass sich die Stimmungsanalyse auf die angegebenen Stichwörter konzentriert.
  3. Refinement of the summary: refine_prompt verbessert die Stimmungszusammenfassung, indem {sentiment_summary} als Eingabe verwendet wird. Die Ausgabe wird präzise und genau formuliert.

Diese PromptTemplate-Instanzen ermöglichen ein wiederverwendbares und strukturiertes Prompt Engineering für die LLM-Anwendung.

# Define Prompt Templates

# Prompt for extracting keywords
keyword_prompt = PromptTemplate(
    input_variables=["text"],
    template="Extract the most important keywords from the following text:\n{text}\n\nKeywords:"
)

# Prompt for generating sentiment summary
sentiment_prompt = PromptTemplate(
    input_variables=["keywords"],
    template="Using the following keywords, summarize the sentiment of the feedback:\nKeywords: {keywords}\n\nSentiment Summary:"
)

# Prompt for refining the summary
refine_prompt = PromptTemplate(
    input_variables=["sentiment_summary"],
    template="Refine the following sentiment summary to make it more concise and precise:\n{sentiment_summary}\n\nRefined Summary:"
)

Schritt 8. Ketten erstellen

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:

  1. Keyword-Kette: keyword_chain verwendet keyword_prompt, um Keywords aus dem Eingabetext zu extrahieren. Das Ergebnis wird unter dem eindeutigen Schlüssel „keywords“ gespeichert, um es in den folgenden Schritten zu verwenden.
  2. Sentiment chain: sentiment_chain generiert mithilfe von sentiment_prompt eine Stimmungszusammenfassung aus den extrahierten Schlüsselwörtern.. Die Ausgabe ist als „sentiment_summary“ gekennzeichnet.
  3. Verfeinerungskette: refine_chain verarbeitet die generierte Stimmungszusammenfassung mithilfe von refine_prompt. Die endgültige, bereinigte Ausgabe wird mit dem Schlüssel „refined_summary“ gespeichert.

Diese LLMChain-Instanzen ermöglichen eine modulare Aufgabenausführung und erleichtern einen schrittweisen Workflow.

# Define Chains with Unique Keys

# Chain to extract keywords
keyword_chain = LLMChain(
    llm=llm,
    prompt=keyword_prompt,
    output_key="keywords" # Unique key for extracted keywords
)

# Chain to generate sentiment summary
sentiment_chain = LLMChain(
    llm=llm,
    prompt=sentiment_prompt,
    output_key="sentiment_summary" # Unique key for sentiment summary
)

# Chain to refine the sentiment summary
refine_chain = LLMChain(
    llm=llm,
    prompt=refine_prompt,
    output_key="refined_summary" # Final refined output
)

Schritt 9. Ketten kombinieren

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.

# Combine Chains into a Sequential Workflow

workflow = SequentialChain(
    chains=[keyword_chain, sentiment_chain, refine_chain],
    input_variables=["text"], # Initial input for the workflow
    output_variables=["refined_summary"] # Final output of the workflow
)

Schritt 10. Ausführen des Workflows

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.

# Example Input Text

feedback_text = """
    I really enjoy the features of this app, but it crashes frequently, making it hard to use.
    The customer support is helpful, but response times are slow.

    I tried to reachout to the support team, but they never responded

    For me, the customer support was very much helpful. Ihis is very helpful app. Thank you for grate services.

"""

# Run the Workflow

result = workflow.run({"text": feedback_text})

# Display the Output

print("Refined Sentiment Summary:")
print(result) # Directly print the result since it is a string

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.

So wählen Sie den richtigen Verkettungstyp aus

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.

Zusammenfassung

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.

Weiterführende Lösungen
IBM watsonx.ai

Trainieren, validieren, optimieren und implementieren Sie generative KI, Foundation Models und maschinelle Lernfunktionen mit IBM watsonx.ai, einem Studio der nächsten Generation für AI Builder in Unternehmen. Erstellen Sie KI-Anwendungen mit einem Bruchteil der Zeit und Daten.

watsonx.ai erkunden
Lösungen im Bereich künstlicher Intelligenz

Setzen Sie KI in Ihrem Unternehmen ein
– mit branchenführendem Fachwissen im Bereich KI und dem umfassenden Lösungsportfolio von IBM an Ihrer Seite.

Erkunden Sie KI-Lösungen
Beratung und Services zu künstlicher Intelligenz (KI)

Die KI-Services von IBM Consulting unterstützen Sie dabei, die Art und Weise, wie Unternehmen mit KI arbeiten, neu zu denken.

KI-Services entdecken
Machen Sie den nächsten Schritt

Mithilfe von KI liefert IBM Concert wichtige Erkenntnisse über Ihre Abläufe und gibt anwendungsspezifische Empfehlungen zur Verbesserung. Entdecken Sie, wie Concert Ihr Unternehmen voranbringen kann.

Entdecken Sie Concert Erkunden Sie Lösungen zur Geschäftsprozessautomatisierung
Fußnoten

[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.