Wann man dazu greift
- Das Gesamtziel sich klar in testbare Teilaufgaben aufgliedern lässt.
- Die Ausführung nachvollziehbar und zentral steuerbar sein muss.
- Kosten oder Latenz relevant sind und LLM-Aufrufe minimiert werden sollen.
/pattern/plan-and-execute/
Ein Agent erstellt zunächst einen vollständigen Plan und führt die Schritte anschließend sequenziell oder kontrolliert aus.
Wann man dazu greift
Wann es nach hinten losgeht
Die Abwägung
Bessere Struktur und Testbarkeit gegenüber ReAct, aber mit dem Risiko, dass der Agent an veralteten oder ungeeigneten Plänen festhält.
Zuerst planen — in einem einzigen LLM-Aufruf — dann die notierten Schritte ausführen. Die Form der Arbeit steht fest, bevor ein Tool läuft.
class State(TypedDict):
goal: str
plan: list[str]
done: list[tuple[str, str]]
result: str | None
def make_plan(state):
plan = planner_llm.invoke(state["goal"]).steps
return {"plan": plan}
def run_step(state):
step = state["plan"][0]
output = executor.invoke(step, context=state["done"])
return {
"plan": state["plan"][1:],
"done": state["done"] + [(step, output)],
}
graph = StateGraph(State)
graph.add_node("planner", make_plan)
graph.add_node("executor", run_step)
graph.add_edge("planner", "executor")
graph.add_conditional_edges(
"executor",
lambda s: "executor" if s["plan"] else END,
)Ein früher Schritt liefert etwas zurück, das der Planer nicht vorhergesehen hat — eine leere Liste, ein 404, ein anderes Schema. Der Plan läuft trotzdem weiter, mit falschen Eingaben.
Lösung · Einen Neuplanungs-Trigger einbauen. Die Ausgabe jedes Schritts gegen die Annahme des Planers validieren; bei Ungültigkeit die Kontrolle zurück an den Planer übergeben.
Schritt 2 liest die Ausgabe von Schritt 1 falsch. Schritt 3 baut auf dem Fehler auf. Bei Schritt 4 löst der Agent ein anderes Problem.
Lösung · Pydantic-Schemas an jeder Schrittgrenze. Günstige Validatoren sind mehr wert als teure Neuplanung.
Der Planer schreibt einen ambitionierten 12-Schritte-Plan für eine Aufgabe, die wahrscheinlich drei benötigt hätte. Die Ausführungskosten übersteigen die Einsparungen gegenüber ReAct.
Lösung · Die Planlänge im Planer-Prompt begrenzen. Kürze belohnen; spekulative Schritte bestrafen.
Nächstes Pattern
Patterns, Frameworks und Seiten durchsuchen.