Agent Design Patterns: Tool Loop, ReAct, Planning, Reflection, Routing
# Agent Design Patterns: Tool Loop, ReAct, Planning, Reflection, Routing
Bitten Sie fünf Engineers, „einen Agent zu bauen, der Kundenfragen zu Rückerstattungen beantwortet“, und Sie bekommen fünf verschiedene Designs. Einer verbindet das Modell mit einer Datenbank und lässt es loopen. Einer lässt es vor jeder Aktion laut denken. Einer lässt es zuerst einen Plan schreiben. Einer lässt es den eigenen Entwurf kritisieren. Einer schickt einfache Fragen an ein günstiges Modell und schwere an einen Experten. Dieselbe Aufgabe, fünf Architekturen, und nur einige davon funktionieren zuverlässig.
Ein Agent ist nichts anderes als ein Sprachmodell, das Aktionen in der Welt ausführen kann (Tools aufrufen, suchen, Code ausführen) und auf Basis der Ergebnisse entscheidet, was als Nächstes passiert. Das gewählte Design Pattern macht den Unterschied zwischen einem Agent, der seine Arbeit unauffällig erledigt, und einem, der endlos loopt, halluziniert oder Geld verbrennt.
Gehen wir die fünf Kern-Patterns durch, jedes mit einer konkreten Aufgabe.
Pattern 1: der Tool-Use-Loop
Das ist die Grundlage, auf der alles andere aufbaut. Ein Tool ist jede Funktion, die das Modell aufrufen kann: im Web suchen, eine Bestellung nachsehen, eine E-Mail senden, eine Datenbank abfragen.
Der Loop ist einfach:
1. Geben Sie dem Modell ein Ziel und eine Liste von Tools.
2. Das Modell antwortet entweder direkt oder verlangt einen Tool-Aufruf.
3. Sie führen das Tool aus und geben das Ergebnis zurück.
4. Wiederholen, bis das Modell eine endgültige Antwort liefert.
Konkrete Aufgabe: „Wie ist der Status von Bestellung #4471?“ Das Modell ruft get_order(4471) auf, sieht shipped und antwortet. Ein Tool-Aufruf, fertig.
Hier der Loop in herstellerneutralem Pseudocode. Jedes SDK eines Anbieters verpackt genau diese Form.
messages = [{"role": "user", "content": "Status of order #4471?"}]
while True:
response = model.generate(messages, tools=[get_order, cancel_order])
if response.tool_calls:
for call in response.tool_calls:
result = run_tool(call.name, call.args) # Sie führen es aus
messages.append({"role": "tool", "content": result})
else:
print(response.text) # endgültige Antwort, Loop verlassen
breakDer Tool-Use-Loop reicht für eine große Zahl realer Aufgaben. Greifen Sie zu den ausgefeilteren Patterns erst, wenn dieser hier zu versagen beginnt.
Pattern 2: ReAct (erst denken, dann handeln)
ReAct steht für „Reasoning and Acting“. Das Modell schreibt vor jeder Aktion einen kurzen Gedanken, handelt dann, liest das Ergebnis und denkt erneut. Denken und Handeln verschränken sich.
Konkrete Aufgabe: „Welches unserer drei Warehouses kann einen Stehtisch am schnellsten nach Denver liefern?“
Ein einfacher Tool-Loop würde vielleicht ein Warehouse abfragen und aufhören. ReAct arbeitet sich durch:
> Thought: Ich brauche Bestand und Lieferzeit von allen drei Warehouses.
> Action: check_stock("desk", "Salt Lake") → auf Lager, 2 Tage
> Thought: Gut, aber Phoenix kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnte näher sein. Prüfen.
> Action: check_stock("desk", "Phoenix") → auf Lager, 1 Tag
> Thought: Phoenix ist schneller. Zur Sicherheit Dallas prüfen.
> Action: check_stock("desk", "Dallas") → nicht auf Lager
> Thought: Phoenix gewinnt. Dem Nutzer antworten.
Das sichtbare Reasoning hält das Modell ehrlich und macht das Debugging leicht: Wenn etwas schiefgeht, sehen Sie genau, welcher Gedanke in die Irre geführt hat. ReAct ist das Arbeitspferd für Aufgaben, die mehrere voneinander abhängige Abfragen brauchen.
Das Original-Paper ist ein klarer, gut lesbarer Klassiker: ReAct: Synergizing Reasoning and Acting in Language Models.
Building Agents with the ReAct Pattern
Pattern 3: Planning (zuerst die Schritte schreiben)
Manchmal soll der Agent über die *gesamte* Aufgabe nachdenken, bevor ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → irgendetwas anfasst. Ein Planner erzeugt vorab eine geordnete Liste von Schritten und führt sie dann einen nach dem anderen aus.
Konkrete Aufgabe: „Erstelle ein Competitive Brief zu drei Konkurrenzprodukten.“
ReAct würde vielleicht abschweifen. Ein Planner legt sich zuerst fest:
> Plan:
> 1. Die drei wichtigsten Wettbewerber identifizieren.
> 2. Preise für jeden holen.
> 3. Top-Features für jeden holen.
> 4. Aktuelle Kundenbeschwerden für jeden finden.
> 5. Einen einseitigen Vergleich schreiben.
Dann arbeitet ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → die Liste ab. Der Vorteil: Bei langen, mehrstufigen Aufgaben verliert der Agent nicht auf halbem Weg den Faden. Sie kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnen den Plan außerdem einem Menschen zur Freigabe zeigen, bevor irgendetwas läuft, was zählt, wenn Schritte Geld kosten oder E-Mails verschicken.
Ein häufiges Upgrade ist Plan-and-Execute mit Re-Planning: einige Schritte ausführen, prüfen, ob die Realität dem Plan entspricht, und die restlichen Schritte andernfalls neu schreiben. Echte Arbeit ist unordentlich, und starre Pläne brechen.
Daumenregel: Kurze, explorative Aufgaben sprechen für ReAct. Lange Aufgaben mit vielen bekannten Teilschritten sprechen für einen Planner.
Pattern 4: Reflection (den eigenen Entwurf kritisieren)
Modelle liefern bessere Arbeit, wenn sie sie überprüfen. Ein Reflection Loop lässt den Agent einen Entwurf erzeugen, dann die Rolle wechseln und diesen Entwurf kritisieren, dann revidieren.
Konkrete Aufgabe: „Schreibe eine SQLSQLSales Qualified Lead: a prospect the sales team has validated as ready for direct outreach and a proposal, having passed clear qualification criteria.Vollständige Definition ansehen →-Query, die Kunden findet, die im letzten Quartal gechurnt sind.“
1. Draft: Der Agent schreibt die Query.
2. Reflect: „Behandelt das Kunden ohne Bestellungen? Nutzt ‚letztes Quartal‘ die richtigen Daten? Gibt es Joins, die Zeilen duplizieren kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnten?“
3. Revise: ErErThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → behebt die gerade gefundenen Probleme.
Sie kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnen den Entwurf sogar ausführen und die *tatsächliche* Fehlermeldung zurückgeben, was Reflection in einen engen selbstkorrigierenden Loop verwandelt. Dieses Pattern glänzt bei Code, strukturiertem Schreiben und allem mit einem klaren Begriff von „korrekt“.
Ein minimaler Reflection Loop:
draft = model.generate("Write a SQL query for churned customers last quarter.")
for _ in range(2): # Iterationen begrenzen
critique = model.generate(f"Find bugs or gaps in this query:\n{draft}")
if "no issues" in critique.lower():
break
draft = model.generate(f"Fix these issues:\n{critique}\n\nQuery:\n{draft}")Eine Warnung: Begrenzen Sie den Loop immer. Ohne Limit kann Reflection sich endlos im Kreis „verbessern“ und Ihre Rechnung hochtreiben.
Wissenscheck
1. Was unterscheidet laut Lektion einen „Agent“ grundlegend von einem einfachen Sprachmodell?
2. Warum betont die Lektion, dass bei derselben Rückerstattungsaufgabe „nur einige“ der fünf Architekturen zuverlässig funktionieren?
3. Welche Bedingung beendet den Loop im Pseudocode des Tool-Use-Loops?
4. Wählen Sie ALLE korrekten Antworten dazu, wie der Tool-Use-Loop laut Lektion funktioniert.
Wählen Sie alle richtigen Antworten aus.
5. Wählen Sie ALLE korrekten Antworten dazu, warum der Tool-Use-Loop als Grundlage der anderen Patterns gilt.
Wählen Sie alle richtigen Antworten aus.
Pattern 5: Routing (an Spezialisten verteilen)
Ein Router schaut sich eine eingehende Anfrage an und schickt sie an den richtigen Handler: ein bestimmtes Modell, ein bestimmtes Tool-Set oder einen bestimmten Sub-Agent. Denken Sie an eine smarte Empfangskraft.
Konkrete Aufgabe: ein Support-Postfach, das drei Arten von Nachrichten erhält.
- Abrechnungsfragen → an den Billing-Agent (hat Rückerstattungs-Tools).
- Technische Bugs → an den Troubleshooting-Agent (kann Logs lesen).
- „Wie mache ich …?“-Fragen → an ein günstiges, schnelles Modell mit den Docs.
Routing leistet zwei Dinge gut. Es hält jeden Spezialisten einfach, denn ein Billing-Agent, der nur Abrechnung bearbeitet, ist leichter richtig hinzubekommen als ein Agent, der alles versucht. Und es spart Geld: einfache Fragen an ein kleines, günstiges Modell, das teure Modell für die schweren reservieren.
Ein Router ist oft nur ein Modellaufruf, der eine Kategorie zurückgibt:
route = model.generate(
f"Classify this message as one of: billing, technical, howto.\n\n{message}"
)
handler = {"billing": billing_agent,
"technical": tech_agent,
"howto": docs_agent}[route.strip()]
handler.run(message)So werden 2026 die meisten ernsthaften Production-Agents gebaut: nicht ein Riesenhirn, sondern ein Dispatcher vor mehreren fokussierten Spezialisten.
Die Patterns kombinieren
Das sind keine rivalisierenden Lager. Echte Systeme stapeln sie.
Ein Production-Support-Agent kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnte: eine Nachricht per Routing an den Billing-Spezialisten geben, der einen ReAct-Loop über seine Rückerstattungs-Tools fährt, und wenn ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → eine Kunden-E-Mail entwirft, vor dem Senden einen Reflection-Durchgang laufen lassen. Ein Research-Agent kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnte den Report planen und dann für jeden Abschnitt einen Tool Loop nutzen.
Starten Sie mit dem einfachsten Pattern, das funktionieren kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnte (meist der einfache Tool Loop), und fügen Sie Komplexität erst hinzu, wenn Sie ein konkretes Versagen sehen. Einen Agent über-zu-engineeren ist ein genauso reales Risiko wie ihn unter-zu-engineeren.
Jeder große Anbieter liefert ein SDK, das Ihnen diese Patterns als Bausteine gibt: das OpenAI Agents SDK, das Claude Agent SDK und Googles Agent Development Kit (ADK). Die Patterns hier lassen sich auf alle übertragen; die Provider-Deep-Dive-Blöcke behandeln die tool-spezifische Syntax. Für eine breite, herstellerneutrale Landkarte des Felds ist Anthropics Building Effective Agents eine gute, kostenlose Lektüre.
Key Takeaways
- Starten Sie mit dem Tool-Use-Loop. Modell mit Tools ausstatten, Tools ausführen, Ergebnisse zurückgeben, wiederholen. Die meisten Aufgaben brauchen nicht mehr.
- Passen Sie das Pattern zur Aufgabe. ReAct für explorative, voneinander abhängige Abfragen; einen Planner für lange mehrstufige Jobs; Reflection für alles mit einer „korrekten“ Antwort; Routing, wenn Anfragen in klare Kategorien fallen.
- Begrenzen Sie Ihre Loops immer. Reflection und ReAct kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnen endlos kreisen. Setzen Sie eine maximale Zahl von Iterationen und ein Budget.
- Routen Sie, um Geld zu sparen und einfach zu bleiben. Einfache Anfragen an ein günstiges Modell, schwere an einen Experten. Kleine, fokussierte Spezialisten schlagen einen riesigen Alleskönner-Agent.
- Stapeln Sie Patterns, aber verdienen Sie sich die Komplexität. Fügen Sie einen Planner oder Reflection-Schritt erst hinzu, wenn Sie ein echtes Versagen sehen, nicht vorher.