Wann man dazu greift
- Zentrale Kontrolle und Nachvollziehbarkeit wesentlich sind.
- Mehrere Spezialisten koordiniert werden müssen.
- Aufgaben dynamisch delegiert werden.
/pattern/supervisor/
Ein zentraler Agent entscheidet dynamisch, welcher spezialisierte Agent oder welches Tool als Nächstes arbeitet.
Wann man dazu greift
Wann es nach hinten losgeht
Die Abwägung
Klare operative Kontrolle wird auf Kosten eines potenziellen Koordinierungsengpasses aufrechterhalten.
Jeder Schritt beginnt und endet beim Supervisor. Beobachte den Dispatch: Der Supervisor wählt einen Spezialisten, der Spezialist gibt zurück, der Supervisor entscheidet, ob er erneut dispatcht oder antwortet.
from langgraph.graph import StateGraph, END
def supervisor(state):
# LLM picks the next agent by name — or "done"
choice = llm.choose_next(
history=state["messages"],
options=["shipping", "refunds", "tech", "done"],
)
return {"next": choice}
graph = StateGraph(State)
graph.add_node("supervisor", supervisor)
graph.add_node("shipping", shipping_agent)
graph.add_node("refunds", refunds_agent)
graph.add_node("tech", tech_agent)
graph.add_conditional_edges("supervisor",
lambda s: s["next"],
{"shipping": "shipping", "refunds": "refunds",
"tech": "tech", "done": END})
# Each specialist returns control to the supervisor:
for spec in ["shipping", "refunds", "tech"]:
graph.add_edge(spec, "supervisor")
graph.set_entry_point("supervisor")Der Supervisor häuft Tools an, wird zum Ort, an dem jede Prompt-Änderung landet, und hält am Ende rohe Nutzerdaten, die er nicht benötigt.
Lösung · Prompt & Toolset des Supervisors minimal halten. Spezialisten besitzen ihre Tools. Sensible Daten bleiben im Bereich des Spezialisten.
Der Supervisor sendet an Versand, bekommt eine Teilantwort, sendet erneut an Versand, bekommt dieselbe Teilantwort, und die Schleife endet nie.
Lösung · Hartes max_iterations-Limit. Die 'next'-Ausgabe des Supervisors schema-validieren. Jede Routing-Entscheidung protokollieren.
Rückerstattungen weiß nicht, was Versand herausgefunden hat, weil der Supervisor das Detail zusammengefasst und dabei verworfen hat. Entscheidungen werden auf Basis veralteter oder falscher Annahmen getroffen.
Lösung · Strukturierten Zustand übergeben, keine Textzusammenfassungen. Pydantic v2 Schemas bei jeder Übergabe. Rohe Fakten inspizierbar halten.
Nächstes Pattern
Patterns, Frameworks und Seiten durchsuchen.