A2A Beispiel: Travel Planner OpenRouter

Dies ist eine Python-Implementierung, die dem A2A (Agent2Agent) Protokoll entspricht. Eine Reiseassistent-Demo, die auf Googles offiziellem a2a-python SDK und OpenAI Python SDK basiert. Es ist ein Reiseassistent, der den OpenAI-Modellspezifikationen entspricht und Ihnen Reiseplanungsdienste anbieten kann.
Quellcode
Projektarchitektur
Dieses Projekt demonstriert, wie man einen interoperablen Reiseplanungsagenten mit dem A2A-Protokoll erstellt, einschließlich der folgenden Kernkomponenten:
- Travel Planner Agent: Kern-Reiseassistent-Logik basierend auf OpenAI-kompatiblem Interface
- Agent Executor: A2A-Protokoll-Adapter, der Agent-Logik mit A2A-Server verbindet
- A2A Server: A2A-protokollkonformer Server, der standardisierte Inter-Agent-Kommunikationsschnittstelle bereitstellt
- Loop Client: Test-Client für die Interaktion mit dem A2A-Server
Workflow-Sequenzdiagramm
sequenceDiagram
participant Client
participant A2AServer
participant RequestHandler
participant Executor as TravelPlannerAgentExecutor
participant Agent as TravelPlannerAgent
participant LLM as OpenAI-Compatible LLM
Client->>A2AServer: Agent-Karte anfordern
A2AServer->>Client: Agent-Karte zurückgeben (Fähigkeiten, Kompetenzen)
Note over Client,A2AServer: Benutzer fragt Reiseplanung ab
Client->>A2AServer: message/sendStream (Streaming-Anfrage)
A2AServer->>RequestHandler: Streaming-Anfrage weiterleiten
RequestHandler->>Executor: execute(context, event_queue)
Executor->>Agent: stream(query)
Agent->>LLM: chat.completions.create(stream=True)
loop Streaming-Antwort-Verarbeitung
LLM-->>Agent: Streaming-Inhaltsfragment zurückgeben
Agent-->>Executor: yield {'content': chunk, 'done': False}
Executor-->>RequestHandler: TaskArtifactUpdateEvent
RequestHandler-->>A2AServer: SSE-Event senden
A2AServer-->>Client: Stream-Inhalt-Update
end
LLM-->>Agent: Finale Antwort abgeschlossen
Agent-->>Executor: yield {'content': '', 'done': True}
Executor-->>RequestHandler: Finales TaskArtifactUpdateEvent
RequestHandler-->>A2AServer: Finales SSE-Event
A2AServer-->>Client: Streaming-Antwort abgeschlossen
Haupt-Workflow
- Agent-Karten-Abruf: Client ruft zuerst Agent-Karte vom A2A-Server ab, um Agent-Fähigkeiten und -Kompetenzen zu verstehen
- Streaming-Anfrage-Verarbeitung: Client sendet Streaming-Nachrichtenanfrage mit Benutzerabfrage
- Agent-Ausführung: Agent-Executor verarbeitet die Anfrage und ruft Reiseplanungsagent-Kernlogik auf
- LLM-Interaktion: Agent führt Streaming-Gespräch mit OpenAI-kompatiblem LLM
- Echtzeit-Antwort: Streamt Antworten in Echtzeit über Server-Sent Events (SSE) an Client
Erste Schritte
- Umgebungsvariablen konfigurieren:
Kopieren Sie die Beispieldatei und konfigurieren Sie Ihre API-Anmeldedaten.
cp env.example .env
Bearbeiten Sie die .env-Datei mit Ihren tatsächlichen Werten:
# Erforderlich: Ihr API-Schlüssel für den KI-Modelldienst
API_KEY=your_actual_api_key_here
# Optional: Modellname (Standard: google/gemini-2.0-flash-001)
MODEL_NAME=google/gemini-2.0-flash-001
# Optional: Basis-URL für den API-Dienst
BASE_URL=https://openrouter.ai/api/v1
-
Abhängigkeiten installieren und Server starten:
uv venv source .venv/bin/activate uv sync uv run . -
Loop-Client in neuem Terminal ausführen:
source .venv/bin/activate uv run loop_client.py
Konfiguration
Die Anwendung verwendet Umgebungsvariablen für die Konfiguration:
API_KEY(erforderlich): Ihr API-Schlüssel für den KI-ModelldienstMODEL_NAME(optional): Der zu verwendende Modellname (Standard: "google/gemini-2.0-flash-001")BASE_URL(optional): Die Basis-URL für den API-Dienst (Standard: "https://openrouter.ai/api/v1")
Technische Merkmale
Aktuelle Implementierung
- ✅ A2A-Protokoll-Konformität: Vollständig konform mit Agent2Agent-Protokollspezifikation
- ✅ Streaming-Antwort: Unterstützt Echtzeit-Streaming-Inhaltsgenerierung
- ✅ OpenAI-kompatibel: Unterstützt jede OpenAI-kompatible API-Schnittstelle
- ✅ Modulares Design: Klare Trennung zwischen Agent-Logik und Protokoll-Anpassung
- ✅ Umgebungskonfiguration: Flexible Umgebungsvariablen-Konfiguration
Zukünftige Verbesserungspläne
Task-Status-Management-Verbesserung
Basierend auf Google A2A LangGraph Beispiel, geplant folgende Features hinzuzufügen:
- 🔄 Task-Lebenszyklus-Management: Vollständige Task-Status-Verfolgung implementieren (eingereicht → arbeitend → abgeschlossen/fehlgeschlagen)
- 🔄 Multi-Turn-Gesprächsunterstützung:
input_required-Status hinzufügen, um komplexe Reiseplanungsszenarien zu unterstützen, die Benutzerklärung erfordern - 🔄 Task-Persistenz: Task-Status-Persistenz für langfristige Planungsaufgaben implementieren
- 🔄 Verbesserte Fehlerbehandlung: Detailliertere Fehlerzustände und Wiederherstellungsmechanismen
- 🔄 Task-Stornierung: Stornierung laufender Tasks unterstützen
Status-Management-Beispiel
# Zukünftiges Status-Management-Implementierungsbeispiel
class TravelPlannerTaskManager:
async def handle_complex_query(self, query: str, context: RequestContext):
# Erkennen, ob mehr Informationen benötigt werden
if self.needs_clarification(query):
return TaskStatus(
state=TaskState.input_required,
message="Mehr Informationen benötigt: Bitte geben Sie spezifisches Ziel, Daten und Budgetbereich an"
)
# Komplexe mehrstufige Planung ausführen
task_id = await self.create_long_running_task(query)
return TaskStatus(
state=TaskState.working,
taskId=task_id,
message="Detaillierten Reiseplan erstellen..."
)
Geplante Feature-Ergänzungen
- 📋 Strukturierte Datenunterstützung: DataPart-Unterstützung für formularbasierte Reisepräferenz-Sammlung hinzufügen
- 🖼️ Multimedia-Unterstützung: FilePart für Generierung und Verarbeitung von Reisebildern, Karten usw. unterstützen
- 🔍 Tool-Integration: Externe APIs (Wetter, Flüge, Hotels usw.) als Tool-Aufrufe integrieren
- 🌐 Mehrsprachige Unterstützung: Mehrsprachige Reiseplanungsfähigkeiten erweitern
- 📊 Analyse-Metriken: Sammlung von Task-Ausführungszeit, Erfolgsraten-Metriken hinzufügen
Besuchen Sie A2A
Related Articles
Explore more content related to this topic
LlamaIndex File Chat Workflow with A2A Protocol
A comprehensive guide for building file chat agents using LlamaIndex Workflows and A2A Protocol. Includes detailed implementation of file upload and parsing, multi-turn conversations, real-time streaming, inline citations, LlamaParse and OpenRouter integration, and webhook notification systems. Perfect for developers looking to build advanced conversational AI agent services.
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.
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 + CrewAI + OpenRouter Chart Generation Agent Tutorial
Complete tutorial for building an intelligent chart generation agent using OpenRouter, CrewAI, and A2A protocol. Master end-to-end agent development, image data handling, and A2A Inspector debugging skills with full workflow guidance from setup to deployment.
AP2 (Agent Payments Protocol) Usage Tutorial
"AP2 (Agent Payments Protocol) is a protocol for agent payments that supports both human-present and human-absent commerce flows. This tutorial provides detailed instructions on how to use the AP2 Python sample project."