Framework multi-agents généraliste de bout en bout de qualité production, open source par JD.com, prenant en charge le développement d'applications d'agents intelligents prêtes à l'emploi.
Présentation détaillée du projet JoyAgent-JDGenie
Aperçu du projet
JoyAgent-JDGenie est un cadre d'agents multiples générique de niveau produit de bout en bout, open source par JD.com, conçu spécifiquement pour résoudre le problème du "dernier kilomètre" dans la construction rapide de produits multi-agents. Contrairement aux SDK ou aux cadres d'agents open source existants, JoyAgent-JDGenie est un produit multi-agents de bout en bout qui peut directement répondre ou résoudre les requêtes ou les tâches saisies.
Caractéristiques principales
1. Produit complet prêt à l'emploi
- Solution de bout en bout : L'utilisateur obtient directement les résultats après avoir saisi une requête ou une tâche, sans développement supplémentaire.
- Prise en charge de la sortie multiformat : Prend en charge la génération de documents de rapport au format web et PowerPoint.
- Déploiement léger : Ne dépend pas d'un écosystème de plateforme cloud spécifique, contrairement à d'autres produits.
2. Performances exceptionnelles
Atteint une précision de 75,15 % sur le classement GAIA, dépassant des produits renommés de l'industrie tels que OWL (CAMEL), Smolagent (Huggingface), LRC-Huawei (Huawei), xManus (OpenManus) et AutoAgent (Université de Hong Kong).
3. Architecture technique complète
Modes de collaboration multi-agents
- Exécution multi-niveaux : Prend en charge deux niveaux : le niveau de travail et le niveau de tâche.
- Modes multi-modèles : Inclut les modes "plan and executor" et "react".
- Moteur d'exécution DAG à haute concurrence : Offre une efficacité d'exécution maximale.
Sous-agents principaux
- Agent de génération de rapports (Report Agent)
- Agent de code (Code Agent)
- Agent PPT
- Agent de fichiers
- Agent de recherche (Search Agent)
Caractéristiques techniques
1. Protocole de cadre d'agent
- Prend en charge plusieurs modèles de conception d'agents.
- Gestion du contexte multi-agents.
- Conception enfichable pour les sous-agents et les outils.
2. Fonctionnalités avancées
- Optimisation itérative basée sur les outils existants : Génère de nouveaux outils par itération à partir d'outils existants, plutôt que de les créer directement de zéro.
- Combinaison automatique d'outils atomiques : Décompose implicitement les outils existants en outils atomiques et les combine automatiquement en de nouveaux outils via un grand modèle.
- Sortie en flux continu sur toute la chaîne : Prend en charge la réponse en temps réel et la diffusion en continu des résultats.
- Optimisation RL du plan et de l'appel d'outils : Optimise le processus de décision par l'apprentissage par renforcement.
3. Livraison de fichiers diversifiée
Prend en charge plusieurs formats de sortie :
- Format HTML
- Présentation PowerPoint
- Document Markdown
Exigences environnementales
Exigences système
- Environnement Java : JDK 17
- Environnement Python : Python 3.11
Préparation de l'environnement Python
pip install uv
cd genie-tool
uv sync
source .venv/bin/activate
Installation et déploiement
Méthode 1 : Déploiement à partir des sources
1. Cloner le projet
git clone https://github.com/jd-opensource/joyagent-jdgenie.git
cd genie-tool
2. Configurer l'environnement
Modifiez le fichier .env.example
pour configurer les paramètres pertinents utilisés par l'outil d'exécution.
3. Démarrer le service
Première exécution :
sh start_genie_init.sh
Démarrages ultérieurs :
sh start_genie.sh
Méthode 2 : Déploiement Docker
1. Construire l'image
cd genie-tool
docker build -t genie:latest .
2. Exécuter le conteneur
# -v configure le stockage local -e configure le modèle de conversation
docker run -d -p 3004:3000 -p 8080:8080 -p 1601:1601 \
-v /Users/{user}/code/autobots/genie/genie-tool:/data/genie-tool \
-e OPENAI_BASE_URL="" -e OPENAI_API_KEY="" \
--name genie-app genie:latest
Développement d'extensions
Développement d'outils personnalisés
1. Implémenter l'interface BaseTool
/**
* Interface de base de l'outil
*/
public interface BaseTool {
String getName(); // Nom de l'outil
String getDescription(); // Description de l'outil
Map<String, Object> toParams(); // Paramètres de l'outil
Object execute(Object input); // Appeler l'outil
}
2. Créer un exemple d'agent personnalisé
// Exemple d'agent météo
public class WeatherTool implements BaseTool {
@Override
public String getName() {
return "agent_weather";
}
@Override
public String getDescription() {
return "这是一个可以查询天气的智能体"; // C'est un agent qui peut consulter la météo
}
@Override
public Map<String, Object> toParams() {
return "{\"type\":\"object\",\"properties\":{\"location\":{\"description\":\"地点\",\"type\":\"string\"}},\"required\":[\"location\"]}";
}
@Override
public Object execute(Object input) {
return "今日天气晴朗"; // Le temps est ensoleillé aujourd'hui
}
}
3. Enregistrer l'agent personnalisé
Ajouter dans com.jd.genie.controller.GenieController#buildToolCollection
:
WeatherTool weatherTool = new WeatherTool();
toolCollection.addTool(weatherTool);
Intégration du service MCP
Configurer dans genie-backend/src/main/resources/application.yml
:
mcp_server_url: "http://ip1:port1/sse,http://ip2:port2/sse"
Comparaison avec d'autres cadres
Catégorie | Agent | Open source ? | Produit complet open source ? | Dépend d'un écosystème ? |
---|---|---|---|---|
Type SDK | SpringAI-Alibaba | Partiel | Non, seul le SDK est open source | Oui (Plateforme Alibaba Cloud Bailian) |
Type SDK | Coze | Partiel | Non, seul une partie du SDK Nieo est open source | Oui (Plateforme Volcengine) |
Type Cadre | Fellow | Oui | Non, seul le cadre d'agent Eko est open source | Non |
Type Cadre | Dify | Oui | Non, seul le cadre d'agent est open source | Non |
Type Cadre | OpenManus | Oui | Non, seul le cadre d'agent est open source | Non |
Type Produit | JoyAgent-JDGenie | Oui | Oui, produit Agent complet de bout en bout open source | Non |
Résultats du test de référence GAIA
Agent | Score | Score_niveau1 | Score_niveau2 | Score_niveau3 | Organisation |
---|---|---|---|---|---|
Alita v2.1 | 0.8727 | 0.8868 | 0.8953 | 0.7692 | Princeton |
Skywork | 0.8242 | 0.9245 | 0.8372 | 0.5769 | 天工 |
AWorld | 0.7758 | 0.8868 | 0.7791 | 0.5385 | Ant Group |
Langfun | 0.7697 | 0.8679 | 0.7674 | 0.5769 | DeepMind |
JoyAgent-JDGenie | 0.7515 | 0.8679 | 0.7791 | 0.4230 | 京东 |
OWL | 0.6424 | 0.7547 | 0.6512 | 0.3846 | CAMEL |
Smolagent | 0.5515 | 0.6792 | 0.5349 | 0.3462 | Huggingface |
Résumé
JoyAgent-JDGenie, en tant que cadre d'agents multiples de bout en bout open source par JD.com, présente les avantages clés suivants :
- Haut degré de produitisation : Offre une solution complète de bout en bout, prête à l'emploi.
- Performances excellentes : Se distingue dans les tests de référence GAIA, surpassant plusieurs projets open source renommés.
- Architecture avancée : Prend en charge divers modes de collaboration multi-agents et une exécution à haute concurrence.
- Forte extensibilité : Prend en charge l'intégration flexible d'agents et d'outils personnalisés.
- Déploiement simple : Offre plusieurs méthodes de déploiement et ne dépend pas d'un écosystème de plateforme cloud spécifique.
Ce projet offre aux entreprises et aux développeurs une solution multi-agents puissante et flexible, particulièrement adaptée aux scénarios nécessitant la construction rapide d'applications basées sur des agents.