Sofortantwort
Prompt Chaining einfach erklärt
Komplexe Aufgaben durch verkettete LLM-Aufrufe lösen.
- Kurz gesagt
- Komplexe Aufgaben in einfachere Teilschritte zerlegen
- Typischer Einsatz
- Dokumentenverarbeitung, Code-Generierung, Content-Erstellung
- Wichtig zu wissen
- Bessere Kontrolle und Debugging als ein einzelner komplexer Prompt
Prompt Chaining im Überblick
Prompt Chaining bedeutet, komplexe Aufgaben in mehrere LLM-Aufrufe zu zerlegen. Die Ausgabe eines Schritts wird zur Eingabe des nächsten – wie eine Kette.
Warum ist das besser als ein einzelner Prompt?
- Einfachere Prompts: Jeder Schritt hat eine klare, fokussierte Aufgabe
- Bessere Kontrolle: Zwischenergebnisse können validiert werden
- Einfacheres Debugging: Fehler sind leichter zu lokalisieren
- Flexibilität: Verschiedene Modelle für verschiedene Schritte
Beispiel Dokumentenanalyse:
Schritt 1: "Extrahiere alle Fakten aus diesem Text"
↓ [Liste von Fakten]
Schritt 2: "Kategorisiere diese Fakten nach Thema"
↓ [Kategorisierte Fakten]
Schritt 3: "Schreibe eine Zusammenfassung basierend auf den wichtigsten Fakten"
↓ [Finale Zusammenfassung]
Technisch betrachtet
Einfache Chain in Python
def document_analysis_chain(document: str) -> str:
# Schritt 1: Fakten extrahieren
facts = llm.complete(f"Extrahiere alle Fakten:\n{document}")
# Schritt 2: Kategorisieren
categorized = llm.complete(f"Kategorisiere diese Fakten:\n{facts}")
# Schritt 3: Zusammenfassen
summary = llm.complete(f"Schreibe eine Zusammenfassung:\n{categorized}")
return summary
Beispiel mit LangChain
Installiere LangChain und die Integration für deinen Modellanbieter. Setze LANGCHAIN_MODEL auf einen Modellbezeichner im Format anbieter:modell-id und konfiguriere die Zugangsdaten des Anbieters.
import os
from langchain.chat_models import init_chat_model
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
model = init_chat_model(os.environ["LANGCHAIN_MODEL"])
extract_prompt = ChatPromptTemplate.from_template(
"Extrahiere ausdrücklich genannte Fakten aus diesem Text:\n{document}"
)
summary_prompt = ChatPromptTemplate.from_template(
"Fasse nur diese Fakten in einem Satz zusammen:\n{facts}"
)
extract = extract_prompt | model | StrOutputParser()
summarize = summary_prompt | model | StrOutputParser()
facts = extract.invoke({"document": "Der Pilot startet im Mai mit zwei Teams."})
print(summarize.invoke({"facts": facts}))
Zwischen den beiden Aufrufen kannst du die extrahierten Fakten mit dem Ausgangstext abgleichen, bevor du sie zusammenfassen lässt.
Best Practices
| Practice | Beschreibung |
|---|---|
| Validierung | Zwischenergebnisse prüfen |
| Fehlerbehandlung | Retry, Fallback, Logging |
| Modell-Auswahl | Günstigere Modelle für einfache Schritte |
| Parallelisierung | Unabhängige Schritte parallel ausführen |