Können Sie agentische Workflows ohne extrem große, kostenintensive Large Language Models (LLMs) zu erstellen? Die Antwort ist ja. In diesem Tutorial zeigen wir, wie man unter Verwendung von IBM Granite™ ein RAG-System mit mehreren Agenten lokal mit AutoGen aufbaut.
Retrieval-Augmented Generation (RAG) ist eine effektive Methode, um einem LLM zusätzliche Datensätze aus verschiedenen Datenquellen zur Verfügung zu stellen, ohne dass eine teure Feinabstimmung erforderlich ist. In ähnlicher Weise nutzt agentische RAG die Fähigkeit eines KI-Agenten, Teilaufgaben zu planen und auszuführen und relevante Informationen abzurufen, um die Wissensbasis eines LLM zu ergänzen. Diese Fähigkeit ermöglicht die Optimierung und höhere Skalierbarkeit von RAG-Anwendungen im Vergleich zu herkömmlichen Chatbots. Wir müssen keine komplexen SQL-Abfragen mehr schreiben, um relevante Daten aus einer Wissensdatenbank zu extrahieren.
Die Zukunft von agentischer RAG ist RAG mit mehreren Agenten, bei dem mehrere spezialisierte Agenten zusammenarbeiten, um optimale Latenz und Effizienz zu erreichen. Wir werden diese Zusammenarbeit demonstrieren, indem wir ein kleines, effizientes Modell wie Granite 3.2 verwenden und es mit einer modularen Agentenarchitektur kombinieren. Wir verwenden mehrere spezialisierte „Mini-Agenten“, die zusammenarbeiten, um Aufgaben durch adaptive Planung und den Aufruf von Tools oder Funktionen zu erledigen. Wie bei Menschen übertrifft ein Team von Agenten oder ein Multi-Agenten-System oft die heldenhaften Bemühungen eines Einzelnen, insbesondere wenn es klar definierte Rollen und eine effektive Kommunikation hat.
Für die Orchestrierung dieser Zusammenarbeit können wir AutoGen (AG2) als Kern-Framework zur Verwaltung von Workflows und Entscheidungsfindung verwenden, zusammen mit anderen Tools wie Ollama für die lokale Bereitstellung von LLMs und Open WebUI für die Interaktion. AutoGen ist ein von Microsoft entwickeltes Framework zur Erstellung von KI-Anwendungen mit mehreren Agenten.1 Bemerkenswert ist, dass alle in diesem Tutorial verwendeten Komponenten Open Source sind. Zusammen ermöglichen diese Tools den Aufbau eines KI-Systems, das sowohl leistungsstark als auch datenschutzfreundlich ist, ohne dass Sie Ihren Laptop verlassen müssen.
Unser Granite-Retrieval-Agent basiert auf einer modularen Architektur, in der jeder Agent eine spezielle Rolle spielt. Wie bei Menschen funktionieren auch Agenten am besten, wenn sie gezielte Anweisungen erhalten und gerade genug Kontext haben, um eine fundierte Entscheidung zu treffen. Zu viele irrelevante Informationen, wie z. B. ein ungefilterter Chatverlauf, können zu einem „Nadel im Heuhaufen“-Problem führen, bei dem es immer schwieriger wird, Signale von Rauschen zu unterscheiden.
In dieser agentischen KI-Architektur arbeiten die Agenten nacheinander zusammen, um das Ziel zu erreichen. So ist das generative KI-System organisiert:
Planer-Agent: Erstellt den ersten übergeordneten Plan, einmal zu Beginn des Workflows. Wenn ein Benutzer beispielsweise fragt: „Was sind vergleichbare Open-Source-Projekte mit denen, die mein Team verwendet?“ Dann stellt der Agent einen Schritt-für-Schritt-Plan zusammen, der in etwa so aussehen könnte: „1. Durchsuchen Sie Teamdokumente nach Open-Source-Technologien. 2. Durchsuchen Sie das Internet nach ähnlichen Open-Source-Projekten wie die in Schritt 1 gefundenen.“ Wenn einer dieser Schritte fehlschlägt oder unzureichende Ergebnisse liefert, können die Schritte später vom Reflektions-Agenten angepasst werden.
Forschungsassistent: Der Forschungsassistent ist das Arbeitstier des Systems. Er nimmt Anweisungen wie „Teamdokumente nach Open-Source-Technologien durchsuchen“ auf und führt sie aus. Für Schritt 1 des Plans wird die erste Anweisung des Planeragenten verwendet. Für die nachfolgenden Schritte erhält er auch einen kuratierten Kontext aus den Ergebnissen der vorherigen Schritte.
Wenn Sie beispielsweise gefragt werden: „Durchsuchen Sie das Web nach ähnlichen Open-Source-Projekten“, erhält es auch die Ausgabe des vorherigen Schritts für die Dokumentensuche. Je nach Anweisung kann der Forschungsassistent Tools wie Websuche oder Dokumentensuche oder beides verwenden, um seine Aufgabe zu erfüllen.
Schrittkritiker: Der Schrittkritiker ist dafür verantwortlich, zu entscheiden, ob die Ausgabe des vorherigen Schritts die ihm erteilte Anweisung zufriedenstellend erfüllt hat. Er empfängt zwei Informationen: die einstufige Anweisung, die gerade ausgeführt wurde, und die Ausgabe dieser Anweisung. Die Meinung eines Schrittkritikers zu dem Gespräch verschafft Ihnen Klarheit darüber, ob das Ziel erreicht wurde, was für die Planung der nächsten Schritte erforderlich ist.
Zielrichter: Der Zielrichter bestimmt, ob das Endziel erreicht wurde. Er stützt sich dabei auf alle Anforderungen des vorgegebenen Ziels, die Pläne, die zur Erreichung des Ziels erstellt wurden, und die bisher gesammelten Informationen. Die Ausgabe des Urteils ist entweder „JA“ oder „NOCH NICHT“, gefolgt von einer kurzen Erklärung, die nicht länger als ein oder zwei Sätze ist.
Reflexionsagent: Der Reflexionsagent ist unser ausführender Entscheidungsträger. Er entscheidet, welcher Schritt als nächstes unternommen werden soll, ob es darum geht, in den nächsten geplanten Schritt einzudringen, den Kurs zu ändern, um Missgeschicke auszugleichen, oder die Bestätigung, dass das Ziel erreicht wurde. Wie ein echter CEO trifft er die beste Entscheidungsfindung, wenn er ein klares Ziel vor Augen hat und ihm prägnante Ergebnisse über die Fortschritte bei der Erreichung dieses Ziels vorgelegt werden. Die Ausgabe des Reflexionsagenten ist entweder der nächste Schritt, der ausgeführt werden soll, oder die Anweisung zum Beenden, wenn das Ziel erreicht wurde. Wir präsentieren den Reflexionsagenten mit den folgenden Elementen:
Die strukturierte Darstellung dieser Punkte verdeutlicht dem Entscheidungsträger, was bereits getan wurde, sodass er entscheiden kann, wie es weitergehen soll.
Report Generator: Sobald das Ziel erreicht ist, fasst der Report Generator alle Ergebnisse zu einer zusammenhängenden Ausgabe zusammen, die die ursprüngliche Abfrage direkt beantwortet. Während jeder Schritt im Prozess gezielte Ergebnisse generiert, verknüpft der Report Generator alles zu einem Abschlussbericht.
Für Anfänger kann es schwierig sein, eine agentische KI-Anwendung von Grund auf neu zu entwickeln. Daher werden wir eine Reihe von Open-Source-Tools verwenden. Der Granite Retrieval Agent integriert mehrere Tools für die agentische RAG.
Open WebUI: Der Benutzer interagiert mit dem System über eine intuitive Chat-Schnittstelle, die in Open WebUI gehostet wird. Diese Schnittstelle dient als primärer Punkt für das Stellen von Abfragen (z. B. „Holen Sie sich die neuesten Nachrichtenartikel zu meinen Projektnotizen“) und die Anzeige der Ausgaben.
Pythonbasierter Agent (AG2-Framework): Der Kern des Systems ist ein pythonbasierter Agent, der mit AutoGen (AG2) erstellt wurde. Dieser Agent koordiniert den Workflow, indem er Aufgaben aufschlüsselt und Tools dynamisch aufruft, um Schritte auszuführen.
Der Agent hat Zugriff auf zwei primäre Tools:
Dokumenten-Suchtool: ruft relevante Informationen aus einer Vektordatenbank ab, die hochgeladene Projektnotizen oder als Einbettungen gespeicherte Dokumente enthält. Diese Vektorsuche nutzt die integrierten APIs zur Dokumentenabfrage in Open WebUI, anstatt einen völlig separaten Datenspeicher einzurichten.
Web-Suchtool: Führt webbasierte Suchvorgänge durch, um externes Wissen und Echtzeitinformationen zu sammeln. In diesem Fall verwenden wir SearXNG als unsere Metasuchmaschine.
Ollama: Das IBM Granite 3.2 LLM dient als Sprachmodell, das das System betreibt. Es wird lokal mit Ollama gehostet, was eine schnelle Inferenz, Kosteneffizienz und Datenschutz gewährleistet. Wenn Sie dieses Projekt mit größeren Modellen ausführen möchten, wird API-Zugang über beispielsweise IBM watsonx.ai oder OpenAI bevorzugt. Dieser Ansatz erfordert jedoch einen watsonx.ai- oder OpenAI-API-Schlüssel. Stattdessen verwenden wir in diesem Tutorial das lokal gehostete Ollama.
Andere gängige Open-Source-Agent-Frameworks, die in diesem Tutorial nicht behandelt werden, sind LangChain, LangGraph und CrewAI.
Detaillierte Einrichtungsanweisungen sowie das gesamte Projekt können auf der IBM Granite Community GitHub eingesehen werden. . Die Jupyter-Notebook-Version dieses Tutorials finden Sie ebenfalls auf GitHub.
Die folgenden Schritte ermöglichen eine schnelle Einrichtung des Granite-Retrieval-Agenten.
Die Installation von Ollama ist so einfach wie das Herunterladen des Clients von der offiziellen Ollama-Site. Führen Sie nach der Installation von Ollama den folgenden Befehl aus, um das Granite 3.2 LLM abzurufen.
Sie sind jetzt mit Ollama und Granite einsatzbereit.
Eine Low-Code-Lösung für den Aufbau von Agenten-Workflows ist AutoGen Studio. Wenn wir jedoch selbst einen einfachen Agenten erstellen, können wir die Einrichtung dieses kompletten Multi-Agenten-RAG-Projekts besser verstehen. Um fortzufahren, richten Sie ein Jupyter Notebook in Ihrer bevorzugten integrierten Entwicklungsumgebung (IDE) ein und aktivieren eine virtuelle Umgebung, indem Sie die folgenden Befehle in Ihrem Terminal ausführen.
python3.11 -m venv venv
source venv/bin/activate
Für diesen einfachen Agenten benötigen wir einige Bibliotheken und Module. Achten Sie darauf, die folgenden Elemente zu installieren und zu importieren.
!pip install -qU langchain chromadb tf-keras pyautogen "ag2[ollama]" sentence_transformers
import getpass
from autogen.agentchat.contrib.retrieve_assistant_agent import AssistantAgent
from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent
Es sind mehrere Konfigurationsparameter vorhanden, die lokal festgelegt werden müssen, um das richtige LLM aufzurufen, das wir mit Ollama gezogen haben.
ollama_llm_config = {
"config_list": [
{
"model": "granite3.2:8b",
"api_type": "ollama",
}
],
}
Wir können diese Konfigurationsparameter im Parameter „llm_config“ der Klasse „AssistantAgent“ übergeben, um unseren ersten KI-Agenten zu instanziieren.
assistant = AssistantAgent(
name="assistant",
system_message="You are a helpful assistant.",
llm_config=ollama_llm_config,
)
Dieser Agent verwendet Granite 3.2, um die vom Agenten „ragproxyagent“ zurückgegebenen Informationen zu synthetisieren. Das Dokument, das wir dem RAG-Agenten als zusätzlichen Kontext zur Verfügung stellen, ist die rohe README-Markdown-Datei, die sich im AutoGen-Repository auf GitHub befindet. Außerdem können wir ein neues Wörterverzeichnis mit Konfigurationen spezifisch für den Retrieval-Agent übergeben. Einige weitere Schlüssel, die Sie nützlich finden könnten, sind „vector_db“, „chunk_token_size“ und „embedding_model“.
Eine vollständige Liste der Konfigurationsschlüssel finden Sie in der offiziellen Dokumentation.
ragproxyagent = RetrieveUserProxyAgent(
name="ragproxyagent",
max_consecutive_auto_reply=3,
is_termination_msg=lambda msg: msg.get("content") is not None or "TERMINATE" in msg["content"],
system_message = "Context retrieval assistant.",
retrieve_config={
"task": "qa",
"docs_path": "https://raw.githubusercontent.com/microsoft/autogen/main/README.md",
"get_or_create": True,
"collection_name": "autogen_docs",
"overwrite": True
},
code_execution_config=False,
human_input_mode="NEVER",
)
Jetzt können wir einen Chat mit unserem RAG-Agenten einleiten, um eine Frage zu stellen, die sich auf das als Kontext bereitgestellte Dokument bezieht.
qs = "What languages does AutoGen support?"
result = ragproxyagent.initiate_chat(
assistant, message=ragproxyagent.message_generator, problem=qs
)
print(result)
Bitte beachten Sie, dass der Inhalt der README-Datei Markdown aus Gründen der Kürze aus der Ausgabe geschwärzt wurde.
Ausgabe:
Versuch, eine Erfassung zu erstellen.
21.07.2025, 12:20:36,125 - autogen.agentchat.contrib.retrieve_user_proxy_agent - INFO - 1 Teil gefunden.
21.07.2021, 12:20:36,129 - autogen.agentchat.contrib.vectordb.Chromadb – INFO – Keine Einbetten vorhanden. Um die Einbettung zu erzeugen, wird die Einbettungsfunktion von VectorDB verwendet.
VectorDB gibt doc_ids zurück: [['8e9131c7']]
Hinzufügen des Inhalts von doc 8e9131c7 zum Kontext.
ragproxyagent (zum Assistenten):
Sie sind ein Retrieve Augmented Chatbot. Sie beantworten die Fragen der Benutzer auf der Grundlage Ihrer eigenen Kenntnisse und des vom Benutzer angegebenen Kontexts.
Wenn Sie die Frage mit oder ohne den aktuellen Kontext nicht beantworten können, sollten Sie genau mit „KONTEXT AKTUALISIEREN“ antworten.
Ihre Antwort muss so kurz wie möglich sein.
Die Frage des Benutzers lautet: Welche Sprachen unterstützt AutoGen?
Der Kontext ist:
[ZENSIERT]
Assistent (für ragproxyagent):
Bei dem bereitgestellten Text handelt es sich offenbar um eine README-Datei für das AutoGen-Projekt, eine Open-Source-Initiative von Microsoft. Hier ist eine Zusammenfassung des Inhalts:
Die README-Datei enthält auch eine Tabelle, in der die verfügbaren Pakete für jede unterstützte Sprache (C# und Python) und die jeweiligen Paketmanager (NuGet und PyPI) zusammengefasst sind. Das macht es Entwicklern leicht, schnell die notwendigen Komponenten für den Einstieg in AutoGen in ihrer bevorzugten Sprache zu identifizieren.
>>>>>>>> BEENDEN DES LAUFS (601a53dc-8a5d-4e19-8503-1517fe3c7634): Bedingung für Beendigungsnachricht auf Agent „ragproxyagent“ erfüllt
Großartig! Unser Assistent und unser RAG-Agent haben den zusätzlichen Kontext erfolgreich synthetisiert, um die Benutzeranfrage mit den derzeit von AutoGen unterstützten Programmiersprachen korrekt zu beantworten. Sie können dies als einen Gruppenchat zwischen Bearbeitern denken, die Informationen austauschen. Dieses Beispiel ist eine einfache Demonstration der lokalen Implementierung von Agentic RAG mit AutoGen.
pip install open-webui
open-webui serve
Für die Websuche nutzen wir die integrierten Websuchfunktionen in Open WebUI.
Open WebUI unterstützt eine Reihe von Suchanbietern. Im Großen und Ganzen können Sie entweder einen API-Dienst (Programmierschnittstelle) eines Drittanbieters verwenden, für den Sie einen API-Schlüssel benötigen, oder Sie können lokal einen SearXNG Docker Container einrichten. In beiden Fällen müssen Sie Ihren Suchanbieter in der Open WebUI-Konsole konfigurieren.
Diese Konfiguration, entweder ein Zeiger auf SearXNG oder die Eingabe Ihres API-Schlüssels, befindet sich unter Admin Panel > Einstellungen > Websuche in der Open WebUI-Konsole.
Weitere Informationen finden Sie in den Anweisungen in der Open WebUI-Dokumentation.
1. Gehen Sie in Ihrem Browser zu http://localhost:8080/, um auf die Open Web-Benutzeroberfläche zuzugreifen. Wenn Sie die Open WebUI-Oberfläche zum ersten Mal öffnen, registrieren Sie einen Benutzernamen und ein Passwort. Diese Informationen werden vollständig lokal auf Ihrem Computer gespeichert.
2. Nach der Protokollierung klicken Sie auf das Symbol unten links, wo sich Ihr Benutzername befindet. Klicken Sie im Menü auf Admin-Bereich.
3. Klicken Sie auf der Registerkarte Funktionen auf + , um eine neue Funktion hinzuzufügen.
4. Geben Sie der Funktion einen Namen, z. B. „Granite RAG Agent“, und eine Beschreibung
5. Fügen Sie das Python-Skript granite_autogen_rag.py in das dafür vorgesehene Textfenster ein und ersetzen Sie dabei alle vorhandenen Inhalte.
6. Klicken Sie unten auf dem Bildschirm auf Speichern.
7. Stellen Sie auf der Seite Funktionen sicher, dass der Agent auf "Aktiviert" umgeschaltet ist.
8. Klicken Sie anschließend auf das Zahnradsymbol neben dem Aktivierungsschalter, um Einstellungen wie das Inferenz-Endgerät, den SearXNG-Endpunkt oder die Modell-ID anzupassen.
Jetzt wird Ihr brandneuer AutoGen-Agent als Modell in der Open WebUI-Oberfläche angezeigt. Sie können ihn auswählen und ihm Benutzerabfragen zur Verfügung stellen.
Um einen Suchanbieter (z. B. SearXNG) einzurichten, folgen Sie dieser Anleitung.
Die Konfigurationsparameter lauten wie folgt:
| Parameter | Beschreibung | Standardwert |
|---|---|---|
| task_model_id | Primäres Modell für die Aufgabenausführung | granite3.2:8b |
| vision_model_id | Vision-Modell für die Bildanalyse | granite-vision3.2:2b |
| openai_api_url | API-Endpunkt für Modellaufrufe im OpenAI-Stil | http://localhost:11434 |
| openai_api_key | API-Schlüssel für die Authentifizierung | ollama |
| vision_api_url | Endgerät für visionsbezogene Aufgaben | http://localhost:11434 |
| model_temperature | Steuert die Zufälligkeit der Antwort | 0 |
| max_plan_steps | Maximale Schritte bei der Agentenplanung | 6 |
Hinweis: Diese Parameter können über das Zahnradsymbol im Abschnitt „Funktionen“ des offenen WebUI-Adminpanels konfiguriert werden, nachdem die Funktion hinzugefügt wurde.
Der Granite Retrieval Agent führt AG2-basierte RAG durch, indem er lokale Dokumente und Webquellen abfragt, eine Multi-Agenten-Aufgabenplanung durchführt und eine adaptive Ausführung erzwingt. Starten Sie einen Chat und stellen Sie Ihrem Agentensystem eine Abfrage zu den bereitgestellten Dokumenten, um die RAG-Kette in Aktion zu sehen.
Eine Multi-Agenten-Einrichtung ermöglicht die Erstellung praktischer, verwendbarer Tools, indem sie das Beste aus mittelgroßen Open-Source-Modellen wie Granite 3.2 herausholt. Diese agentische RAG-Architektur, die vollständig mit Open-Source-Tools aufgebaut wurde, kann als Ausgangspunkt für die Entwicklung und Anpassung Ihrer Fragebeantworter-Agenten und KI-Algorithmen dienen. Sie kann auch außerhalb des üblichen Rahmens für eine Vielzahl von Anwendungsfallen eingesetzt werden. In diesem Tutorial hatten Sie die Möglichkeit, sich mit einfachen und komplexen Agentensystemen zu befassen und die Funktionen von AutoGen zu nutzen. Das Granite LLM wurde mit Ollama aufgerufen, was eine vollständig lokale Erkundung dieser Systeme ermöglichte. Als Nächste Schritte sollten Sie die Integration weiterer angepasster Tools in Ihr Agentensystem in Betracht ziehen.
Setzen Sie KI in Ihrem Unternehmen ein – mit branchenführendem Fachwissen im Bereich KI und dem Lösungsportfolio von IBM an Ihrer Seite.
Erfinden Sie kritische Workflows und Abläufe neu, indem Sie KI einsetzen, um Erfahrungen, Entscheidungsfindung in Echtzeit und den geschäftlichen Nutzen zu maximieren.
[1] Wu, Qingyun, et al. „AutoGen: Enabling Next-Gen LLM Anwendung VIA® Multi-Agent Conversation Framework.“ GitHub, 2023, github.com/microsoft/autogen.