Agentic RAG: Jenseits einfacher Chatbots
Das Schlagwort „KI-Agent“ ist allgegenwärtig. Aber was bedeutet es eigentlich und warum sollte es Sie interessieren?
Einfache Chatbots, die grundlegendes RAG (Retrieval-Augmented Generation) verwenden, sind begrenzt: Sie beantworten statische Fragen aus einer festen Wissensbasis. Sie können nicht über mehrere Quellen nachdenken, keine Abfolge von Aktionen planen oder sich selbst korrigieren, wenn etwas schief geht.
Agentic RAG ändert das. Es gibt LLMs die Möglichkeit, zu denken, zu planen, abzurufen, zu handeln und sich selbst zu korrigieren – und ist damit in der Lage, komplexe, mehrstufige Arbeitsabläufe zu bewältigen, die weit über FAQ-Bots hinausgehen.
Dieser Artikel ist Ihr praktischer Leitfaden zum Erstellen von KI-Agenten, die tatsächlich in der Produktion funktionieren.
Table of Contents
- Warum Simple RAG zu kurz kommt
- Die Agentic RAG-Architektur
- Bausteine: Frameworks und Tools
- Ein vollständiges Beispiel: Kundendienstmitarbeiter
- Erweiterte Muster
- Checkliste für die Produktionsbereitschaft
- Wann man KEINE Agenten einsetzen sollte
- Das Fazit
- Wichtige Erkenntnisse
- Brauchen Sie Hilfe beim Aufbau von Maklern
Warum Simple RAG zu kurz kommt
!Agentic RAG system architecture: retrieval, reasoning, action, and memory components
Grundlegendes RAG funktioniert folgendermaßen:
- Der Benutzer stellt eine Frage
- Das System ruft relevante Dokumente aus einer Vektordatenbank ab
- LLM generiert auf Grundlage dieser Dokumente eine Antwort
- Antwort zurückgeben
Es eignet sich hervorragend für häufig gestellte Fragen, ist jedoch für alles, was Folgendes erfordert, brüchig:
- Mehrstufige Argumentation: „Was ist der beste Cloud-Anbieter für eine Video-Streaming-App, die auch ML-Schulung und DSGVO-Konformität benötigt?“ erfordert den Vergleich von AWS, GCP und Azure in drei Dimensionen.
- Werkzeugnutzung: „Buchen Sie mir nächste Woche den günstigsten Hin- und Rückflug nach Tokio, der vor 10 Uhr ankommt und einen Fensterplatz hat.“ Benötigt Flugsuche, Preisvergleich, Sitzplatzauswahl.
- Speicher & Status: „Welches Produkt sollte ich aufgrund meiner vorherigen Bestellungen als nächstes in Betracht ziehen?“ benötigt Zugriff auf den Bestellverlauf.
- Fehlerbehebung: Wenn eine Websuche fehlschlägt oder Müll zurückgibt, gibt ein einfaches RAG-System einfach auf. Ein Agent kann es mit einer anderen Abfrage erneut versuchen oder auf ein zwischengespeichertes Ergebnis zurückgreifen.
Die Agentic RAG-Architektur
Ein Agentensystem fügt der Basis-RAG drei Schichten hinzu:
Hier ist ein typischer Agentenablauf:
„ Benutzer: „Wie ist das Wetter nächste Woche in Tokio und sollte ich einen Regenschirm einpacken?“
Agent (Planer): Schritt 1: Holen Sie sich die Wettervorhersage für Tokio Schritt 2: Bestimmen Sie anhand der Prognose, ob ein Regenschirm benötigt wird
Agent (Ausführender Schritt 1):
- Websuche: „Wettervorhersage für Tokio nächste Woche“
- Analysieren Sie die Ergebnisse, extrahieren Sie Temperaturen und Niederschläge
Agent (Ausführender Schritt 2):
- Wenn Niederschlag > 30 % → „Ja, Regenschirm einpacken“
- Sonst → „Kein Regenschirm nötig“
Agent (Kritiker):
- Überprüfen Sie: Haben wir die richtigen Termine erwischt? (Nächste Woche = 7 Tage ab heute?)
- Überprüfen Sie: Haben wir die Zahlen richtig analysiert? (30 % Schwelle willkürlich?)
- Wenn Sie sich nicht sicher sind, fragen Sie den Benutzer: „Möchten Sie eine detaillierte Tagesprognose?“
Abschließende Antwort: „In Tokio wird es größtenteils sonnig sein, mit einer Regenwahrscheinlichkeit von 20 %. Kein Regenschirm erforderlich.“ „
Bausteine: Frameworks und Tools
Sie müssen dies nicht von Grund auf neu erstellen. Mehrere Open-Source-Frameworks unterstützen Agenten-Workflows:
1. LangGraph (von LangChain)
Mit LangGraph können Sie zyklische Diagramme definieren, in denen Knoten LLM-Aufrufe oder Tools sind. Perfekt für Agenten, die eine Schleife ausführen müssen, bis eine Bedingung erfüllt ist.
„Python aus langgraph.graph import StateGraph, END aus langchain_core.messages HumanMessage importieren
Klasse AgentState(TypedDict): Nachrichten: Liste[HumanMessage] weiter: str
def Recover_node(state: AgentState): query = state['messages'][-1].content docs = vector_db.search(query) return {"messages": [SystemMessage(content=f"Context: {docs}")]}
def reasoning_node(state: AgentState): Antwort = llm.invoke(state['messages']) return {"Nachrichten": [Antwort]}
def Should_continue(state: AgentState) -> str: last = state['messages'][-1].content wenn „Ich benötige weitere Informationen“ im letzten Feld: zurückgeben „abrufen“ sonst: Rückgabe „Ende“
Workflow = StateGraph(AgentState) Workflow.add_node("retrieve", Abrufen_node) Workflow.add_node("reason", reasoning_node) Workflow.add_conditional_edges("reason", Should_continue, {"retrieve": "retrieve", "end": END}) Workflow.set_entry_point("retrieve") agent = Workflow.compile() „
LangGraph kümmert sich um Zustandspersistenz, Prüfpunkte und Human-in-the-Loop-Unterbrechungen.
2. LlamaIndex + AgentWorkflow
Die Klasse „AgentWorkflow“ von LlamaIndex erleichtert die Zusammenarbeit mit mehreren Agenten:
„Python aus llama_index.core.agent.workflow AgentWorkflow importieren aus llama_index.core.tools FunctionTool importieren
def search_knowledge_base(query: str) -> str: „“„Durchsuchen Sie die interne Wissensdatenbank.““ return vector_db.query(query)
def search_web(query: str) -> str: „Suchen Sie im Internet nach aktuellen Informationen.“ web_search(query) zurückgeben
defexecute_sql(query: str) -> str: „““SQL-Abfragen in der Analysedatenbank ausführen.““ return sql_db.execute(query)
Workflow = AgentWorkflow.from_tools_or_functions( [search_knowledge_base, search_web,execute_sql], llm=OpenAI(model="gpt-4-turbo"), system_prompt="Sie sind ein hilfreicher Assistent, der Wissens-, Web- und Analysedatenbanken durchsuchen kann." )
Antwort = Warten Workflow.run(user_msg="Wie hoch waren unsere Q1-Umsätze in Europa und wie ist das im Vergleich zu Branchentrends?") „
Der Agent entscheidet automatisch, welche(s) Werkzeug(e) er in welcher Reihenfolge verwendet.
3. Benutzerdefiniert mit Konturen
Für vollständige Kontrolle verwenden Sie „Outlines“, um eine strukturierte Ausgabe** (JSON-Schema, Regex) vom LLM zu erzwingen und dann basierend auf der strukturierten Antwort an Tools weiterzuleiten.
„Python Umrisse importieren aus pydantic import BaseModel, Field
Klasse ToolCall(BaseModel): Tool: str = Field(description="Name des aufzurufenden Tools") Argumente: dict = Field(description="Argumente für das Tool")
model = Outlines.models.transformers("meta-llama/Llama-3-70b-chat-hf") prompt = f""" Benutzer: {user_query}
Verfügbare Tools: search_web, query_db, send_email
Entscheiden Sie, welches Tool Sie mit welchen Argumenten nutzen möchten. JSON ausgeben. „““
Ergebnis = Outlines.generate.json(prompt, schema=ToolCall, model=model)
result: {"tool": "search_web", "arguments": {"query": "foo"}}
„
Ein vollständiges Beispiel: Kundendienstmitarbeiter
Lassen Sie uns einen Agenten erstellen, der Folgendes kann:
- Sehen Sie sich den Bestellverlauf an
- Überprüfen Sie den Lagerbestand
- Finden Sie relevante Richtlinien
- Generieren Sie eine hilfreiche Antwort (oder eskalieren Sie)
„Python aus llama_index.core.agent.workflow AgentWorkflow importieren aus llama_index.core.tools FunctionTool importieren aus llama_index.llms.openai OpenAI importieren
def get_order_history(user_id: str) -> dict: „“„Bestellverlauf des Benutzers aus der Datenbank abrufen.““ query = f"SELECT * FROMorders WHERE user_id = '{user_id}' ORDER BYcreated_at DESC LIMIT 10" return sql_db.execute(query)
def check_inventory(sku: str) -> dict: „““Überprüfen Sie, ob ein Produkt auf Lager ist.“““ return inventory_db.lookup(sku)
def search_knowledge_base(query: str) -> str: „Suchen Sie nach Hilfedokumenten, Richtlinien und Versandinformationen.““ return vector_db.search(query)
def create_ticket(user_id: str, issue: str) -> str: „““Eröffnen Sie ein Support-Ticket für die menschliche Nachverfolgung.“““ ticket_id = zendesk.create_ticket(user_id, issue) return f"Ticket erstellt: {ticket_id}"
Workflow = AgentWorkflow.from_tools_or_functions( tools=[get_order_history, check_inventory, search_knowledge_base, create_ticket], llm=OpenAI(model="gpt-4-turbo"), system_prompt=""" Sie sind ein Kundendienstmitarbeiter für Acme E-Commerce.
Ihr Ziel: Das Problem des Benutzers mithilfe der verfügbaren Tools lösen. Regeln:
- Überprüfen Sie immer zuerst den Bestellverlauf, wenn der Benutzer eine Bestellung erwähnt
- Wenn das Produkt nicht vorrätig ist, bieten Sie Alternativen oder ein Wiederauffüllungsdatum an
- Wenn das Problem komplex oder emotional ist, erstellen Sie ein Ticket für die Weiterverfolgung durch einen Mitarbeiter
- Seien Sie höflich, prägnant und hilfsbereit. „““ )
Lauf
user_query = „Ich habe letzte Woche SKU-12345 bestellt, aber keine Versandbestätigung erhalten. Meine Bestellnummer ist ABC-789.“ Antwort = Warten auf Workflow.run(user_msg=user_query) drucken(Antwort) „
Der Agent wird:
- Rufen Sie „get_order_history“ mit der von der Bestellnummer abgeleiteten Benutzer-ID auf
- Stellen Sie sicher, dass die Bestellung „in Bearbeitung“ ist, aber nicht versendet wird
- Rufen Sie „search_knowledge_base“ auf, um Informationen zu den Versandrichtlinien zu erhalten („Bestellbearbeitung dauert 1–3 Werktage“).
- Antwort generieren: „Ihre Bestellung ABC-789 wird noch bearbeitet. Der Versand dauert normalerweise 1–3 Werktage. Sie erhalten beim Versand eine Sendungsverfolgungsnummer per E-Mail.“
Wenn die Bestellung das Versandfenster überschritten hat, wird möglicherweise „create_ticket“ aufgerufen.
Erweiterte Muster
Tool-Verkettung und Datenübergabe
Agenten können Tools verketten, bei denen die Ausgabe eines Tools zur Eingabe des nächsten Tools wird. Das Workflow-Framework erledigt dies automatisch, wenn Sie den Gesprächsverlauf richtig strukturieren.
Speicher- und Kontextverwaltung
Bei langen Gesprächen müssen Sie den Verlauf komprimieren oder zusammenfassen, damit er in das Kontextfenster passt. Techniken:
- Zusammenfassungspuffer: Fassen Sie regelmäßig alte Nachrichten zusammen und behalten Sie nur die neuesten Nachrichten + Zusammenfassung
- Relevanzbewertung: Speichern Sie alle vergangenen Interaktionen in einer Vektor-Datenbank und rufen Sie bei jeder Runde nur relevante ab
- Sitzungsstatus: Bewahren Sie den strukturierten Status (z. B. „aktuelle_Bestell-ID“, „Benutzername“) in einem separaten Speicher auf und fügen Sie ihn bei jedem Schritt in die Eingabeaufforderung ein
Zusammenarbeit mehrerer Agenten
Komplexe Aufgaben können auf spezialisierte Agenten aufgeteilt werden, die von einem Vorgesetzten koordiniert werden:
„ Supervisor-Agent ├─ Research Agent (durchsucht Web, Wissensdatenbank) ├─ Datenagent (führt SQL aus, analysiert Daten) └─ Write Agent (erzeugt die endgültige Antwort) „
LangGraph unterstützt dies nativ: Jeder Knoten kann ein vollständiger Agenten-Workflow sein.
Human-in-the-Loop
Agenten sollten wissen, wann sie anhalten und einen Menschen fragen müssen. Fügen Sie ein Tool „ask_human(question)“ hinzu, das die Ausführung anhält und die Frage an einen Slack-Kanal oder ein Dashboard sendet. Wenn der Mensch antwortet, fährt der Agent fort.
Checkliste für die Produktionsbereitschaft
Wann man KEINE Agenten einsetzen sollte
Agenten sind leistungsstark, erhöhen jedoch die Komplexität. Vermeiden Sie sie, wenn:
- Bei der Aufgabe handelt es sich um eine einfache Beantwortung von Fragen aus einer statischen Wissensbasis (einfaches RAG reicht aus)
- Sie benötigen eine extrem niedrige Latenz (< 200 ms) – Agenten erhöhen den Overhead um 1–3 Schritte
- Die Kosten für zusätzliche LLM-Anrufe überwiegen den Nutzen
- Sie können keine klaren Tools mit deterministischen Ausgaben definieren
- Die Einhaltung gesetzlicher Vorschriften erfordert vollständige Vorhersehbarkeit (Agenten sind nicht deterministisch).
Das Fazit
Agentic RAG geht über einfache Chatbots hinaus und hin zu mehrstufigen Argumentationssystemen, die planen, abrufen, handeln und sich selbst korrigieren können. Frameworks wie LangGraph, LlamaIndex und Outlines machen es zugänglich.
Fangen Sie klein an: Wählen Sie einen einzelnen hochwertigen Workflow (Kundensupport, Datenanalyse, Forschungsassistent) und bauen Sie einen Agenten dafür auf. Messen Sie den Erfolg an der Reduzierung menschlicher Eskalationen und nicht nur an der Antwortqualität.
Die Zukunft von KI-Anwendungen sind nicht nur bessere Eingabeaufforderungen, sondern orchestrierte Intelligenz.
Wichtige Erkenntnisse
- Einfaches RAG ist auf statische Fragen und Antworten beschränkt; Agenten fügen Planung, Werkzeugnutzung, Gedächtnis und Selbstkorrektur hinzu
- Kern-Frameworks: LangGraph (zyklische Diagramme), LlamaIndex (AgentWorkflow), Outlines (strukturierte Ausgabe)
- Erstellen Sie Agenten für mehrstufige Arbeitsabläufe: Kundensupport, Datenanalyse, Recherche
- Produktionsbereitschaft: Zeitüberschreitungen, Wiederholungsversuche, Kostenkontrolle, Beobachtbarkeit, Leitplanken
- Wissen Sie, wann Sie KEINE Agenten verwenden sollten (einfache Aufgaben, geringe Latenz, strikter Determinismus)
Brauchen Sie Hilfe beim Aufbau von Maklern?
Wir entwerfen und implementieren KI-Agenten in Produktionsqualität, die sich in Ihre Daten, Tools und Arbeitsabläufe integrieren lassen. Kontaktieren Sie uns für einen technischen Workshop.
<a href="/get-started/" class="btn btn-primary">Workshop planen</a>
Wortanzahl: ~1050
**Zielsprachen: Englisch (Quelle), Arabisch, Spanisch, Deutsch, Französisch