\n\n\n\n Ich baue KI-Agenten: Mein Weg über das Prompt-Engineering hinaus - AgntAI Ich baue KI-Agenten: Mein Weg über das Prompt-Engineering hinaus - AgntAI \n

Ich baue KI-Agenten: Mein Weg über das Prompt-Engineering hinaus

📖 14 min read2,732 wordsUpdated Mar 30, 2026

Hallo zusammen, hier ist Alex von agntai.net. Wir haben den 25. März 2026, und ich habe kürzlich über etwas Grundlegendes nachgedacht: wie wir diese KI-Agenten *bauen* können. Nicht nur die brillanten Teile von LLM, sondern die gesamte komplexe Struktur, die es ihnen ermöglicht, im realen Leben nützliche Dinge zu tun. Glücklicherweise haben wir die Phase hinter uns gelassen, in der „die Eingabeeingehung alles ist, was man braucht“, und jetzt geht es darum, zuverlässige und erweiterbare Systeme zusammenzustellen.

Heute möchte ich über die Architektur der Agenten sprechen, insbesondere darüber, wie wir von einer einfachen und linearen Ausführung von Aufgaben zu etwas Widerstandsfähigerem übergehen können, das in der Lage ist, unerwartete Situationen zu bewältigen. Mein Ziel wird eine modulare und reflektierende Architektur sein – im Wesentlichen Agenten zu entwickeln, die ihren eigenen Prozess beobachten, verstehen, was schiefgelaufen ist (oder gut gelaufen ist), und sich anpassen können. Das ist nicht nur Theorie; ich habe mit eigenen Augen gesehen, wie ein bisschen Selbstbewusstsein viele Kopfschmerzen vermeiden kann.

Das Problem der linearen Agenten: Mein Projektdebakel am Wochenende

Beginnen wir mit einer Geschichte. Vor einigen Wochen versuchte ich, eine relativ einfache Datenanalyseaufgabe für ein Nebenprojekt zu automatisieren. Ich wollte, dass ein Agent Finanzdaten abruft, eine spezifische Reihe von statistischen Tests durchführt und die Ergebnisse in einem Markdown-Bericht zusammenfasst. Mein erster Gedanke? Eine einfache Kette:

  • Daten von der API abrufen.
  • Daten bereinigen.
  • Statistische Tests durchführen (unter Verwendung einer vordefinierten Bibliothek).
  • Bericht generieren.

Ich habe das mit LangChain zusammengestellt und für jeden Schritt einen GPT-4-Aufruf verwendet, und ich fühlte mich ziemlich zufrieden. Dann klickte ich auf „ausführen.“

Das erste Problem? Die API-Durchsatzgrenze. Mein Agent versuchte einfach weiterhin, diese zu erreichen, schlug fehl und ging dann mit einem leeren Datensatz zum nächsten Schritt über. Keine Fehlerbehandlung, keine Logik für neue Versuche, nur ein höfliches „Ich konnte die Daten nicht abrufen, aber hier ist ein schöner Bericht über nichts.“

Das zweite Problem? Der Schritt zur Datenbereinigung. Manchmal lieferte die API leicht unterschiedliche Spaltennamen zurück. Meine Funktionen für statistische Tests erwarteten `close_price`, aber sie bekamen `closing_price`. Mein Agent erzeugte einfach einen Python-Traceback und stürzte ab. Wiederum keine elegante Wiederherstellung, kein Versuch, zu verstehen, warum die Funktion fehlgeschlagen war.

Diese Erfahrung, obwohl frustrierend, hat wirklich einen Punkt hervorgehoben: Einfache und lineare Agentendesigns, bei denen jeder Schritt blind dem vorherigen folgt, sind fragil. Sie setzen eine perfekte Welt voraus, in der APIs immer funktionieren, die Daten immer makellos sind und die Funktionen nie ausfallen. Die reale Welt sieht anders aus. Wir brauchen Agenten, die mehr können, als einfach eine Sequenz auszuführen; sie müssen beobachten, reflektieren und sich anpassen.

Einführung in die Architektur reflektierender Agenten: Der Ansatz des „Inneren Monologs“

Die zentrale Idee hinter einer Architektur für reflektierende Agenten besteht darin, dem Agenten einen Mechanismus zu geben, um seine eigenen Aktionen und Ergebnisse zu beobachten und diese Beobachtungen dann zu nutzen, um seine zukünftigen Entscheidungen zu beleuchten. Stellen Sie sich das wie einen „inneren Monolog“ vor, in dem sich der Agent fragt: „Was ist passiert? War das gut? Was sollte ich als Nächstes tun, basierend auf dem, was ich gelernt habe?“

Es geht nicht nur darum, „try-except“-Blöcke hinzuzufügen. Es geht darum, den Entscheidungsprozess des Agenten dynamisch zu gestalten und durch seine eigene Ausführungsgeschichte zu informieren. So breche ich es normalerweise auf:

Die Schlüsselsegmenten eines reflektierenden Agenten

  1. Wahrnehmungsmodul: So „sieht“ der Agent die Welt und seine eigenen Aktionen. Es sammelt Beobachtungen aus seiner Umgebung (API-Antworten, Änderungen im Dateisystem, Benutzereingaben) und, was entscheidend ist, Ausgaben und Fehlermeldungen seiner eigenen Werkzeuge.
  2. Handlungsmodul: Hier führt der Agent Aufgaben unter Verwendung seiner verfügbaren Werkzeuge (Funktionen, APIs, andere Modelle) aus. Das ist es, woran die meisten Menschen denken, wenn sie Agenten bauen.
  3. Gedächtnismodul: Speichert frühere Beobachtungen, Aktionen und Überlegungen. Es ist nicht nur ein kurzfristiger Kontext; für die Reflexion benötigen wir oft ein Langzeitgedächtnis über erfolgreiche und gescheiterte Strategien.
  4. Reflexionsmodul: Das ist das Gehirn des reflexiven Prozesses. Nach einer Aktion nimmt dieses Modul die Beobachtungen und Erinnerungen und bewertet das Ergebnis kritisch. Es stellt Fragen wie:
    • War die letzte Aktion erfolgreich?
    • Wenn nicht, warum ist sie fehlgeschlagen?
    • Was hätte man anders machen können?
    • Was sollte die *nächste* Aktion sein, basierend auf diesem neuen Verständnis?
    • Sollte ich meinen Plan ändern?
  5. Planungs-/Zielmanagement-Modul: Obwohl es oft mit der Reflexion verknüpft ist, ist dieses Modul dafür verantwortlich, hochrangige Ziele in umsetzbare Schritte zu zerlegen und den Plan basierend auf den Überlegungen zu aktualisieren.

Der Schlüssel hier ist die Rückkopplungsschleife: Aktion -> Wahrnehmung -> Reflexion -> (möglicherweise) Planaktualisierung -> Neue Aktion. Es ist keine Einbahnstraße; es ist ein kontinuierlicher Zyklus.

Ein praktisches Beispiel: Selbstreparierender Datenpipeline-Agent

Kommen wir zurück zu meinem Projekt mit den Finanzdaten. Wie würde ein reflektierender Agent diese Probleme angehen? Anstatt einer blinden Kette würden wir die Reflexion an kritischen Punkten einführen.

Schritt 1: Werkzeuge definieren

Unser Agent benötigt Werkzeuge, um mit der Welt zu interagieren. Das sind einfach in einer Weise gekapselte Python-Funktionen, die das LLM aufrufen kann.


def get_financial_data(symbol: str, start_date: str, end_date: str) -> dict:
 """
 Ruft historische Finanzdaten für ein gegebenes Aktien-Symbol ab.
 Wirft eine Ausnahme für API-Fehler oder Durchsatzgrenzen.
 """
 # Simuliert einen API-Aufruf mit möglichen Fehlern
 import random
 if random.random() < 0.1: # Simuliert einen Fehler von 10% bei der API
 raise ConnectionError("Der API-Aufruf ist fehlgeschlagen: Durchsatzgrenze überschritten oder Dienst nicht verfügbar.")
 if symbol == "FAILCO":
 raise ValueError("Ungültiges Symbol angegeben.")
 return {"symbol": symbol, "data": [{"date": "2023-01-01", "close_price": 100.0}]}

def clean_data(raw_data: dict) -> dict:
 """
 Bereinigt und standardisiert die Finanzdaten.
 Versucht, die gängigen Abweichungen in den Spaltennamen zu normalisieren.
 """
 data = raw_data.get("data", [])
 if not data:
 raise ValueError("Keine Daten zum Bereinigen.")
 
 # Simuliert Variationen der Spaltennamen und versucht, sie zu korrigieren
 if "closing_price" in data[0]:
 for item in data:
 item["close_price"] = item.pop("closing_price")
 
 # Grundlegende Validierung
 for item in data:
 if "close_price" not in item:
 raise ValueError(f"'close_price' im Element fehlt: {item}")
 
 return {"symbol": raw_data["symbol"], "cleaned_data": data}

def run_statistical_tests(cleaned_data: dict) -> dict:
 """
 Führt vordefinierte statistische Tests auf bereinigten Finanzdaten durch.
 """
 if not cleaned_data.get("cleaned_data"):
 raise ValueError("Keine bereinigten Daten zur Analyse.")
 
 # Simuliert eine statistische Analyse
 avg_price = sum(item["close_price"] for item in cleaned_data["cleaned_data"]) / len(cleaned_data["cleaned_data"])
 return {"analysis_results": f"Durchschnittlicher Schlusskurs: {avg_price:.2f}"}

def generate_report(analysis_results: dict) -> str:
 """
 Generiert einen Bericht im Markdown-Format aus den Analyseergebnissen.
 """
 return f"# Finanzanalysebericht\n\n{analysis_results.get('analysis_results', 'Keine Analyse durchgeführt.')}"
 
tools = [get_financial_data, clean_data, run_statistical_tests, generate_report]

Diese Werkzeuge sind ziemlich standardmäßig. Die Magie liegt in der Art und Weise, wie der Agent sie nutzt und über die Ergebnisse nachdenkt.

Schritt 2: Die Schleife des reflektierenden Agenten

Hier führen wir die Schritte der Beobachtung und Reflexion ein. Ich vereinfache hier die LLM-Aufrufe der Kürze halber, aber stellen Sie sich einen System-Prompt vor, der das LLM anleitet, als „Reflexionsmodul“ zu agieren.


from typing import List, Dict, Any
import time

class ReflectiveAgent:
 def __init__(self, llm, tools: List[Any]):
 self.llm = llm # Dies wäre Ihr LLM-Client (zum Beispiel, OpenAI, Anthropic)
 self.tools = {tool.__name__: tool for tool in tools}
 self.memory: List[Dict[str, Any]] = [] # Speichert die Historie von Aktionen, Beobachtungen, Überlegungen
 self.current_plan: List[str] = ["get_financial_data", "clean_data", "run_statistical_tests", "generate_report"]
 self.current_step_index = 0
 self.max_retries = 3

 def _call_llm(self, prompt: str) -> str:
 # In einem echten System würde dies Ihr LLM aufrufen
 # Für dieses Beispiel simulieren wir eine einfache Antwort von LLM basierend auf Schlüsselwörtern
 print(f"LLM Prompt: {prompt}\n---")
 if "Error" in prompt or "failed" in prompt:
 if "API call failed" in prompt:
 return "Überlegung: Der Aufruf des vorherigen Werkzeugs ist aufgrund eines API-Fehlers fehlgeschlagen. Ich sollte das Werkzeug 'get_financial_data' erneut versuchen. Das ist ein temporäres Problem. Ich werde eine Weile warten, bevor ich es erneut versuche."
 elif "Missing 'close_price'" in prompt or "No data to clean" in prompt:
 return "Überlegung: Das Werkzeug 'clean_data' ist aufgrund eines unerwarteten Datenformats oder fehlender Daten fehlgeschlagen. Ich muss die Rohdaten neu bewerten oder meine Reinigungsstrategie anpassen. Vielleicht hat das Werkzeug 'get_financial_data' keine guten Daten geliefert. Ich sollte versuchen, 'get_financial_data' erneut aufzurufen, um zu sehen, ob sich die Datenstruktur geändert hat, oder ich sollte vielleicht Klarstellungen vom Benutzer anfordern, wenn ich ein Interaktionswerkzeug hätte."
 elif "Invalid symbol" in prompt:
 return "Überlegung: Das Werkzeug 'get_financial_data' ist aufgrund eines ungültigen Symbols fehlgeschlagen. Dies ist ein grundlegender Eingabefehler. Ich sollte den Benutzer informieren oder anhalten."
 else:
 return "Überlegung: Ein unerwarteter Fehler ist aufgetreten. Ich muss die letzte Aktion überprüfen und versuchen, die zugrunde liegende Ursache zu verstehen. Mein aktueller Plan könnte fehlerhaft sein."
 elif "succeeded" in prompt and "next step" in prompt:
 return "Überlegung: Die letzte Aktion war erfolgreich. Ich sollte zum nächsten Schritt meines Plans übergehen."
 else:
 return "Überlegung: Ich denke darüber nach, was zu tun ist. Wie ist der aktuelle Status und welche sollte meine nächste Aktion basierend auf dem Plan sein?"


 def run(self, symbol: str):
 context = {"symbol": symbol, "raw_data": None, "cleaned_data": None, "analysis_results": None}

 while self.current_step_index < len(self.current_plan):
 current_tool_name = self.current_plan[self.current_step_index]
 tool_func = self.tools.get(current_tool_name)

 if not tool_func:
 print(f"Fehler: Werkzeug '{current_tool_name}' nicht gefunden. Beende den Vorgang.")
 break

 print(f"\n--- Versuch, auszuführen: {current_tool_name} ---")
 
 observation = {"status": "started", "tool": current_tool_name}
 retries = 0

 while retries <= self.max_retries:
 try:
 if current_tool_name == "get_financial_data":
 result = tool_func(symbol=symbol, start_date="2023-01-01", end_date="2023-12-31")
 context["raw_data"] = result
 elif current_tool_name == "clean_data":
 result = tool_func(context["raw_data"])
 context["cleaned_data"] = result
 elif current_tool_name == "run_statistical_tests":
 result = tool_func(context["cleaned_data"])
 context["analysis_results"] = result
 elif current_tool_name == "generate_report":
 result = tool_func(context["analysis_results"])
 print(result) # Endausgabe des Berichts
 context["final_report"] = result
 
 observation["status"] = "succeeded"
 observation["output"] = result
 break # Aktion erfolgreich, Schleife zur Wiederholung verlassen
 except Exception as e:
 observation["status"] = "failed"
 observation["error"] = str(e)
 print(f"Das Werkzeug '{current_tool_name}' ist fehlgeschlagen: {e}")
 retries += 1
 if retries <= self.max_retries:
 print(f"Erneut versuchen '{current_tool_name}' (Versuch {retries}/{self.max_retries})...")
 time.sleep(1) # Verzögerung simulieren
 else:
 print(f"Maximale Anzahl an Wiederholungen für '{current_tool_name}' erreicht.")
 break # Maximale Anzahl an Wiederholungen erreicht, Schleife zur Wiederholung verlassen

 self.memory.append({"action": observation})

 # --- Reflexionsschritt ---
 reflection_prompt = f"""
 Aktueller Kontext : {context}
 Letzte Aktion : {observation}
 Ziel : Abschluss der Analyse der Finanzdaten und des Berichts.

 Überlegen Sie über das Ergebnis der letzten Aktion nach.
 - War sie erfolgreich?
 - Wenn nicht, was war der Fehler?
 - Was sollte der nächste Schritt sein? Soll ich es erneut versuchen, die Strategie ändern oder anhalten?
 - Wenn ein Fehler aufgetreten ist, der auf eine falsche Eingabe hinweist, was sollte ich tun?
 """
 reflection = self._call_llm(reflection_prompt)
 print(f"Überlegung: {reflection}")
 self.memory.append({"reflection": reflection})

 # Basierend auf der Überlegung die nächste Aktion entscheiden
 if observation["status"] == "failed":
 if "API call failed" in observation["error"] and retries <= self.max_retries:
 # Die Wiederholungslogik wird bereits von der inneren while-Schleife verwaltet,
 # aber die Überlegung bestätigt die Strategie. Wenn wir die
 # Anzahl der Wiederholungen oder die Strategie basierend auf dem LLM anpassen wollten, würden wir es hier tun.
 print("Die Überlegung schlägt vor, es erneut zu versuchen, was bereits versucht wurde.")
 # Wenn alle Versuche fehlgeschlagen sind, benötigen wir eine neue Strategie oder müssen anhalten.
 if retries > self.max_retries:
 print("Die Überlegung zeigt, dass alle Versuche aufgrund eines temporären Fehlers fehlgeschlagen sind. Anhalten oder eskalieren.")
 break
 # Wenn die Wiederholungen noch andauern, wurde der 'break' der inneren Schleife nicht erreicht,
 # also sollten wir bei demselben Schritt für die nächste Iteration der äußeren Schleife bleiben,
 # was effektiv die Wiederholung fortsetzt, oder, wenn wir wirklich möchten, dass die Überlegung führt,
 # sollte der LLM eine neue Aktion vorschlagen. Um es zu vereinfachen,
 # wenn die maximale Anzahl der Versuche erreicht und fehlgeschlagen ist, stoppen wir.
 if retries > self.max_retries:
 print("Alle Versuche für den temporären Fehler sind fehlgeschlagen. Anhalten.")
 break

 elif "Invalid symbol" in observation["error"]:
 print("Die Überlegung weist auf einen kritischen Eingabefehler hin. Es kann nicht fortgefahren werden. Den Benutzer informieren.")
 # In einem echten Agenten würde dies ein Interaktionswerkzeug mit dem Benutzer auslösen.
 break
 elif "No data to clean" in observation["error"] or "Missing 'close_price'" in observation["error"]:
 print("Die Überlegung weist auf ein Datenqualitätsproblem hin. Neubewertung des vorherigen Schrittes oder Anhalten.")
 # Hier könnte eine weiterführende Überlegung vorschlagen, zu 'get_financial_data' zurückzukehren
 # oder sogar die Parameter des Werkzeugs 'clean_data' zu ändern.
 # Für den Moment werden wir anhalten, wenn es sich um ein anhaltendes Datenproblem nach den Wiederholungen handelt.
 if retries > self.max_retries:
 print("Anhaltendes Problem beim Bereinigen der Daten. Anhalten.")
 break
 # Wenn der Fehler den Mangel an Daten betraf, impliziert dies, dass get_financial_data stillschweigend fehlgeschlagen ist oder schlechte Daten geliefert hat.
 # Ein solider Agent könnte nachdenken und entscheiden, get_financial_data erneut aufzurufen, bevor er clean_data erneut versucht.
 # Für dieses Beispiel werden wir einfach anhalten, wenn die Wiederholungen das Problem nicht gelöst haben.
 print("Die Überlegung weist auf ein Datenproblem hin. Anhalten für den Moment.")
 break # Anhalten wegen ungelöster Datenprobleme nach den Wiederholungen

 else:
 print("Unbehandelt gescheitert nach Überlegung. Anhalten.")
 break # Unbehandelte Fehler

 self.current_step_index += 1 # Zum nächsten Schritt übergehen, wenn der aktuelle erfolgreich war oder behandelt wurde.

 print("\n--- Ausführung des Agenten abgeschlossen ---")
 return context

# --- Ausführung des Agenten ---
# Ersetzen Sie es durch Ihren echten LLM-Client
class MockLLM:
 def chat(self, messages):
 return {"choices": [{"message": {"content": "Fiktive Antwort des LLM"}}]}

mock_llm = MockLLM()
agent = ReflectiveAgent(mock_llm, tools)

print("\n--- Ausführung mit einem gültigen Symbol ---")
agent.run("AAPL")

print("\n--- Ausführung mit einem Symbol, das in der API fehlschlagen könnte ---")
# Den Zustand des Agenten zurücksetzen für einen neuen Versuch
agent = ReflectiveAgent(mock_llm, tools)
agent.run("GOOG")

print("\n--- Ausführung mit einem absichtlich ungültigen Symbol ---")
agent = ReflectiveAgent(mock_llm, tools)
agent.run("FAILCO")

Was passiert hier?

  • Der `ReflectiveAgent` hat ein `memory`, um seinen Verlauf zu verfolgen.
  • Nach jedem Ausführen eines Werkzeugs zeichnet er die `observation` (Erfolg, Misserfolg, Ausgabe, Fehler) auf.
  • Im Wesentlichen ruft er dann `_call_llm` auf (simuliert unser LLM für die Reflexion) mit einem Prompt, der den aktuellen Kontext und das Ergebnis der `last_action` enthält.
  • Die Reflexion des LLM informiert dann über den nächsten Schritt des Agenten. Wenn die API fehlgeschlagen ist, schlägt das LLM vor, es erneut zu versuchen. Wenn es ein ungültiges Symbol ist, schlägt es vor, anzuhalten. Wenn das Bereinigen der Daten wegen eines unerwarteten Formats fehlgeschlagen ist, würde es idealerweise vorschlagen, die Daten zu überprüfen oder den Ansatz zur Bereinigung anzupassen (obwohl meine fiktive LLM-Antwort vereinfacht ist).
  • Die äußere `while`-Schleife läuft weiter, bis der Plan abgeschlossen ist oder ein kritischer und irreparabler Fehler nach der Reflexion auftritt.

Dies ist ein vereinfachtes Beispiel, aber es zeigt die zentrale Schleife. Ein echtes System hätte ein viel ausgefeilteres Prompt für das `Reflexionsmodul` und möglicherweise ein LLM, das direkt strukturierte Befehle wie `RETRY_TOOL(tool_name, delay)` oder `MODIFY_PLAN(new_step, index)` ausgeben kann. Meine Funktion `_call_llm` ist ein Platzhalter, der vordefinierte Antworten rückgibt, die auf Schlüsselwörtern basieren, aber in einer Produktionsumgebung wäre das der Ort, an dem Ihre echte LLM-Pipeline lebt, die darauf ausgelegt ist, spezifische Aktionen basierend auf ihrer Reflexion auszugeben.

Meine Erfahrung beim Bau solcher Systeme

Als ich begann, diese reflexiven Schleifen zu integrieren, erforderte die anfängliche Einrichtung etwas mehr Arbeit. Sie müssen gute Prompts für die Reflexionsstufe entwickeln und sicherstellen, dass das LLM seine Rolle bei der Bewertung der Ergebnisse versteht. Sie sollten auch Ihre Beobachtungen klar strukturieren, damit das LLM gute Eingaben hat.

Die Rückmeldungen waren jedoch erheblich. Meine Agenten gingen von der Blockade beim ersten Anzeichen eines Problems dazu über, vorübergehende Netzwerkfehler mit Anstand zu handhaben, sich an leichte Änderungen im Datenschema anzupassen und manchmal sogar tiefere Probleme zu erkennen, die ich nicht antizipiert hatte. Es ist, als würde man Ihrem Agenten ein bisschen gesunden Menschenverstand geben.

Eine Herausforderung, vor der ich stand, war das Prompt-Engineering für das Reflexionsmodul. Sie möchten nicht, dass es einfach nur den Fehler wiederholt. Sie möchten, dass es analysiert, schlussfolgert und Vorschläge macht. Ich hatte Erfolg mit Prompts, die ausdrücklich fragen:

  • „Angesichts des beobachteten Fehlers, was ist die wahrscheinlichste Ursachenanalyse?“
  • „Welche spezifische Maßnahme sollte ergriffen werden, um das Problem zu beheben? Berücksichtigen Sie Wiederholungen, alternative Werkzeuge oder die Anpassung des Plans.“
  • „Wenn dieses Problem anhält, wie sollte ich elegant eskalieren oder das Ganze beenden?“

Wo wissen Sie darüber hinaus die Bedeutung des `Memory Module` nicht zu unterschätzen. Für komplexe Aufgaben muss sich der Agent *erinnern*, *warum* er etwas versucht hat und welche Ergebnisse über mehrere Schritte hinweg erzielt wurden. Kurzfristige Kontextfenster sind für echte Reflexion nicht ausreichend.

Wichtige Punkte

  1. Entwerfen Sie für das Scheitern, Nicht Nur für den Erfolg: Denken Sie bei der Planung des Arbeitsablaufs Ihres Agenten aktiv darüber nach, was in jedem Schritt schiefgehen könnte. Das bereitet Sie darauf vor, wo Sie Ihre Punkte für Beobachtungen und Reflexionen platzieren.
  2. Explizite Beobachtung ist der Schlüssel: Stellen Sie sicher, dass Ihre Tools klare und strukturierte Ergebnisse zurückgeben und vor allem, dass sie die Fehler effektiv propagieren. Das Reflexionsmodul kann nur mit dem arbeiten, was es „sieht“.
  3. Behandeln Sie die Reflexion als Bürger erster Klasse: Fügen Sie nicht einfach eine Fehlerbehandlung hinzu. Integrieren Sie ein dediziertes Reflexionsmodul (auch wenn es sich nur um einen spezifischen LLM-Aufruf handelt) in die Hauptschleife Ihres Agenten.
  4. Beginnen Sie einfach, iterieren Sie: Sie benötigen nicht gleich am ersten Tag ein hochkomplexes Reflexionssystem. Beginnen Sie mit einer einfachen Retry-Logik basierend auf der LLM-Reflexion und fügen Sie schrittweise eine anspruchsvollere Entscheidungsfindung zur Anpassung von Plänen oder Werkzeugwechseln hinzu.
  5. Befragen Sie das Reflexionsmodul mit Bedacht: Leiten Sie Ihr LLM an, analytisches Denken zu betreiben, nicht nur eine Zusammenfassung zu liefern. Stellen Sie offene Fragen zu den zugrunde liegenden Ursachen und den vorgeschlagenen Lösungen.
  6. Berücksichtigen Sie das Langzeitgedächtnis: Für Agenten, die über längere Zeiträume funktionieren oder komplexe Aufgaben mit mehreren Schritten bearbeiten, ist ein Gedächtnissystem, das mehr als nur den aktuellen Kontext speichert, entscheidend für effektive Reflexion und Lernen.

Agenten zu bauen, die in der Lage sind, über ihre eigene Leistung nachzudenken, macht sie erheblich robuster und nützlicher. Das bringt uns den wirklich autonomen Systemen näher, die zuverlässig in unvorhersehbaren Umgebungen arbeiten können. Es erfordert anfangs etwas mehr Arbeit, aber es ist eine Investition, die sich in der Zuverlässigkeit der Agenten und der Reduzierung von Wartungsproblemen mehr als bezahlt macht. Probieren Sie das in Ihrem nächsten Projekt aus!

Verwandte Artikel

🕒 Published:

🧬
Written by Jake Chen

Deep tech researcher specializing in LLM architectures, agent reasoning, and autonomous systems. MS in Computer Science.

Learn more →
Browse Topics: AI/ML | Applications | Architecture | Machine Learning | Operations

Recommended Resources

ClawseoAgnthqAgntboxAgntkit
Scroll to Top