Wann man dazu greift
- Ergebnisqualität Vorrang vor minimaler Latenz hat.
- Fehler vom Modell durch gezielte Selbstkritik erkannt werden können.
/pattern/reflexion/
Der Agent bewertet seine eigenen Zwischenergebnisse kritisch und nutzt dieses Feedback, um in iterativen Schleifen die nächsten Schritte oder die Ausgabe zu verbessern.
Wann man dazu greift
Wann es nach hinten losgeht
Die Abwägung
Führt zu höherer Ergebnisqualität, verursacht aber zusätzliche Token-Kosten und kann zu falschem Vertrauen führen.
Handeln, bewerten, reflektieren, erneut versuchen. Eine Selbstkritik-Schleife, begrenzt durch ein Retry-Budget.
from typing import TypedDict
from langgraph.graph import StateGraph, END
class State(TypedDict):
prompt: str
attempt: str | None
evaluation: str | None
reflection: str | None
retries: int
max_retries: int
def attempt(state):
return {"attempt": actor_llm(state["prompt"])}
def evaluate(state):
return {"evaluation": evaluator_llm(state["attempt"])}
def reflect(state):
return {"reflection": reflector_llm(state["evaluation"]), "retries": state["retries"] + 1}
def should_continue(state):
if "PASS" in state["evaluation"]:
return "end"
if state["retries"] >= state["max_retries"]:
return "end"
return "retry"
g = StateGraph(State)
g.add_node("attempt", attempt)
g.add_node("evaluate", evaluate)
g.add_node("reflect", reflect)
g.add_edge("attempt", "evaluate")
g.add_conditional_edges("evaluate", should_continue, {
"retry": "reflect",
"end": END,
})
g.add_edge("reflect", "attempt")
g.set_entry_point("attempt")
# Initial state includes budget
reflexion = g.compile()Die Schleife versucht es endlos bei einer Aufgabe, die grundsätzlich unmöglich ist (z. B. Abfrage einer nicht existierenden Tabelle).
Lösung · Hartes Limit auf Wiederholungen (max_retries). Budget-Erschöpfung als erwartetes Ergebnis behandeln, nicht als Ausnahme.
Die Reflexion ist zu vage, um den nächsten Versuch des Actors zu verändern. Die Schleife konvergiert zur gleichen falschen Antwort.
Lösung · Den Reflektor dazu zwingen, konkrete Fehler zu benennen und eine spezifische Änderung vorzuschlagen. Falls nicht möglich, zur menschlichen Eskalation weiterleiten.
Patterns, Frameworks und Seiten durchsuchen.