A2A Protocol
A2A JS Exemple : Agent de Films

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

  1. MovieAgentExecutor : La logique principale de l'agent qui traite les requêtes utilisateur
  2. Outils TMDB : Cinq outils spécialisés pour la récupération de données de films
  3. Intégration OpenAI : Gère les conversations alimentées par l'IA via OpenRouter
  4. Framework A2A : Gère le protocole de communication d'agents

Outils Disponibles

L'agent fournit cinq outils principaux pour les informations de films :

  1. searchMovies : Recherche de films de base avec filtres optionnels (année, contenu adulte)
  2. searchPeople : Rechercher des acteurs, réalisateurs et autres personnalités de l'industrie cinématographique
  3. getMovieDetails : Récupérer des informations détaillées sur un film spécifique
  4. searchMoviesWithDetails : Recherche combinée et détails en un seul appel (recommandé)
  5. 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 :

  1. Traitement des Requêtes : Reçoit les requêtes utilisateur via le framework A2A
  2. Gestion du Contexte : Maintient l'historique des conversations et le contexte
  3. Analyse IA : Utilise OpenRouter pour comprendre l'intention de l'utilisateur
  4. Exécution d'Outils : Appelle les outils TMDB appropriés basés sur la requête
  5. Génération de Réponse : Formate et retourne des informations complètes sur les films
  6. 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.