Quellcode
Projektübersicht
Dieses Projekt demonstriert einen umfassenden Film-Informations-Agent, der mit dem A2A (Agent2Agent) Framework erstellt wurde. Der Agent nutzt die TMDB (The Movie Database) API, um detaillierte Filminformationen, Suchfunktionen und KI-gestützte Gesprächsfähigkeiten durch OpenRouter-Integration bereitzustellen.
Hauptmerkmale
- Erweiterte TMDB-API-Integration: Moderne Implementierung mit Bearer-Token-Authentifizierung
- Umfassende Filmsuche: Filme mit Filtern wie Jahr, Erwachseneninhalte usw. suchen
- Multi-Such-Fähigkeiten: Gleichzeitige Suche in Filmen, TV-Sendungen und Personen
- KI-gestützte Gespräche: Nutzt OpenRouter API für intelligente Filmanfragen
- Proxy-Unterstützung: Integrierte SOCKS5/HTTP-Proxy-Unterstützung für Netzwerkanfragen
- A2A-Framework: Implementiert das Agent2Agent-Kommunikationsprotokoll
- CLI-Interface: Interaktive Befehlszeilenschnittstelle zum Testen
- Express-Server: RESTful API-Endpunkte für Agent-Kommunikation
Projektarchitektur
Das Projekt folgt einer modularen Architektur mit klarer Trennung der Belange:
src/
├── index.ts # Haupt-Server-Einstiegspunkt
├── cli.ts # Befehlszeilenschnittstelle
├── config/
│ └── env.ts # Umgebungskonfiguration
└── movie-agent/
├── index.ts # Haupt-Agent-Executor
├── tools.ts # TMDB-API-Tools
├── tmdb.ts # TMDB-API-Client
└── openai.ts # OpenRouter-Integration
Schritt-für-Schritt-Setup und -Ausführung
1. Voraussetzungen
- Node.js (v18 oder höher)
- Bun-Paketmanager
- TMDB-API-Konto
- OpenRouter-API-Konto
2. Abhängigkeiten installieren
# Repository klonen
git clone https://github.com/sing1ee/a2a-js-movie-agent.git
cd a2a-js-movie-agent
# Abhängigkeiten mit Bun installieren
bun install
3. Umgebungskonfiguration
Erstellen Sie eine .env
-Datei im Projektstamm:
# TMDB-API-Schlüssel (Bearer-Token)
TMDB_API_TOKEN=your_tmdb_api_token_here
# OpenRouter-API-Schlüssel für KI-Funktionen
OPENROUTER_API_KEY=your_openrouter_api_key_here
# Proxy-Konfiguration (Optional)
USE_PROXY=true
PROXY_URL=socks5://127.0.0.1:7890
# Server-Konfiguration
NODE_ENV=development
PORT=3000
4. Agent-Server ausführen
# Entwicklungsserver starten
bun dev
# Oder für Produktion bauen und ausführen
bun run build
bun start
Der Server startet auf http://localhost:3000
(oder dem in Ihrer .env
-Datei angegebenen Port).
5. Mit CLI-Interface testen
# Interaktive CLI ausführen
bun cli
# Oder benutzerdefinierte Server-URL angeben
bun cli http://localhost:3000
6. Agent-Informationen abrufen
Sobald der Server läuft, können Sie zugreifen auf:
- Agent-Karte:
http://localhost:3000/.well-known/agent.json
- API-Dokumentation: Verfügbar über A2A-Framework-Endpunkte
Projektlogik-Erklärung
Hauptkomponenten
- MovieAgentExecutor: Die Haupt-Agent-Logik, die Benutzeranfragen verarbeitet
- TMDB-Tools: Fünf spezialisierte Tools für Film-Datenabruf
- OpenAI-Integration: Verwaltet KI-gestützte Gespräche über OpenRouter
- A2A-Framework: Verwaltet das Agent-Kommunikationsprotokoll
Verfügbare Tools
Der Agent bietet fünf Haupttools für Filminformationen:
- searchMovies: Grundlegende Filmsuche mit optionalen Filtern (Jahr, Erwachseneninhalte)
- searchPeople: Suche nach Schauspielern, Regisseuren und anderen Filmindustrie-Persönlichkeiten
- getMovieDetails: Detaillierte Informationen zu einem bestimmten Film abrufen
- searchMoviesWithDetails: Kombinierte Suche und Details in einem Aufruf (empfohlen)
- multiSearch: Gleichzeitige Suche in allen Inhaltstypen (Filme, TV-Sendungen, Personen)
Workflow-Prozess
Der Agent folgt diesem allgemeinen Workflow:
- Anfrageverarbeitung: Empfängt Benutzeranfragen über das A2A-Framework
- Kontextverwaltung: Behält Gesprächshistorie und Kontext bei
- KI-Analyse: Nutzt OpenRouter, um Benutzerabsicht zu verstehen
- Tool-Ausführung: Ruft entsprechende TMDB-Tools basierend auf der Anfrage auf
- Antwortgenerierung: Formatiert und gibt umfassende Filminformationen zurück
- Zustandsverwaltung: Verfolgt Aufgabenstatus und bietet Echtzeit-Updates
Mermaid-Sequenzdiagramm
sequenceDiagram
participant U as User
participant CLI as CLI Client
participant A as A2A Server
participant MA as Movie Agent
participant AI as OpenRouter API
participant TMDB as TMDB API
U->>CLI: Enter movie query
CLI->>A: Send message via A2A protocol
A->>MA: Execute task
MA->>A: Publish "working" status
A->>CLI: Stream status update
CLI->>U: Show "Processing..." message
MA->>AI: Send query with available tools
AI->>MA: Respond with tool calls
MA->>TMDB: Execute tool calls (searchMovies, getMovieDetails, etc.)
TMDB->>MA: Return movie data
MA->>AI: Send tool results
AI->>MA: Generate final response
MA->>A: Publish "completed" status with response
A->>CLI: Stream final response
CLI->>U: Display movie information
Note over MA,TMDB: Tools available:<br/>- searchMovies<br/>- searchPeople<br/>- getMovieDetails<br/>- searchMoviesWithDetails<br/>- multiSearch
Technische Highlights
KI-gestützte Intelligenz
Der Agent nutzt OpenRouter, um intelligente Antworten zu liefern und automatisch zu bestimmen, welche Tools basierend auf Benutzeranfragen verwendet werden sollen. Er kann komplexe Anfragen wie "Finde Action-Filme von 2023 mit Tom Cruise" durch Kombination mehrerer Tool-Aufrufe bearbeiten.
Erweiterte TMDB-Integration
Im Gegensatz zu grundlegenden TMDB-Implementierungen bietet dieser Agent:
- Moderne Bearer-Token-Authentifizierung
- Implementiert "append to response" für effiziente API-Nutzung
- Generiert automatisch vollständige Bild-URLs
- Bietet umfassende Fehlerbehandlung
A2A-Protokoll-Konformität
Der Agent implementiert vollständig das A2A (Agent2Agent) Protokoll und ermöglicht:
- Standardisierte Agent-Entdeckung über Agent-Karten
- Echtzeit-Status-Updates während der Verarbeitung
- Ordnungsgemäße Aufgaben-Lebenszyklus-Verwaltung
- Streaming-Antworten für bessere Benutzererfahrung
Proxy-Unterstützung
Die integrierte Proxy-Unterstützung stellt sicher, dass der Agent in eingeschränkten Netzwerkumgebungen funktioniert und unterstützt:
- SOCKS5-Proxies
- HTTP/HTTPS-Proxies
- Konfigurierbare Proxy-Einstellungen
Verwendungsbeispiele
Grundlegende Filmsuche
Benutzer: "Erzählen Sie mir über den Film Inception"
Agent: [Sucht Inception, ruft Details, Besetzung und Handlung ab]
Komplexe Anfragen
Benutzer: "Finden Sie Science-Fiction-Filme von 2020, die von Christopher Nolan gedreht wurden"
Agent: [Verwendet mehrere Tools zum Suchen und Filtern von Ergebnissen]
Schauspieler-Informationen
Benutzer: "In welchen Filmen hat Leonardo DiCaprio kürzlich gespielt?"
Agent: [Sucht den Schauspieler und listet die aktuelle Filmografie auf]
Entwicklung und Bereitstellung
Das Projekt umfasst umfassende Entwicklungstools:
- TypeScript: Vollständige Typsicherheit in der gesamten Codebasis
- ESLint & Prettier: Code-Qualität und Formatierung
- Bun: Schnelle Paketverwaltung und -ausführung
- Modulare Architektur: Einfach zu erweitern und zu warten
Fazit
Dieser A2A JS Film-Agent demonstriert eine ausgeklügelte Implementierung des Agent2Agent-Frameworks, die moderne Webtechnologien mit KI-Fähigkeiten kombiniert, um ein leistungsstarkes Film-Informationssystem zu schaffen. Das Projekt dient als ausgezeichnetes Beispiel dafür, wie intelligente Gesprächsagenten erstellt werden, die mit externen APIs interagieren und reiche, kontextuelle Antworten auf Benutzeranfragen liefern können.
Das modulare Design, die umfassende Fehlerbehandlung und die Einhaltung des A2A-Protokolls machen dieses Projekt sowohl für Lernzwecke als auch für Produktionsbereitstellungsszenarien geeignet.