Das A2A- oder Agent2Agent-Protokoll ist ein offener Standard, der eine strukturierte Kommunikation zwischen KI-Agenten, Clients und Tools ermöglicht. In diesem Tutorial können Sie ein Agentensystem erstellen, in dem ein Chat-Client Benutzeranfragen verarbeitet und an einen KI-Agenten sendet, der auf einem A2A-kompatiblen Server läuft.
Die meisten Anwendungen der agentischen KI implementieren benutzerdefinierte Kommunikation zwischen Komponenten (zum Beispiel ChatChain von ChatDev), was es schwierig macht, denselben Agenten in verschiedenen Anwendungen wiederzuverwenden oder externe Tools zu integrieren. Diese mangelnde Standardisierung verhindert Interoperabilität und schränkt die Entwicklung eines breiteren Agenten-Ökosystems ein.
A2A löst diese Einschränkung, indem es die Kommunikationsschicht von der Agentenlogik durch ein standardisiertes Protokoll trennt, das auf HTTP, JSON-RPC 2.0 und Server-Sent Events (SSE) basiert. Dank dieser Entkopplung können Agenten mit anderen Agenten zusammenarbeiten, Client-Anfragen bearbeiten und auf externe Tools zugreifen, ohne dass ein benutzerdefinierter Integrationscode erforderlich ist.
A2A unterstützt dezentrale Architekturen, die es Teams ermöglichen, ihre KI-Systeme schrittweise weiterzuentwickeln, ohne den Client-Code zu beschädigen. Teams können Tools aktualisieren, Modelle austauschen oder das Verhalten des Agenten ändern und gleichzeitig eine konstante Schnittstelle für komplexe Workflows beibehalten.
Agenten tauschen Informationen in Nachrichten aus, die im JSON-RPC-Format strukturiert sind und Metadaten enthalten, die Interaktionen der Agenten durch Klarheit und Konstanz bereichern. Jeder A2A-Server stellt eine AgentCard an einem bekannten Endpunkt (.well-known/agent-card.json) bereit, die die Funktionen des Agenten als strukturierte JSON-Daten beschreibt. So können Clients dynamisch herausfinden, was ein Agent tun kann, ähnlich wie die API-Dokumentation verfügbare Endpunkte beschreibt.
Befolgen Sie die Schritte, um ein A2A-Agentensystem zu erstellen und auszuführen, und sammeln Sie praktische Erfahrungen mit:
Hinweis: Wenn Sie mit ACP (Agent Communication Protocol) gearbeitet haben, können Sie Ähnlichkeiten erkennen. ACP, ursprünglich von IBMs BeeAI entwickelt, hat sich mit Google A2A zur Linux Foundation zusammengeschlossen. BeeAI verwendet jetzt A2A-Adapter (A2AServer und A2AAgent), um eine A2A-konforme Kommunikation zu ermöglichen. A2A arbeitet auch mit MCP (Model Context Protocol) zusammen, um Agenten die Interaktion mit Datenquellen und Tools zu ermöglichen und so interoperable Agenten-Ökosysteme zu schaffen.
Dieses Projekt zeigt, wie A2A eine saubere Trennung zwischen der Client-Schnittstelle und der Agentenlogik ermöglicht.
Der Workflow folgt dieser Abfolge:
Dieser Workflow zeigt ein wiederverwendbares Muster, das für Anwendungsfälle geeignet ist, die eine strukturierte Kommunikation zwischen Client und Agenten erfordern, wie z. B. Chatbots, Systeme zur Automatisierung, Kundensupport und Forschungsassistenten mit Tool-Orchestrierung.
Dieses Projekt verwendet einen einzigen KI-Agenten mit mehreren Toolfunktionen. In komplexeren Systemen können Sie mehrere spezialisierte Agenten bereitstellen, die sich jeweils auf bestimmte Bereiche oder Aufgaben konzentrieren.
RequirementAgent (BeeAI): Ein deklarativer Agent, der dynamisch mehrere Tools auf der Grundlage der Benutzeranfrage auswählt und koordiniert. Er verwendet:
Der A2A-Server (
2. Agenteneinrichtung: Erstellt einen RequirementAgent mit Tools und Speicher, um den Lebenszyklus des Agenten zu verwalten
3. Serverkonfiguration: Exponiert den Agenten über A2A-kompatible HTTP-Endgeräte
Der Server stellt automatisch eine AgentCard unter /.well-known/agent-card.json zur Verfügung, die die Funktionen des Agenten beschreibt und hilft, die Agentenkonfigurationen zu validieren.
Der A2A-Client (
Verbindungseinrichtung: Erstellt einen A2A-Client-Adapter
Die
Nachrichtenaustausch: Sendet asynchrone Prompts und verarbeitet Antworten:
Die
Hier sind die Systemanforderungen zum Ausführen dieses Projekts:
Bevor Sie loslegen, finden Sie hier einen Überblick über die für dieses Projekt benötigten Tools:
Dieses Projekt verwendet Ollama als Modellanbieter für den KI-Agenten. Befolgen Sie diese Schritte, um Ollama einzurichten:
Hinweis: Sie können jedes mit Ollama kompatible Modell verwenden, indem Sie die
Um dieses Projekt auszuführen, klonen Sie das GitHub-Repository, indem Sie https://github.com/IBM/ibmdotcom-tutorials.git als HTTPS-URL verwenden. Detaillierte Schritte zum Klonen eines Repository finden Sie in der GitHub-Dokumentation.
Dieses Tutorial befindet sich im Projektverzeichnis des Repos..
Navigieren Sie in einem Terminal zum Verzeichnis dieses Tutorials:
Für dieses Projekt müssen zwei separate Python-Skripte gleichzeitig ausgeführt werden, eines für den Server und das andere für den Client. Sie müssen zwei Terminalfenster oder Registerkarten öffnen.
Lassen Sie Ihr aktuelles Terminal geöffnet, öffnen Sie dann ein zweites Terminal und stellen Sie sicher, dass sich beide im richtigen Projektverzeichnis befinden (das
Verwenden Sie ein IDE?
Wenn Sie ein IDE wie Visual Studio Code verwenden, können Sie die Funktion „Split Terminal“ verwenden, um mehrere Terminals nebeneinander zu verwalten.
Andernfalls öffnen Sie zwei eigenständige Terminalfenster und navigieren jeweils zum Projektverzeichnis.
Virtuelle Umgebungen helfen dabei, dass Abhängigkeiten getrennt und gewartet bleiben. Damit die Server- und Clientabhängigkeiten getrennt bleiben, erstellen Sie für jede Komponente eine virtuelle Umgebung.
Für den Server:
Navigieren Sie zum
Erstellen Sie eine virtuelle Umgebung mit Python 3.11:
Aktivieren der virtuellen Umgebung:
Hinweis für Windows-Benutzer: Verwenden Sie venv\Scripts\activate, um die virtuelle Umgebung zu aktivieren.
Für den Client:
Navigieren Sie zum
Erstellen und Aktivieren einer virtuellen Umgebung:
Installieren Sie die erforderlichen Abhängigkeiten für jede Komponente, indem Sie den folgenden Code in jedem Terminal ausführen:
Die Ausführung erfolgt
Starten Sie im ersten Terminal den A2A-Agentenserver:
Das sollten Sie sehen:
Der Server überwacht nun eingehende Anforderungen von der Client-Anwendung und ist bereit, die Kommunikation zwischen den Agenten zu unterstützen.
Starten Sie im anderen Terminal den A2A-Client:
Dies sollte Sie zu einer Eingabe auffordern:
Geben Sie eine Nachricht in das Client-Terminal ein und klicken Sie auf
Im Server-Terminal können Sie A2A-Protokolle sehen, die die Kommunikation mit Push-Benachrichtigungen anzeigen:
Die erste Anfrage ruft die AgentCard ab, die die Funktionen des Agenten beschreibt. Die zweite Anfrage sendet Ihre Nachricht als
Hinweis: Die Ausgaben von LLMs sind probabilistisch und können jedes Mal, wenn Sie den Workflow ausführen, variieren, selbst bei gleicher Eingabe.
Experimentieren Sie mit verschiedenen Arten von Abfragen, um die verschiedenen Tools des Agenten zu testen:
Navigieren Sie in Ihrem Browser zu https://0.0.0.0:9999/.well-known/agent-card.json, um
In diesem JSON-Dokument wird Folgendes beschrieben:
Diese AgentCard ermöglicht es jedem A2A-kompatiblen Client, den Agenten zu erkennen und mit ihm zu interagieren, ohne zuvor Kenntnisse der Implementierungsdetails zu haben.
In diesem Tutorial haben Sie ein Chat-System anhand eines A2A-Beschwerdeservers erstellt, der eine strukturierte Schnittstelle für die Kommunikation zwischen Client und Agent bereitstellt. Durch die Trennung der Messaging-Ebene von der internen Logik ermöglicht das Agent2Agent-Protokoll es Teams, Agentenfunktionen zu aktualisieren, Modelle auszutauschen oder Toolkonfigurationen zu ändern, ohne den Client-Code zu ändern. Diese Flexibilität ist besonders wertvoll, wenn es darum geht, Aufgaben zu koordinieren, die Eingaben erfordern, den Aufgabenstatus zu verfolgen oder jeden Vorgang als eigenständige Arbeitseinheit zu behandeln.
A2A definiert ein gemeinsames Nachrichtenformat, das jede konforme Komponente verstehen kann, sodass autonome Agenten mit anderen Agenten zusammenarbeiten können. Die Protokollspezifikation definiert, wie Nachrichten im JSON-RPC-Format strukturiert und mit Metadaten angereichert werden, um Konstanz und Klarheit über Interaktionen hinweg zu gewährleisten.
Dieses Tutorial baut auf den grundlegenden Beispielen auf, die im A2A-Beispiel-Repository bereitgestellt werden. Weitere Informationen zur ursprünglichen Implementierung finden Sie in der Readme-Datei im Repository, die mehr Kontext und Beispiele für die Erstellung von A2A-konformen Systemen enthält.
Für die reale Bereitstellungen können A2A-Server Authentifizierungsmechanismen zur Sicherung von Agenten-Endgeräten implementieren, Server-sent-Ereignisse für Streaming-Antworten verwenden und skalieren, um Produktions-Workflows zu bearbeiten. Durch die Verfolgung dieses Workflows haben Sie gesehen, wie ein Befehlszeilenclient mit einem KI-Agenten über ein standardisiertes Protokoll interagiert, sodass der Agent mehrere Tools koordinieren und kontextbezogene Antworten bereitstellen kann. Dieser Ansatz zeigt die Effizienz von A2A, wartbare, skalierbare und flexible KI-Systeme zu ermöglichen.
Wenn Sie mit dem Experimentieren mit dem System fertig sind, führen Sie die folgenden Schritte aus, um alle laufenden Komponenten sauber herunterzufahren:
Drücken Sie in jedem Terminalfenster Strg+C, um den laufenden Vorgang zu stoppen.
Sie sollten eine Ausgabe wie die folgende sehen:
Wenn der Server nicht mehr reagiert oder beim Herunterfahren hängen bleibt, können Sie das Beenden erzwingen:
Finden Sie die Prozess-ID (PID):
Identifizieren Sie die PID des Vorgangs, den Sie stoppen möchten.
Beenden Sie den Vorgang:
Wiederholen Sie diesen Vorgang bei Bedarf für jeden Server.
Das war's. Sie haben erfolgreich ein vollständiges A2A-konformes Chatsystem ausgeführt.
Entwickeln, implementieren und verwalten Sie leistungsstarke KI-Assistenten und -Agenten, die Workflows und Prozesse mit generativer KI automatisieren.
Gestalten Sie die Zukunft Ihres Unternehmens mit KI-Lösungen, denen Sie vertrauen können.
Die KI-Services von IBM Consulting unterstützen Sie dabei, die Art und Weise, wie Unternehmen mit KI arbeiten, neu zu denken.