Ein von JD.com Open Source entwickeltes, durchgängiges, produktionsreifes und allgemeines Multi-Agenten-Framework, das die sofortige Entwicklung von Agentenanwendungen unterstützt.
Detaillierte Projektbeschreibung von JoyAgent-JDGenie
Projektübersicht
JoyAgent-JDGenie ist ein von JD Open Source entwickeltes End-to-End-Produkt-Level-Framework für allgemeine Multi-Agenten-Systeme, das speziell dafür konzipiert wurde, das "Last-Mile"-Problem beim schnellen Aufbau von Multi-Agenten-Produkten zu lösen. Im Gegensatz zu bestehenden Open-Source-Agenten, die als SDKs oder Frameworks konzipiert sind, ist JoyAgent-JDGenie ein End-to-End-Multi-Agenten-Produkt, das eingegebene Anfragen (Queries) oder Aufgaben direkt beantworten oder lösen kann.
Kernfunktionen
1. Sofort einsatzbereites Komplettprodukt
- End-to-End-Lösung: Benutzer erhalten direkt Ergebnisse nach Eingabe einer Anfrage oder Aufgabe, ohne zusätzliche Entwicklung.
- Unterstützung für mehrere Ausgabeformate: Unterstützt die Generierung von Berichts-Dokumenten im Web- und PPT-Format.
- Leichte Bereitstellung: Im Vergleich zu anderen Produkten nicht von einem spezifischen Cloud-Plattform-Ökosystem abhängig.
2. Herausragende Leistung
Mit einer Genauigkeit von 75,15 % in der GAIA-Rangliste hat es branchenbekannte Produkte wie OWL (CAMEL), Smolagent (Huggingface), LRC-Huawei (Huawei), xManus (OpenManus) und AutoAgent (University of Hong Kong) übertroffen.
3. Vollständige technische Architektur
Multi-Agenten-Kooperationsmodus
- Multi-Level-Ausführung: Unterstützt zwei Ebenen: Work-Level und Task-Level.
- Multi-Pattern-Modus: Umfasst den Plan-and-Executor-Modus und den React-Modus.
- Hochparalleler DAG-Ausführungs-Engine: Bietet höchste Ausführungseffizienz.
Kern-Sub-Agenten
- Berichtsgenerierungs-Agent (Report Agent)
- Code-Agent (Code Agent)
- PPT-Agent
- Datei-Agent
- Such-Agent (Search Agent)
Technische Besonderheiten
1. Agenten-Framework-Protokoll
- Unterstützt verschiedene Agenten-Designmuster.
- Multi-Agenten-Kontextverwaltung.
- Plug-and-Play-Design für Sub-Agenten und Tools.
2. Erweiterte Funktionen
- Iterative Optimierung basierend auf bestehenden Tools: Neue Tools werden iterativ aus vorhandenen Tools generiert, anstatt direkt von Grund auf neu erstellt zu werden.
- Automatische Kombination von Atom-Tools: Vorhandene Tools werden implizit in Atom-Tools zerlegt und durch große Modelle automatisch zu neuen Tools kombiniert.
- End-to-End-Streaming-Ausgabe: Unterstützt Echtzeit-Antworten und Streaming der Ergebnisse.
- RL-Optimierung für Plan- und Tool-Aufrufe: Optimierung des Entscheidungsprozesses durch Reinforcement Learning.
3. Vielfältige Dateibereitstellung
Unterstützt verschiedene Ausgabeformate:
- HTML-Format
- PowerPoint-Präsentation
- Markdown-Dokument
Systemanforderungen
Systemanforderungen
- Java-Umgebung: JDK 17
- Python-Umgebung: Python 3.11
Python-Umgebung vorbereiten
pip install uv
cd genie-tool
uv sync
source .venv/bin/activate
Installation und Bereitstellung
Methode 1: Bereitstellung aus dem Quellcode
1. Projekt klonen
git clone https://github.com/jd-opensource/joyagent-jdgenie.git
cd genie-tool
2. Umgebung konfigurieren
Bearbeiten Sie die Datei .env.example
, um die relevanten Parameter für die Ausführung der Tools zu konfigurieren.
3. Dienst starten
Erste Ausführung:
sh start_genie_init.sh
Nachfolgende Starts:
sh start_genie.sh
Methode 2: Docker-Bereitstellung
1. Image erstellen
cd genie-tool
docker build -t genie:latest .
2. Container ausführen
# -v Lokalen Speicher einrichten -e Konversationsmodell einrichten
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
Erweiterte Entwicklung
Benutzerdefinierte Tool-Entwicklung
1. Implementierung des BaseTool-Interfaces
/**
* Basis-Tool-Interface
*/
public interface BaseTool {
String getName(); // Tool-Name
String getDescription(); // Tool-Beschreibung
Map<String, Object> toParams(); // Tool-Parameter
Object execute(Object input); // Tool aufrufen
}
2. Beispiel für die Erstellung eines benutzerdefinierten Agenten
// Beispiel für einen Wetter-Agenten
public class WeatherTool implements BaseTool {
@Override
public String getName() {
return "agent_weather";
}
@Override
public String getDescription() {
return "Dies ist ein Agent, der das Wetter abfragen kann";
}
@Override
public Map<String, Object> toParams() {
return "{\"type\":\"object\",\"properties\":{\"location\":{\"description\":\"地点\",\"type\":\"string\"}},\"required\":[\"location\"]}";
}
@Override
public Object execute(Object input) {
return "Heute ist das Wetter sonnig";
}
}
3. Benutzerdefinierten Agenten registrieren
Fügen Sie in com.jd.genie.controller.GenieController#buildToolCollection
hinzu:
WeatherTool weatherTool = new WeatherTool();
toolCollection.addTool(weatherTool);
MCP-Dienstintegration
Konfigurieren Sie in genie-backend/src/main/resources/application.yml
:
mcp_server_url: "http://ip1:port1/sse,http://ip2:port2/sse"
Vergleich mit anderen Frameworks
Kategorie | Agent | Open Source? | Open Source als komplettes Produkt? | Abhängig vom Ökosystem? |
---|---|---|---|---|
SDK-Klasse | SpringAI-Alibaba | Teilweise | Nein, nur SDK ist Open Source | Ja (Alibaba Cloud Bailian Plattform) |
SDK-Klasse | Coze | Teilweise | Nein, nur Teile des Nieo SDK sind Open Source | Ja (Volcano Engine Plattform) |
Framework-Klasse | Fellow | Ja | Nein, nur das Eko Agenten-Framework ist Open Source | Nein |
Framework-Klasse | Dify | Ja | Nein, nur das Agenten-Framework ist Open Source | Nein |
Framework-Klasse | OpenManus | Ja | Nein, nur das Agenten-Framework ist Open Source | Nein |
Produkt-Klasse | JoyAgent-JDGenie | Ja | Ja, Open Source als komplettes End-to-End-Agentenprodukt | Nein |
GAIA Benchmark-Ergebnisse
Agent | Score | Score_Level1 | Score_Level2 | Score_Level3 | 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 |
Zusammenfassung
JoyAgent-JDGenie, als von JD Open Source entwickeltes End-to-End-Multi-Agenten-Framework, bietet die folgenden Kernvorteile:
- Hoher Produktisierungsgrad: Bietet eine vollständige End-to-End-Lösung, sofort einsatzbereit.
- Hervorragende Leistung: Zeigt herausragende Ergebnisse in den GAIA-Benchmark-Tests und übertrifft mehrere bekannte Open-Source-Projekte.
- Fortschrittliche Architektur: Unterstützt verschiedene Multi-Agenten-Kooperationsmodi und hochparallele Ausführung.
- Starke Erweiterbarkeit: Unterstützt die flexible Integration benutzerdefinierter Agenten und Tools.
- Einfache Bereitstellung: Bietet verschiedene Bereitstellungsmethoden und ist nicht von einem spezifischen Cloud-Plattform-Ökosystem abhängig.
Dieses Projekt bietet Unternehmen und Entwicklern eine leistungsstarke und flexible Multi-Agenten-Lösung, die sich besonders für Szenarien eignet, in denen Agenten-Anwendungen schnell erstellt werden müssen.