Skip to content

Latest commit

 

History

History
398 lines (322 loc) · 19.8 KB

File metadata and controls

398 lines (322 loc) · 19.8 KB

JoyAgent-JDGenie Open Source Documentation

The industry’s first open-source, highly complete, lightweight, general-purpose multi-agent product (JoyAgent-JDGenie)

Address the last-mile challenge in rapidly developing multi-agent products.

Introduction

Most existing open-source agent projects are primarily SDKs or frameworks, requiring users to perform additional development and lacking true out-of-the-box usability. In contrast, our open-source JoyAgent-JDGenie is an end-to-end multi-agent product that can directly answer or resolve user queries or tasks. For example, when a user submits a query like“Provide an analysis of recent trends between the US dollar and gold,”JoyAgent-JDGenie can instantly generate a report in web or PPT format.

  • Generality and Customization

    • JoyAgent-JDGenie is a versatile multi-agent framework. To customize functionality for new scenarios, users only need to integrate relevant sub-agents or tools into JoyAgent-Genie. To demonstrate its generality, JoyAgent-JDGenie achieved 75.15% accuracy on the GAIA benchmark Validation set and 65.12% on the Test set, outperforming industry-leading products such as OWL (CAMEL), Smolagent (Hugging Face), LRC-Huawei (Huawei), xManus (OpenManus), and AutoAgent (University of Hong Kong).
  • Lightweight and Independence

    • Unlike Alibaba’s SpringAI-Alibaba (which relies on the Alibaba Cloud Bailian platform for LLM capabilities) or Coze (dependent on the Volcano Engine platform), our open-source multi-agent product JoyAgent-JDGenie is lightweight and platform-agnostic.
  • Comprehensive Open-Source Offering

    • We have fully open-sourced JoyAgent-JDGenie, including its:
      • Frontend and backend
      • Framework and engine
      • Core sub-agents (e.g., Report Generator Agent, Code Agent, PPT Agent, File Agent)
      • For enhanced performance, we welcome users to leverage JoyAgent with fine-tuned models.

Case Studies

mov1.mp4
mov2.mp4
mov3.mp4
mov4.mp4

Product Comparison

Category agent Open Sourced? Fully Open-Sourced Product? Dependent on Ecosystem?
SDK SpringAI-Alibaba Partial No (SDK only) Yes (Alibaba Cloud Bailian Platform)
Coze Partial No (Nieo SDK only) Yes (Volcano Engine Platform)
Framework Fellow YES No (Eko Agent Framework only) No
Dify YES No (Workflow-focused framework only) No
SkyworkAI YES No (Agent framework only) No
OpenManus YES No (Agent framework only) No
Owl YES No (Agent framework only) No
n8n YES No (Agent framework only) no
Protocol MCP Yes No (Protocol only) no
A2A YES No (Protocol only) No
AG-UI YES No (Protocol only) No
Technical Module memory0 YES No (Technical module only) No
LlamaIndex YES No (Technical module only) No
Product Our YES Yes (End-to-end open-source agent product) No

Framework Performance Superiority

Test set performance 65.12%

test

Validation set performance 75.15%

Agent Score Score_level1 Score_level2 Score_level3 Organization
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(Our) 0.7515 0.8679 0.7791 0.4230 Our
OWL 0.6909 0.8491 0.6744 0.4231 CAMEL
Smolagent 0.5515 0.6792 0.5349 0.3462 Huggingface
AutoAgent 0.5515 0.7170 0.5349 0.2692 HKU
Magentic 0.4606 0.5660 0.4651 0.2308 MSR AI Frontiers
LRC-Huawei 0.406 0.5283 0.4302 0.0769 Huawei
xManus 0.4061 0.8113 0.2791 0.0000 OpenManus
score

System Architecture

ME1753788413469

This open-source project is based on JoyAgent-JDGenie, publicly releasing the complete product interface, multiple core agent modes (React mode, Plan and Execute mode, etc.), multiple sub-agents (Report Agent, Search Agent, etc.), and multi-agent interaction protocols.

Key Features and Advantages

  • End-to-End Multi-Agent Product: Ready out-of-the-box with support for secondary development
  • Agent Framework Protocols
    • Support for Diverse Agent Design Patterns
    • Multi-Agent Context Management
    • High-Concurrency DAG Execution Engine: Exceptional execution efficiency
  • Sub-Agents and Tools
    • Pluggable sub-agents and tools: Pre-configured with various sub-agents and utilities
    • Multiple file export formats: HTML, PPT, Markdown
    • Plan & Tool Call Optimization: Iteratively enhanced via Reinforcement Learning (RL)
    • End-to-End Streaming Responses

Key Innovations

invo

multi-level and multi-pattern thinking

  • multi-level:work level VS task level
  • multi-pattern:plan and executor VS react

cross task workflow memory

tool evolution via auto-disassembly-and-reassembly of atom-tools

Generates novel tools from existing ones instead of creating from scratch (reducing faulty tool generation):

  • Implicit Atomization:
    • Automatically decomposes existing tools into atomic sub-tools
    • No need for manual pre-definition of atomic components
  • LLM-Driven Reassembly:
    • Dynamically recombines atomic tools via large language models
    • Enables emergent tool creation without human intervention

Quick Start

Method 1: One-Command Docker Deployment

1.git clone https://github.com/jd-opensource/joyagent-jdgenie.git

2.Manually update the following configurations in genie-backend/src/main/resources/application.yml:
base_url, apikey, model, max_tokens, model_name
Note for DeepSeek users: Set max_tokens: 8192 for deepseek-chat

Manually update the following environment variables in genie-tool/.env_template:
OPENAI_API_KEY, OPENAI_BASE_URL, DEFAULT_MODEL, SERPER_SEARCH_API_KEY
DeepSeek Configuration:Set DEEPSEEK_API_KEY and DEEPSEEK_API_BASE,Configure DEFAULT_MODEL = deepseek/deepseek-chat,
Replace all occurrences of ${DEFAULT_MODEL} with deepseek/deepseek-chat

3.Build the Docker image
docker build -t genie:latest .

4.Launch the Docker container
docker run -d -p 3000:3000 -p 8080:8080 -p 1601:1601 --name genie-app genie:latest

5.Access Genie via browser
Open http://localhost:3000

If you encounter deployment issues, refer to this video tutorial:【5分钟使用deepseek启动开源智能体应用joyagent-genie-哔哩哔哩】 https://b23.tv/8VQDBOK

Method 2: Manual Environment Initialization and Service Launch

Prerequisites

  • jdk17
  • python3.11
  • python Environment Setup
    • pip install uv
    • cd genie-tool
    • uv sync
    • source .venv/bin/activate

Option 1: Step-by-Step Manual Deployment

Ultra-detailed guide reference: Step by Step

Option 2: One-Command Launch (Recommended)

Directly start all services via shell:

sh check_dep_port.sh # Verify all dependencies and port occupancy
sh Genie_start.sh  # Launch services directly; restart this script after configuration changes (terminate all services with Control+C)

For deployment guidance, refer to the demonstration video:【joyagent-jdgenie部署演示】 https://www.bilibili.com/video/BV1Py8Yz4ELK/?vd_source=a5601a346d433a490c55293e76180c9d

Custom development

Integrating Custom MCP Tools into JoyAgent-JDGenie

Configuration File:

Edit genie-backend/src/main/resources/application.yml to add MCP server URLs (comma-separated):

You can change the front-end request path to the back-end in ui/.env.

mcp_server_url: "http://ip1:port1/sse,http://ip2:port2/sse"

Start Service:

sh start_genie.sh

Usage Example:

After integrating the 12306 ticket tool, initiate: "Plan a 7-day trip for 2 people from Beijing to Xinjiang in July and query train tickets" → Genie designs travel itinerary → Invokes MCP tool for ticket queries → Generates final report img.png

Adding Custom Sub-Agent to JoyAgent-JDGenie

Implementing the BaseTool Interface: Declaring Tool Name, Description, Parameters, and Invocation Methods.

/** * Base Tool Interface */publicinterfaceBaseTool {
    StringgetName(); // Tool name
    StringgetDescription(); // Tool description
    Map<String, Object> toParams(); // Tool parameters
    Objectexecute(Objectinput); // Invoke tool
}
// Weather Agent Example
    publicclassWeatherToolimplementsBaseTool {
    @Override
    publicStringgetName() {
        return"agent_weather";
    }

    @Override
    publicStringgetDescription() {
        return"A weather query agent";
    }

    @Override
    publicMap<String, Object> toParams() {
        return"{\"type\":\"object\",\"properties\":{\"location\":{\"description\":\"地点\",\"type\":\"string\"}},\"required\":[\"location\"]}";
    }

    @Override
    publicObjectexecute(Objectinput) {
        return"Today's weather is sunny";
    }
}

Add the following code in com.jd.genie.controller.GenieController#buildToolCollection to integrate custom Agent.

WeatherTool weatherTool = new WeatherTool();
toolCollection.addTool(weatherTool);

Start service

sh start_genie.sh

Contributors

Core Team: Liu Shangkun,Li Yang,Jia Shilin,Tian Shaohua,Wang Zhen,Yao Ting,Wang Hongtao,Zhou Xiaoqing,Liu min,Zhang Shuang,Liuwen,Yangdong,Xu Jialei,Zhou Meilei,Zhao Tingchong,Wu jiaxing, Wang Hanmin, Zhou Zhiyuan, Xu Shiyue,Liu Jiarun, Hou Kang, Jing Lingtuan, Guo Hongliang, Liu Yanchen, Chen Kun, Pan Zheyi, Duan Zhewen, Tu Shengkun, Zhang Haidong, Wang Heng, Zhang Junbo

Core Team: JD.com CHO Enterprise Informatization Team (EI), JDT, JDL

Contribution & Collaboration

We welcome all great ideas and suggestions. If you wish to become a project co-builder, you may submit Pull Requests at any time. Whether it's improving products/frameworks, fixing bugs, or adding new features - all contributions are highly valued. Before contributing, you need to read and sign the Contributor Agreement and send it to org.developer3@jd.com. Chinese VersionEnglish Version

Citation

For academic references or inquiries, please use the following BibTeX entry::

@software{JoyAgent-JDGenie,
  author = {Agent Team at JDCHO},
  title = {JoyAgent-JDGenie},
  year = {2025},
  url = {https://github.com/jd-opensource/joyagent-jdgenie},
  version = {0.1.0},
  publisher = {GitHub},
  email = {jiashilin1@jd.com;liyang.1236@jd.com;liushangkun@jd.com;tianshaohua.1@jd.com;wangzhen449@jd.com;yaoting.2@jd.com}
}

Contributors

Star History

Star History Chart

Contact Us

contact