A2A Python Beispiel: GitHub Agent

Ein intelligenter GitHub-Agent, der mit dem A2A (Agent2Agent) SDK erstellt wurde und GitHub-Repositories, aktuelle Updates, Commits und Projektaktivitäten mit natürlicher Sprache abfragen kann.
🏗️ Architektur
Dieses Projekt implementiert einen A2A-Server, der einen OpenAI-basierten Agent mit GitHub-API-Integration verwendet. Die Architektur besteht aus folgenden Schlüsselkomponenten:
Komponentenübersicht
- A2A Server (
__main__.py): Die Hauptserveranwendung, die HTTP-Anfragen verarbeitet und den Agent-Lebenszyklus verwaltet - OpenAI Agent Executor (
openai_agent_executor.py): Führt Agent-Aufgaben mit OpenRouter-API-Integration aus - GitHub Toolset (
github_toolset.py): Stellt GitHub-API-Tools für Repository-Operationen bereit - Agent Definition (
openai_agent.py): Definiert Agent-Fähigkeiten und System-Prompt
Architektur-Fluss
sequenceDiagram
participant Client as A2A Client
participant Server as A2A Server
participant Agent as OpenAI Agent
participant GitHub as GitHub API
participant OpenRouter as OpenRouter API
Note over Client,OpenRouter: A2A GitHub Agent Architektur
Client->>Server: HTTP-Anfrage<br/>(GitHub-Abfrage)
Server->>Agent: Anfrage verarbeiten<br/>(OpenAIAgentExecutor)
Agent->>OpenRouter: Chat-Completion senden<br/>(mit definierten Tools)
OpenRouter-->>Agent: Antwort mit Tool-Aufrufen
loop Tool-Ausführung
Agent->>GitHub: API-Aufruf<br/>(GitHubToolset)
GitHub-->>Agent: Repository/Commit-Daten
Agent->>OpenRouter: Tool-Ergebnisse senden
OpenRouter-->>Agent: Finale Antwort
end
Agent->>Server: Streaming-Antwort<br/>(TaskUpdater)
Server->>Client: HTTP-Antwort<br/>(formatierte Ergebnisse)
Note over Client: Benutzer sieht KI-formatierte<br/>GitHub-Daten
🔧 Schlüsselmodul-Logik
1. Hauptserver (__main__.py)
- Initialisiert A2A-Server mit Starlette-Framework
- Erstellt eine
AgentCard, die Agent-Fähigkeiten und -Kompetenzen definiert - Konfiguriert OpenAI-Agent-Executor mit GitHub-Tools
- Startet HTTP-Server auf angegebenem Host und Port
2. GitHub Toolset (github_toolset.py)
Stellt drei Haupt-GitHub-API-Funktionen bereit:
get_user_repositories(): Ruft aktuelle Repositories für einen Benutzer abget_recent_commits(): Ruft aktuelle Commits für ein spezifisches Repository absearch_repositories(): Sucht nach Repositories mit aktueller Aktivität
Alle Funktionen beinhalten Fehlerbehandlung und unterstützen optionale Parameter für Filterung.
3. OpenAI Agent Executor (openai_agent_executor.py)
- Verwaltet Konversationsfluss mit OpenRouter-API
- Konvertiert GitHub-Tools in OpenAI-Funktionsaufruf-Format
- Behandelt Tool-Ausführung und Antwort-Streaming
- Implementiert iterative Konversation mit Tool-Aufrufen
4. Agent Definition (openai_agent.py)
- Erstellt Agent mit System-Prompt und verfügbaren Tools
- Definiert Agent-Verhalten für GitHub-bezogene Anfragen
- Konfiguriert Agent zur Bereitstellung hilfreicher Repository-Informationen
📋 Voraussetzungen
- Python 3.10 oder höher
- UV - Python-Paketmanager
- OpenRouter API-Schlüssel - Für KI-Fähigkeiten
- GitHub Personal Access Token (optional, aber empfohlen für höhere Rate-Limits)
🚀 Schritt-für-Schritt-Setup und -Ausführung
Schritt 1: Klonen und Umgebung einrichten
# Repository klonen
git clone https://github.com/sing1ee/a2a-py-github-agent.git
cd a2a-py-github-agent
# Virtuelle Umgebung erstellen
uv venv
source .venv/bin/activate # Unter Windows: .venv\Scripts\activate
Schritt 2: Abhängigkeiten installieren
# Abhängigkeiten mit UV installieren
uv sync
Schritt 3: Umgebungsvariablen konfigurieren
Erstellen Sie eine .env-Datei im Projektroot:
# OpenRouter API-Schlüssel (erforderlich)
echo "OPENROUTER_API_KEY=your_openrouter_api_key_here" > .env
# GitHub Personal Access Token (optional aber empfohlen)
echo "GITHUB_TOKEN=your_github_personal_access_token_here" >> .env
Hinweis: Das GitHub-Token ist optional. Ohne es verwendet der Agent unauthentifizierten Zugriff mit begrenzten Rate-Limits (60 Anfragen pro Stunde vs. 5000 mit Token).
Schritt 4: A2A-Server ausführen
# Virtuelle Umgebung aktivieren
source .venv/bin/activate
# Server ausführen
uv run .
Der Server startet standardmäßig auf http://localhost:10007.
🧪 Client-Tests
Option 1: A2A Movie Agent Client verwenden
Sie können den GitHub-Agent mit dem A2A Movie Agent Client testen:
# A2A Movie Agent Client klonen
git clone https://github.com/sing1ee/a2a-js-movie-agent.git
cd a2a-js-movie-agent
# Abhängigkeiten installieren
bun install
# Mit Ihrem GitHub-Agent verbinden
bun cli http://localhost:10007
Dies startet eine interaktive CLI, die sich mit Ihrem GitHub-Agent-Server verbindet.
Option 2: Direkte HTTP-Anfragen verwenden
Sie können auch mit curl oder jedem HTTP-Client testen:
# Beispiel: Test mit einfacher Anfrage
curl -X POST http://localhost:10007/ \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"message": {
"role": "user",
"parts": [
{
"kind": "text",
"text": "Zeige aktuelle Commits für das Repository 'facebook/react'"
}
],
"messageId": "9229e770-767c-417b-a0b0-f0741243c589"
},
"metadata": {}
}
}'
💡 Beispiel-Anfragen
Der GitHub-Agent kann Anfragen wie diese verarbeiten:
- Aktuelle Commits: "Zeige aktuelle Commits für das Repository 'facebook/react'"
- Repository-Suche: "Suche nach beliebten Python-Repositories mit aktueller Aktivität"
- Projektaktivität: "Was sind die neuesten Updates in Machine-Learning-Repositories?"
🔑 GitHub-Token-Konfiguration
Um ein GitHub Personal Access Token für bessere Rate-Limits zu erstellen:
- Gehen Sie zu GitHub-Einstellungen > Token
- Klicken Sie auf "Neues Token generieren (klassisch)"
- Wählen Sie folgende Bereiche:
repo- Repository-Zugriffuser- Benutzerinformations-Zugriff
- Kopieren Sie das Token und fügen Sie es zu Ihrer
.env-Datei hinzu
🛠️ Konfigurationsoptionen
Server-Konfiguration
Sie können den Server mit Befehlszeilenoptionen anpassen:
# Benutzerdefinierter Host und Port
uv run . --host=0.0.0.0 --port=10007
Umgebungsvariablen
OPENROUTER_API_KEY: Ihr OpenRouter-API-Schlüssel (erforderlich)GITHUB_TOKEN: GitHub Personal Access Token (optional)
📖 API-Dokumentation
Verfügbare Tools
-
get_user_repositories
- Benutzer-Repositories mit aktuellen Updates abrufen
- Parameter:
username(optional),days(Standard: 30),limit(Standard: 10)
-
get_recent_commits
- Aktuelle Commits für ein Repository abrufen
- Parameter:
repo_name(erforderlich),days(Standard: 7),limit(Standard: 10)
-
search_repositories
- Repositories mit aktueller Aktivität suchen
- Parameter:
query(erforderlich),sort(Standard: 'updated'),limit(Standard: 10)
📄 Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die LICENSE-Datei für Details.
🔗 Verwandte Projekte
- A2A SDK - Die zugrunde liegende A2A-Protokoll-Implementierung
- A2A Movie Agent - Ein Filminfo-Agent, der mit dem A2A-Protokoll erstellt wurde
Related Articles
Explore more content related to this topic
Building an A2A Currency Agent with LangGraph
This guide provides a detailed explanation of how to build an A2A-compliant agent using LangGraph and the Google Gemini model. We'll walk through the Currency Agent example from the A2A Python SDK, explaining each component, the flow of data, and how the A2A protocol facilitates agent interactions.
A2A Samples: Hello World Agent
A comprehensive step-by-step guide to building a Hello World agent with A2A Python SDK. Features detailed implementation of HelloWorldAgent, HelloWorldAgentExecutor, and A2AStarletteApplication components, complete with UV environment setup, dependency management, API endpoints, authentication, and testing instructions. Perfect for developers getting started with AI-powered agent services and A2A framework.
Implementing CurrencyAgent with A2A Python SDK
A step-by-step guide to building a currency conversion agent with A2A Python SDK. Features detailed implementation of CurrencyAgent, AgentExecutor, and AgentServer components, complete with environment setup, testing, and deployment instructions. Perfect for developers looking to create AI-powered currency conversion services.
Google A2A Python SDK Tutorial
A comprehensive guide to building A2A agents with Python, covering environment setup, agent implementation, server deployment, and advanced features like LLM integration and streaming.
Python A2A Tutorial 20250513
Learn how to build and interact with A2A agents using Python. This comprehensive tutorial covers everything from basic concepts to advanced features like streaming and multi-turn conversations with Gemini AI.