Kern des Patterns
ReAct (Reasoning + Acting) ist ein Pattern, mit dem ein Agent Schritt für Schritt arbeitet und nach jeder Aktion auf Basis des erhaltenen Ergebnisses entscheidet.
Wann sinnvoll: wenn sich der gesamte Weg nicht zuverlässig im Voraus planen lässt und der nächste Schritt vom Ergebnis des vorherigen abhängt.
Jeder Schritt besteht aus drei Aktionen:
Think— entscheidet, was als Nächstes zu tun istAct— führt eine Aktion aus oder ruft ein Tool aufObserve— analysiert das Ergebnis
Danach entscheidet der Agent erneut, welchen nächsten Schritt er macht.

Problem
Stell dir vor: Du bist zum ersten Mal in einer neuen Stadt und suchst eine geöffnete Apotheke mit dem benötigten Medikament.
Du weißt nicht im Voraus:
- welche Apotheken in der Nähe sind
- ob sie jetzt geöffnet sind
- ob sie das benötigte Präparat haben
Es ist unmöglich, sofort einen vollständigen Plan zu erstellen, weil jeder Schritt vom neuen Ergebnis abhängt.
Darum handelst du im Zyklus:
- Nächste Apotheke gefunden
- Geprüft, ob sie geöffnet ist
- Wenn nicht, zur nächsten gewechselt
- Wiederholt, bis du die richtige gefunden hast
Also ständig: Information -> Entscheidung -> Aktion -> neue Information.
Und wenn du dich zwingst, die Route direkt festzulegen ("#1 -> #2 -> #3"), ist das ein Plan auf Verdacht.
Genau darin liegt das Problem: Bei vielen Aufgaben lassen sich nicht alle Schritte im Voraus korrekt planen.
Lösung
ReAct löst das über Entscheidungen während der Ausführung, nicht über einen starren Plan im Voraus.
Analogie: Das ist wie Navigation unterwegs. Du planst das nächste Manöver nach jeder neuen Abzweigung oder Sperrung. Die Route wird unterwegs präzisiert und nicht ein für alle Mal fixiert.
Schlüsselprinzip: Ein vollständiger Plan ist nicht sofort möglich, deshalb muss sich der Agent nach jedem Ergebnis anpassen.
Statt erst kompletter Plan -> dann Ausführung arbeitet der Agent so:
- Überlegung (
Think): trifft eine Entscheidung - Aktion (
Act): führt eine Aktion aus - Beobachtung (
Observe): analysiert das Ergebnis
Danach bestimmt er den nächsten Schritt auf Basis des neuen Kontexts.
Wenn eine Apotheke geschlossen ist, "drückt" der Agent den alten Plan nicht durch, sondern passt die Aktionen sofort an.
Jedes neue Ergebnis:
- wird dem Kontext hinzugefügt
- beeinflusst die nächste Entscheidung
- ändert die weitere Route
ReAct führt kein vorab festgelegtes Skript aus, sondern passt sich bei jedem Schritt an.
Das Modell kann "wollen", Aktionen endlos zu wiederholen. Deshalb definiert die Ausführungsrichtlinie (execution-policy) die Bedingungen zum Stoppen des Zyklus.
Wie es funktioniert
Wichtig: Der Agent führt Aktionen nicht selbst aus
Im Schritt Überlegung (Think) entscheidet der Agent nur, was als Nächstes getan werden soll.
Aber er führt die Aktion nicht selbstständig aus.
Er erzeugt die Entscheidung als Text, zum Beispiel:
„Tool
search_docsmit Parameter X aufrufen“
Danach:
- liest das System um den Agenten diese Entscheidung
- führt die Aktion aus oder ruft das Tool auf
- gibt das Ergebnis zurück
Dieses Ergebnis wird zur neuen Beobachtung (Observe).
Beschreibung des vollständigen Flows: Think → Act → Observe
Überlegung (Think)
Der Agent entscheidet, was als Nächstes getan werden soll.
Aktion (Act)
Das System führt eine Aktion aus oder ruft ein Tool auf.
Beobachtung (Observe)
Die Umgebung gibt ein Ergebnis zurück, das zum neuen Kontext wird.
Der Agent trifft nur Entscheidungen.
Alle Aktionen werden von einer externen Ausführungsschicht (execution layer) ausgeführt.
Wenn diese Schicht keine Grenzen hat, kann der Agent:
- ein Tool dutzende Male aufrufen
- dieselben Aktionen wiederholen
- das Budget für API-Aufrufe aufbrauchen
Der Zyklus wiederholt sich, bis die Aufgabe erledigt ist oder Stoppbedingungen erreicht sind.
Im Code sieht das so aus
max_steps = 8
for step_no in range(1, max_steps + 1):
thought = think(context)
action = act(thought)
result = observe(action)
context.append(result) # Observe -> neuer context für den nächsten Think.
if is_done(result):
done = True
break
if not done:
return stop_with_reason("max_steps_reached")
So sieht das während der Ausführung aus
Goal: nächste geöffnete Apotheke finden
Think: eine Apotheke in der Nähe finden
Act: das System ruft find_nearby_pharmacies(user_location) auf
Observe: Liste von Apotheken erhalten, nach Entfernung sortiert
Zwischen Iterationen: Die Apothekenliste wird in den context aufgenommen
Think: die erste (nächste) Apotheke prüfen
Act: das System ruft check_pharmacy("Apotheke #1") auf
Observe: Apotheke ist geschlossen
Zwischen Iterationen: Der Status "geschlossen" wird in den context aufgenommen
Think: die nächste Apotheke prüfen
Act: das System ruft check_pharmacy("Apotheke #2") auf
Observe: Apotheke ist geöffnet
Think: das ist die nächste geöffnete Apotheke
Act: das System gibt die Adresse zurück
Observe: der Nutzer hat das Ergebnis erhalten
Stop: Bedingung erfüllt, der Zyklus endet
Der Agent entscheidet, was zu tun ist, führt eine Aktion aus und bekommt ein Ergebnis.
Jedes Ergebnis wird dem Kontext hinzugefügt und wird zur Basis für den nächsten Schritt.
Vollständiges ReAct-Agent-Beispiel
Wann es passt - und wann nicht
Passt
| Situation | Warum ReAct passt | |
|---|---|---|
| ✅ | Der Weg zum Ergebnis ist nicht offensichtlich | ReAct präzisiert den Plan bei jedem Schritt anhand neuer Beobachtungen. |
| ✅ | Der nächste Schritt hängt von der Tool-Antwort ab | Die Logik Think -> Act -> Observe ist genau für diesen Zyklus gemacht. |
| ✅ | Du musst mit APIs, Datenbanken, Suche oder anderen Tools arbeiten | Der Agent ruft Tools während der Ausführung auf und passt sich an. |
Passt nicht
| Situation | Warum ReAct nicht passt | |
|---|---|---|
| ❌ | Die Aufgabe hat ein festes, vorhersehbares Szenario | Ein vordefinierter Pipeline-Ablauf ist einfacher und günstiger. |
| ❌ | Kritische Antwortgeschwindigkeit ist erforderlich (minimale Latenz) | Jeder Zyklus kostet zusätzliche Zeit durch weitere Überlegungsschritte und Aufrufe. |
| ❌ | Jeder Tool-Aufruf ist teuer oder streng limitiert | Ohne harte Grenzen kann ReAct viele Iterationen ausführen. |
Wenn du ReAct wählst, setze Grenzen sofort: max_steps, Timeouts, Stoppbedingungen und Budget für Tool-Aufrufe.
Wann ReAct verwenden (vs andere Patterns)
Verwende ReAct, wenn der Agent Schritt für Schritt auf Basis vorheriger Ergebnisse entscheiden muss.
Kurzer Test:
- wenn du brauchst "Ergebnis gesehen -> nächsten Schritt entschieden" -> ReAct
- wenn du brauchst "zuerst ein großes Ziel in Teilaufgaben zerlegen" -> Task Decomposition Agent
Vergleich mit anderen Patterns und Beispiele
Schnellübersicht:
| Wenn die Aufgabe so aussieht... | Verwende |
|---|---|
| Nach jedem Schritt muss entschieden werden, was als Nächstes passiert | ReAct-Agent |
| Zuerst muss ein großes Ziel in kleinere ausführbare Aufgaben zerlegt werden | Task Decomposition Agent |
| Code soll ausgeführt, Ergebnisse geprüft und sicher iteriert werden | Code Execution Agent |
| Daten sollen analysiert und daraus Schlussfolgerungen abgeleitet werden | Data Analysis Agent |
| Recherche aus mehreren Quellen mit strukturierten Belegen ist nötig | Research Agent |
Beispiele:
ReAct: "Finde die Ursache eines API-Ausfalls: Logs prüfen -> Fehler anschauen -> den nächsten Check anhand des Ergebnisses ausführen".
Task Decomposition: "Plane den Launch eines neuen Tarifs: zerlege die Aufgabe in Teilaufgaben für Content, Technik, QA und Support".
Code Execution: "Berechne 12-Monats-Retention in Python und prüfe die Formeln auf realen Daten".
Data Analysis: "Analysiere eine Sales-CSV: finde Trends, Anomalien und gib kurze Schlussfolgerungen".
Research: "Sammle Daten zu 5 Wettbewerbern aus mehreren Quellen und erstelle eine Vergleichszusammenfassung".
Wie man es mit anderen Patterns kombiniert
ReAct wird häufig zusammen mit anderen Patterns genutzt.
- ReAct + RAG — wenn Fakten fehlen, holt der Agent sie zuerst aus der Wissensbasis und geht erst dann weiter.
- ReAct + Reflection — nach jedem Schritt prüft der Agent sich selbst, um Fehler schnell zu erkennen und zu korrigieren.
- ReAct + Supervisor — riskante Aktionen führt der Agent nicht selbst aus, sondern gibt sie zur Freigabe an einen Menschen.
ReAct ergänzt den Entscheidungszyklus. Andere Patterns ergänzen Kontrolle, Gedächtnis oder Koordination.
Kurz gesagt
ReAct-Agent:
- trifft Entscheidungen schrittweise
- führt eine Aktion aus
- analysiert das Ergebnis
Und wiederholt den Zyklus, bis die Aufgabe erledigt ist.
Vorteile und Nachteile
Vorteile
passt sich schnell an neue Daten an
Fehler sind bereits im nächsten Schritt sichtbar
funktioniert gut, wenn sich Bedingungen während der Ausführung ändern
jeder Schritt ist leicht zu erklären
Nachteile
kann durch zusätzliche Schritte langsamer sein
kann sich ohne Limits in einer Schleife festfahren
Stoppbedingungen müssen klar definiert sein
FAQ
Q: Plant ReAct alle Schritte im Voraus?
A: Nein. Es trifft nach jeder Aktion eine neue Entscheidung.
Q: Kann ReAct in einer Schleife stecken bleiben?
A: Ja, wenn keine Stoppbedingungen definiert sind.
Q: Funktioniert ReAct ohne Tools?
A: Ja. Der Agent kann den Zyklus Think -> Act -> Observe auch ohne Tool-Aufrufe nutzen, zum Beispiel um den Ansatz für eine Aufgabe zu ändern. Aber ohne Zugriff auf externe Aktionen kann er keine neuen Daten erhalten und arbeitet nur mit dem, was bereits im Kontext vorhanden ist.
Was als Nächstes
ReAct erlaubt einem Agenten, Schritt für Schritt zu handeln.
Aber was tun, wenn die Aufgabe komplex ist und aus mehreren Teilaufgaben besteht?