
Projektübersicht
Dies ist ein Zahlenratespiel-Beispiel basierend auf dem Agent2Agent (A2A) Protocol, das zeigt, wie drei leichtgewichtige A2A Agents zusammenarbeiten, um ein klassisches Zahlenratespiel zu vervollständigen. Dieses Projekt dient als praktisches Einführungsbeispiel für das A2A Protocol und Python SDK mit folgenden Eigenschaften:
- Keine LLM-Abhängigkeit: Benötigt keine API-Schlüssel oder große Sprachmodelle
- Lokale Ausführung: Alle drei Agents laufen lokal ohne entfernte Server
- Einfache Einrichtung: Minimale externe Abhängigkeiten
- Kernkonzept-Demonstration: Zeigt die Kernfunktionalität des A2A Protocols
Agent-Rollenbeschreibung
Agent | Rolle | Aufgaben |
---|---|---|
AgentAlice | Evaluator | Wählt eine geheime Zahl von 1-100, bewertet Vermutungen und gibt Hinweise |
AgentBob | CLI Frontend | Leitet Spielervermutungen weiter, zeigt Alices Hinweise an, interagiert mit Carol |
AgentCarol | Visualizer | Generiert Textvisualisierung der Vermutungshistorie, mischt Historie auf Anfrage zufällig |
Detaillierte Code-Datei-Analyse
1. Konfigurationsdatei (config.py
)
AGENT_ALICE_PORT = 8001
AGENT_BOB_PORT = 8002
AGENT_CAROL_PORT = 8003
Zweck: Verwaltet Port-Konfigurationen zentral, um Port-Konflikte zu vermeiden. Alle Agents importieren Konfigurationen aus diesem Modul und gewährleisten Konsistenz in der Port-Zuweisung.
2. AgentAlice (agent_Alice.py
)
Hauptfunktionen:
- Wählt beim Start zufällig eine geheime Zahl von 1-100
- Implementiert die
NumberGuessExecutor
-Klasse zur Behandlung der Vermutungsbewertung - Verarbeitet Nachrichten über das
AgentExecutor
-Interface des A2A SDK
Hauptmethoden:
execute()
: Verarbeitet neu empfangene Nachrichten, ruftprocess_guess()
zur Bewertung von Vermutungen aufcancel()
: Lehnt spezifizierte Tasks ab
Antworttypen:
"Go higher"
- Vermutung ist niedriger als die geheime Zahl"Go lower"
- Vermutung ist höher als die geheime Zahl"correct! attempts: <n>"
- Vermutung ist korrekt, zeigt Anzahl der Versuche
3. AgentBob (agent_Bob.py
)
Hauptfunktionen:
- Fungiert als CLI-Frontend, verbindet Spieler mit anderen Agents
- Verwaltet Spielstatus und Historienaufzeichnungen
- Interagiert mit Carol zum Sortieren von Historienaufzeichnungen
Hauptmethoden:
_handle_guess()
: Leitet Vermutungen an Alice weiter und gibt Feedback zurück_negotiate_sorted_history()
: Verhandelt mit Carol, bis die Historie sortiert ist_visualise_history()
: Fordert formatierte Historienvisualisierung an und druckt sieplay_game()
: Führt interaktive CLI-Schleife aus
Verhandlungslogik:
- Sendet anfängliche Misch-Anfrage an Carol
- Überprüft, ob die zurückgegebene Liste sortiert ist
- Sendet "Try again", wenn nicht sortiert, um Verhandlung fortzusetzen
- Sendet "Well done!", wenn sortiert, um Verhandlung abzuschließen
4. AgentCarol (agent_Carol.py
)
Hauptfunktionen:
- Visualisiert Vermutungshistorienaufzeichnungen
- Mischt Historienaufzeichnungslisten zufällig
- Unterstützt Multi-Turn-Dialoge und Task-Kontext
Hauptmethoden:
_handle_initial()
: Behandelt anfängliche Nachrichten in neuen Gesprächen_handle_followup()
: Behandelt Follow-up-Nachrichten, die auf bestehende Tasks verweisenexecute()
: Dispatcht an entsprechende Handler basierend auf Nachrichtentyp
Skill-Definitionen:
history_visualiser
: Generiert formatierte Vermutungshistorien-Zusammenfassunghistory_shuffler
: Mischt Reihenfolge der Historienaufzeichnungseinträge zufällig
5. Utility-Module (utils/
)
game_logic.py
Hauptfunktionen:
process_guess()
: Bewertet einzelne Vermutungen und gibt Feedback zurückbuild_visualisation()
: Erstellt menschenlesbare Historienaufzeichnungsdarstellungis_sorted_history()
: Überprüft, ob Historie nach Vermutungswerten sortiert istprocess_history_payload()
: Verarbeitet historienbezogene Anfragen
protocol_wrappers.py
Hauptfunktionen:
send_text()
: Sendet Textnachrichten synchron an Ziel-Agentssend_followup()
: Sendet Follow-up-Nachrichten, behält Gesprächskontext beicancel_task()
: Bricht Tasks auf entfernten Agents abextract_text()
: Extrahiert Klartext aus Task- oder Message-Objekten
server.py
Hauptfunktionen:
run_agent_blocking()
: Startet blockierenden Agent-Server- Verwendet Starlette + Uvicorn als HTTP-Server
System-Architektur-Flussdiagramm
graph TD
A[Player] --> B[AgentBob CLI]
B --> C[AgentAlice Evaluator]
B --> D[AgentCarol Visualizer]
C --> E[Secret Number 1-100]
C --> F[Evaluate Guess]
F --> G{Guess Result}
G -->|Too Low| H[Return Go higher]
G -->|Too High| I[Return Go lower]
G -->|Correct| J[Return correct! attempts: N]
B --> K[Game History]
K --> L[Send to Carol for Visualization]
L --> M[Generate Formatted Table]
M --> N[Display to Player]
B --> O[Negotiate Sorting]
O --> P[Send Shuffle Request]
P --> Q[Carol Random Shuffle]
Q --> R{Check if Sorted}
R -->|Not Sorted| S[Send Try again]
R -->|Sorted| T[Send Well done!]
S --> Q
T --> U[Update History]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#e8f5e8
style D fill:#fff3e0
style E fill:#ffebee
style F fill:#e8f5e8
style K fill:#f3e5f5
style O fill:#f3e5f5
Nachrichtenfluss-Diagramm
sequenceDiagram
participant Player as Player
participant Bob as AgentBob
participant Alice as AgentAlice
participant Carol as AgentCarol
Note over Player,Carol: Game Start
Player->>Bob: Input guess number
Bob->>Alice: Send guess
Alice->>Bob: Return evaluation result
Bob->>Player: Display hint
Note over Player,Carol: Record History
Bob->>Bob: Add to game history
Note over Player,Carol: Visualize History
Bob->>Carol: Send history records
Carol->>Bob: Return formatted table
Bob->>Player: Display history visualization
Note over Player,Carol: Negotiate Sorting
Bob->>Carol: Send shuffle request
Carol->>Bob: Return shuffled list
Bob->>Bob: Check if sorted
alt Not Sorted
Bob->>Carol: Send "Try again"
Carol->>Bob: Shuffle list again
Bob->>Bob: Recheck sorting
else Sorted
Bob->>Carol: Send "Well done!"
Carol->>Bob: Complete task
Bob->>Bob: Update history
end
Note over Player,Carol: Continue Game or End
alt Guess Correct
Bob->>Player: Display victory message
else Guess Incorrect
Player->>Bob: Continue inputting guesses
end
Projekt mit uv ausführen
1. Umgebungseinrichtung
Stellen Sie sicher, dass uv installiert ist:
# uv installieren (falls noch nicht installiert)
curl -LsSf https://astral.sh/uv/install.sh | sh
2. Projekteinrichtung
# Projekt klonen
git clone https://github.com/a2aproject/a2a-samples.git
cd a2a-samples/samples/python/agents/number_guessing_game
# Virtuelle Umgebung mit uv erstellen und Abhängigkeiten installieren
uv venv
source .venv/bin/activate # Linux/macOS
# oder .venv\Scripts\activate # Windows
# Abhängigkeiten installieren
uv pip install -r requirements.txt
3. Spiel ausführen
Öffnen Sie drei Terminal-Fenster und aktivieren Sie die virtuelle Umgebung in jedem:
# Terminal 1 - Alice (Evaluator) starten
uv run python agent_Alice.py
# Terminal 2 - Carol (Visualizer) starten
uv run python agent_Carol.py
# Terminal 3 - Bob (CLI Frontend) starten
uv run python agent_Bob.py
4. Gameplay
In Bobs Terminal fordert das Spiel Sie auf, Zahlen zwischen 1-100 einzugeben. Raten Sie weiter basierend auf Alices Feedback, bis Sie die richtige Vermutung treffen.
Gameplay-Beispiel:
Guess the number AgentAlice chose (1-100)!
Your guess: 50
Alice says: Go higher
=== Carol's visualisation (sorted) ===
Guesses so far:
1. 50 -> Go higher
============================
Your guess: 75
Alice says: Go lower
=== Carol's visualisation (sorted) ===
Guesses so far:
1. 50 -> Go higher
2. 75 -> Go lower
============================
Your guess: 62
Alice says: correct! attempts: 3
You won! Exiting…
Projektzusammenfassung
Technische Eigenschaften
-
A2A Protocol Praxis:
- Demonstriert Kernkonzepte der Inter-Agent-Kommunikation
- Implementiert Nachrichtenversendung, Task-Management und Statusverfolgung
- Zeigt Multi-Turn-Dialog und Task-Kontext-Mechanismen
-
Modulares Design:
- Klare Trennung der Verantwortlichkeiten: Alice behandelt Bewertung, Bob Interaktion, Carol Visualisierung
- Wiederverwendbare Utility-Module für einfache Erweiterung und Wartung
-
Fehlerbehandlung:
- Eingabevalidierung und Fehleraufforderungen
- Netzwerkkommunikations-Ausnahmebehandlung
- Task-Abbruch und Timeout-Mechanismen
Lernwert
- A2A Einführung: Bietet einfaches, verständliches Beispiel zum Verstehen des A2A Protocols
- Agent-Kollaboration: Zeigt, wie mehrere Agents zusammenarbeiten, um komplexe Aufgaben zu erfüllen
- Asynchrone Programmierung: Demonstriert asynchrone Nachrichtenverarbeitung und Statusmanagement
- Protocol-Design: Zeigt, wie klare Agent-Interfaces und Skill-Definitionen entworfen werden
Erweiterungsmöglichkeiten
- Mehr Agents hinzufügen: Neue Agent-Rollen wie statistische Analysten, Strategieberater usw. einführen
- Spiellogik erweitern: Komplexere Spielregeln wie Zeitlimits, Bewertungssysteme usw. hinzufügen
- Netzwerk-Deployment: Agents auf verschiedenen Maschinen bereitstellen, verteilte Agent-Systeme demonstrieren
- LLM-Integration: AI-Agents hinzufügen, die intelligente Hinweise und Strategievorschläge bieten
Sicherheitsüberlegungen
Wie in der Projektdokumentation erwähnt, sollten in Produktionsumgebungen:
- Externe Agents als nicht vertrauenswürdige Entitäten behandelt werden
- Alle empfangenen Daten Validierung und Bereinigung erfordern
- Angemessene Sicherheitsmaßnahmen wie Eingabevalidierung und Anmeldedatenschutz implementiert werden
Dieses Beispiel bietet Entwicklern eine sichere, kontrollierte Umgebung zum Lernen und Experimentieren mit dem A2A Protocol, während es grundlegende Muster für den Aufbau verteilter Agent-Systeme demonstriert.
Verwandte Fallstudien
🚀 Einsteiger-Beispiele
-
A2A Samples: Hello World Agent
- Vollständiger Leitfaden zum Erstellen eines Hello World Agents mit dem A2A Python SDK
- Enthält detaillierte Umgebungseinrichtung und Testanweisungen
-
A2A SDK Currency Agent Tutorial
- Schritt-für-Schritt-Anleitung zum Erstellen eines Währungsumrechnungs-Agents
- Integriert OpenRouter AI-Dienste
🐍 Python-Implementierungsfälle
-
A2A Python Example: GitHub Agent
- Erstellen und Verbinden eines GitHub-Agents mit a2a-python
- Implementiert Code-Repository-Informationsabfragefunktionalität
-
A2A Example: Travel Planning Assistant
- Reiseplanungs-Agent-Implementierung, die OpenRouter integriert
- Erstellt mit Python a2a-sdk
-
A2A SDK Python Praktischer Leitfaden
- Tiefgreifendes A2A SDK Python-Entwicklungs-Tutorial
- Enthält Workflow-Diagramme und praktische Code-Beispiele
🟨 JavaScript/TypeScript-Fälle
-
- Integration mit TMDB API und OpenRouter AI
- Express.js Server-Implementierung
-
A2A JavaScript SDK Vollständiges Tutorial
- TypeScript typsichere Implementierung
- Express.js Server SDK und Streaming-Verarbeitung
☕ Java-Implementierungsfälle
- A2A Java Example
- Maven Multi-Modul-Architektur
- Spring Boot Server SDK-Implementierung
- AI-Übersetzungsdienst-Beispiel
🔧 Framework-Integrationsfälle
-
A2A Agents mit ADK implementieren: Vollständiger Entwicklungsleitfaden
- Implementierung von A2A intelligenten Agent-Systemen mit dem Google ADK Framework
- Deckt vollständigen Entwicklungsworkflow ab
-
A2A ADK Expense Reimbursement Agent
- Intelligenter Spesenerstattungs-Agent basierend auf Google ADK und A2A Protocol
- Generiert automatisch Formular-Ergänzungsinformationen
-
A2A CrewAI Analysis Chart Agent
- Erstellen von Datenanalyse-Agents mit dem CrewAI Framework
- Integriert Diagrammgenerierung und Datenvisualisierungsfunktionalität
🛠️ Entwicklungstools
-
A2A Inspector: Agent2Agent Kommunikations-Debugging erklärt
- Leistungsstarkes webbasiertes Debugging-Tool
- Echtzeit-Inspektion von Agent-Karten und JSON-RPC-Kommunikation
-
A2A .NET SDK Umfassende Dokumentation
- .NET-Bibliothek, die Google A2A Protocol v0.2.1 implementiert
- Geeignet für ASP.NET Core-Anwendungen
📚 Protocol-Verständnis und Best Practices
-
A2A Protocol verstehen: Umfassender Leitfaden
- Umfassender Leitfaden zum Verstehen des A2A Protocols
- Kernkonzepte und AI-Agent-Interoperabilitätsvorteile
-
A2A Protocol Spezifikation (Python)
- Umfassender Leitfaden zu Python-Implementierungsspezifikationen
- Deckt Kernfunktionalität einschließlich Agent-Karten, Messaging, Task-Management ab
-
2025 A2A Protocol Vollständiger Leitfaden
- Umfassende Einführung und praktischer Leitfaden zum A2A Protocol
- Vollständige Abdeckung von Grundkonzepten bis zu fortgeschrittenen Anwendungen
🌟 Ökosystem-Ressourcen
-
- Erkundung des vollständigen Google A2A Protocol-Ökosystems
- Enthält offizielle Dokumentation, Community-Implementierungen, Beispielprojekte und Integrationsleitfäden
-
- Erkundung verschiedener Open-Source-Implementierungen des A2A Protocols
- Enthält Java, TypeScript, Go, Rust, Python und mehr
Durch diese Fallstudien können Sie tiefere Einblicke in A2A Protocol-Anwendungen in verschiedenen Szenarien gewinnen, von einfachen Hello World-Beispielen bis hin zu komplexen Multi-Agent-Systemen, die reiche Referenzressourcen für Ihre A2A-Entwicklungsreise bieten.