Code Source
A2A JS Exemple : Agent de Films
Aperçu du Projet
Ce projet démontre un agent d'informations de films complet construit avec le framework A2A (Agent2Agent). L'agent exploite l'API TMDB (The Movie Database) pour fournir des informations détaillées sur les films, des fonctionnalités de recherche et des capacités conversationnelles alimentées par l'IA grâce à l'intégration OpenRouter.
Caractéristiques Principales
- Intégration API TMDB Améliorée : Implémentation moderne utilisant l'authentification par jeton Bearer
- Recherche de Films Complète : Rechercher des films avec des filtres comme l'année, le contenu adulte, etc.
- Capacités Multi-Recherche : Rechercher simultanément dans les films, émissions TV et personnes
- Conversations Alimentées par l'IA : Utilise l'API OpenRouter pour des requêtes de films intelligentes
- Support Proxy : Support proxy SOCKS5/HTTP intégré pour les requêtes réseau
- Framework A2A : Implémente le protocole de communication Agent2Agent
- Interface CLI : Interface en ligne de commande interactive pour les tests
- Serveur Express : Points de terminaison API RESTful pour la communication d'agents
Architecture du Projet
Le projet suit une architecture modulaire avec une séparation claire des préoccupations :
src/
├── index.ts # Point d'entrée principal du serveur
├── cli.ts # Interface en ligne de commande
├── config/
│ └── env.ts # Configuration d'environnement
└── movie-agent/
├── index.ts # Exécuteur d'agent principal
├── tools.ts # Outils API TMDB
├── tmdb.ts # Client API TMDB
└── openai.ts # Intégration OpenRouter
Configuration et Exécution Étape par Étape
1. Prérequis
- Node.js (v18 ou supérieur)
- Gestionnaire de paquets Bun
- Compte API TMDB
- Compte API OpenRouter
2. Installer les Dépendances
# Cloner le dépôt
git clone https://github.com/sing1ee/a2a-js-movie-agent.git
cd a2a-js-movie-agent
# Installer les dépendances avec Bun
bun install
3. Configuration d'Environnement
Créez un fichier .env
à la racine du projet :
# Clé API TMDB (jeton Bearer)
TMDB_API_TOKEN=your_tmdb_api_token_here
# Clé API OpenRouter pour les fonctionnalités IA
OPENROUTER_API_KEY=your_openrouter_api_key_here
# Configuration Proxy (Optionnel)
USE_PROXY=true
PROXY_URL=socks5://127.0.0.1:7890
# Configuration Serveur
NODE_ENV=development
PORT=3000
4. Exécution du Serveur Agent
# Démarrer le serveur de développement
bun dev
# Ou construire et exécuter en production
bun run build
bun start
Le serveur démarrera sur http://localhost:3000
(ou le port spécifié dans votre fichier .env
).
5. Test avec l'Interface CLI
# Exécuter le CLI interactif
bun cli
# Ou spécifier une URL de serveur personnalisée
bun cli http://localhost:3000
6. Accès aux Informations de l'Agent
Une fois le serveur en cours d'exécution, vous pouvez accéder à :
- Carte d'Agent :
http://localhost:3000/.well-known/agent.json
- Documentation API : Disponible via les points de terminaison du framework A2A
Explication de la Logique du Projet
Composants Principaux
- MovieAgentExecutor : La logique principale de l'agent qui traite les requêtes utilisateur
- Outils TMDB : Cinq outils spécialisés pour la récupération de données de films
- Intégration OpenAI : Gère les conversations alimentées par l'IA via OpenRouter
- Framework A2A : Gère le protocole de communication d'agents
Outils Disponibles
L'agent fournit cinq outils principaux pour les informations de films :
- searchMovies : Recherche de films de base avec filtres optionnels (année, contenu adulte)
- searchPeople : Rechercher des acteurs, réalisateurs et autres personnalités de l'industrie cinématographique
- getMovieDetails : Récupérer des informations détaillées sur un film spécifique
- searchMoviesWithDetails : Recherche combinée et détails en un seul appel (recommandé)
- multiSearch : Rechercher simultanément dans tous les types de contenu (films, émissions TV, personnes)
Processus de Flux de Travail
L'agent suit ce flux de travail général :
- Traitement des Requêtes : Reçoit les requêtes utilisateur via le framework A2A
- Gestion du Contexte : Maintient l'historique des conversations et le contexte
- Analyse IA : Utilise OpenRouter pour comprendre l'intention de l'utilisateur
- Exécution d'Outils : Appelle les outils TMDB appropriés basés sur la requête
- Génération de Réponse : Formate et retourne des informations complètes sur les films
- Gestion d'État : Suit le statut des tâches et fournit des mises à jour en temps réel
Diagramme de Séquence Mermaid
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
Points Forts Techniques
Intelligence Alimentée par l'IA
L'agent utilise OpenRouter pour fournir des réponses intelligentes, déterminant automatiquement quels outils utiliser basés sur les requêtes utilisateur. Il peut gérer des demandes complexes comme "Trouver des films d'action de 2023 avec Tom Cruise" en combinant plusieurs appels d'outils.
Intégration TMDB Améliorée
Contrairement aux implémentations TMDB de base, cet agent :
- Utilise l'authentification moderne par jeton Bearer
- Implémente "append to response" pour une utilisation efficace de l'API
- Génère automatiquement des URL d'images complètes
- Fournit une gestion d'erreurs complète
Conformité au Protocole A2A
L'agent implémente entièrement le protocole A2A (Agent2Agent), permettant :
- Découverte d'agents standardisée via les cartes d'agents
- Mises à jour de statut en temps réel pendant le traitement
- Gestion appropriée du cycle de vie des tâches
- Réponses en streaming pour une meilleure expérience utilisateur
Support Proxy
Le support proxy intégré garantit que l'agent peut fonctionner dans des environnements réseau restreints, supportant :
- Proxies SOCKS5
- Proxies HTTP/HTTPS
- Paramètres de proxy configurables
Exemples d'Utilisation
Recherche de Film de Base
Utilisateur : "Parlez-moi du film Inception"
Agent : [Recherche Inception, récupère les détails, le casting et l'intrigue]
Requêtes Complexes
Utilisateur : "Trouvez des films de science-fiction de 2020 réalisés par Christopher Nolan"
Agent : [Utilise plusieurs outils pour rechercher et filtrer les résultats]
Informations sur les Acteurs
Utilisateur : "Dans quels films Leonardo DiCaprio a-t-il joué récemment ?"
Agent : [Recherche l'acteur et liste la filmographie récente]
Développement et Déploiement
Le projet inclut des outils de développement complets :
- TypeScript : Sécurité de type complète dans toute la base de code
- ESLint & Prettier : Qualité de code et formatage
- Bun : Gestion de paquets et exécution rapides
- Architecture Modulaire : Facile à étendre et maintenir
Conclusion
Cet A2A JS Agent de Films démontre une implémentation sophistiquée du framework Agent2Agent, combinant des technologies web modernes avec des capacités IA pour créer un système d'informations de films puissant. Le projet sert d'excellent exemple de la façon de construire des agents conversationnels intelligents qui peuvent interagir avec des API externes et fournir des réponses riches et contextuelles aux requêtes utilisateur.
La conception modulaire, la gestion d'erreurs complète et l'adhérence au protocole A2A rendent ce projet adapté à la fois aux fins d'apprentissage et aux scénarios de déploiement en production.