Framework multiagente de propósito geral de nível de produto e ponta a ponta de código aberto da JD.com, que suporta o desenvolvimento de aplicativos de agentes inteligentes prontos para uso.
Detalhes do Projeto JoyAgent-JDGenie
Visão Geral do Projeto
JoyAgent-JDGenie é uma estrutura de múltiplos agentes genérica de nível de produto, ponta a ponta, de código aberto da JD, projetada especificamente para resolver o problema da "última milha" na construção rápida de produtos de múltiplos agentes. Diferente dos SDKs ou estruturas de agentes de código aberto existentes, JoyAgent-JDGenie é um produto de múltiplos agentes ponta a ponta que pode responder ou resolver diretamente consultas ou tarefas de entrada.
Características Principais
1. Produto Completo e Pronto para Uso
- Solução Ponta a Ponta: Os usuários podem obter resultados diretamente após inserir uma consulta ou tarefa, sem necessidade de desenvolvimento adicional.
- Suporte a Saída Multi-formato: Suporta a geração de documentos de relatório em formato de página web e PPT.
- Implantação Leve: Em comparação com outros produtos, não depende de um ecossistema de plataforma de nuvem específico.
2. Desempenho Excepcional
Atingiu uma precisão de 75,15% na lista GAIA, superando produtos conhecidos da indústria como OWL (CAMEL), Smolagent (Huggingface), LRC-Huawei (Huawei), xManus (OpenManus) e AutoAgent (Universidade de Hong Kong).
3. Arquitetura Técnica Completa
Modo de Colaboração Multi-Agente
- Execução Multi-nível: Suporta dois níveis: nível de trabalho (work level) e nível de tarefa (task level).
- Modo Multi-padrão: Inclui o modo "plan and executor" e o modo "react".
- Motor de Execução DAG de Alta Concorrência: Oferece eficiência de execução máxima.
Sub-Agentes Principais
- Agente de Geração de Relatórios (Report Agent)
- Agente de Código (Code Agent)
- Agente de PPT
- Agente de Arquivos
- Agente de Busca (Search Agent)
Características Técnicas
1. Protocolo da Estrutura de Agentes
- Suporta múltiplos padrões de design de agentes.
- Gerenciamento de contexto de múltiplos agentes.
- Design plugável para sub-agentes e ferramentas.
2. Recursos de Funcionalidade Avançada
- Otimização Iterativa Baseada em Ferramentas Existentes: Gera novas ferramentas iterativamente a partir de ferramentas existentes, em vez de criá-las do zero.
- Combinação Automática de Ferramentas Atômicas: Desagrega implicitamente ferramentas existentes em ferramentas atômicas e as combina automaticamente em novas ferramentas usando modelos de linguagem grandes.
- Saída de Fluxo de Link Completo: Suporta resposta em tempo real e transmissão de resultados em fluxo.
- Otimização de Plano e Chamada de Ferramentas por RL: Otimiza o processo de tomada de decisão através de aprendizado por reforço.
3. Entrega de Arquivos Diversificada
Suporta múltiplos formatos de saída:
- Formato HTML
- Apresentação PowerPoint
- Documento Markdown
Requisitos de Ambiente
Requisitos do Sistema
- Ambiente Java: JDK 17
- Ambiente Python: Python 3.11
Preparação do Ambiente Python
pip install uv
cd genie-tool
uv sync
source .venv/bin/activate
Instalação e Implantação
Método Um: Implantação por Código Fonte
1. Clonar o Projeto
git clone https://github.com/jd-opensource/joyagent-jdgenie.git
cd genie-tool
2. Configurar o Ambiente
Modifique o arquivo .env.example
para configurar os parâmetros relevantes usados pelas ferramentas de execução.
3. Iniciar o Serviço
Primeira execução:
sh start_genie_init.sh
Inícios subsequentes:
sh start_genie.sh
Método Dois: Implantação Docker
1. Construir a Imagem
cd genie-tool
docker build -t genie:latest .
2. Executar o Contêiner
# -v configura o armazenamento local -e configura o modelo de diálogo
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
Desenvolvimento de Extensão
Desenvolvimento de Ferramentas Personalizadas
1. Implementar a Interface BaseTool
/**
* Interface base da ferramenta
*/
public interface BaseTool {
String getName(); // Nome da ferramenta
String getDescription(); // Descrição da ferramenta
Map<String, Object> toParams(); // Parâmetros da ferramenta
Object execute(Object input); // Chamar a ferramenta
}
2. Exemplo de Criação de Agente Personalizado
// Exemplo de agente de clima
public class WeatherTool implements BaseTool {
@Override
public String getName() {
return "agent_weather";
}
@Override
public String getDescription() {
return "Este é um agente que pode consultar o clima";
}
@Override
public Map<String, Object> toParams() {
return "{\"type\":\"object\",\"properties\":{\"location\":{\"description\":\"Localização\",\"type\":\"string\"}},\"required\":[\"location\"]}";
}
@Override
public Object execute(Object input) {
return "O tempo hoje está ensolarado";
}
}
3. Registrar o Agente Personalizado
Adicione em com.jd.genie.controller.GenieController#buildToolCollection
:
WeatherTool weatherTool = new WeatherTool();
toolCollection.addTool(weatherTool);
Integração de Serviço MCP
Configure em genie-backend/src/main/resources/application.yml
:
mcp_server_url: "http://ip1:port1/sse,http://ip2:port2/sse"
Comparação com Outras Estruturas
Categoria | Agente | Código Aberto? | Produto Completo de Código Aberto? | Depende de Ecossistema? |
---|---|---|---|---|
Tipo SDK | SpringAI-Alibaba | Parcial | Não, apenas SDK de código aberto | Sim (Plataforma Alibaba Cloud Bailian) |
Tipo SDK | Coze | Parcial | Não, apenas parte do SDK Nieo de código aberto | Sim (Plataforma Volcengine) |
Tipo Estrutura | Fellow | Sim | Não, apenas a estrutura de agente Eko de código aberto | Não |
Tipo Estrutura | Dify | Sim | Não, apenas a estrutura de agente de código aberto | Não |
Tipo Estrutura | OpenManus | Sim | Não, apenas a estrutura de agente de código aberto | Não |
Tipo Produto | JoyAgent-JDGenie | Sim | Sim, produto de agente completo ponta a ponta de código aberto | Não |
Resultados do Teste de Referência GAIA
Agente | Pontuação | Pontuação_nível1 | Pontuação_nível2 | Pontuação_nível3 | Instituição |
---|---|---|---|---|---|
Alita v2.1 | 0.8727 | 0.8868 | 0.8953 | 0.7692 | Princeton |
Skywork | 0.8242 | 0.9245 | 0.8372 | 0.5769 | Tiangong |
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 | JD |
OWL | 0.6424 | 0.7547 | 0.6512 | 0.3846 | CAMEL |
Smolagent | 0.5515 | 0.6792 | 0.5349 | 0.3462 | Huggingface |
Resumo
JoyAgent-JDGenie, como uma estrutura de múltiplos agentes ponta a ponta de código aberto da JD, possui as seguintes vantagens principais:
- Alto Grau de Produtização: Oferece uma solução completa ponta a ponta, pronta para uso.
- Desempenho Superior: Destaca-se nos testes de referência GAIA, superando vários projetos de código aberto conhecidos.
- Arquitetura Avançada: Suporta múltiplos modos de colaboração de agentes e execução de alta concorrência.
- Forte Extensibilidade: Suporta integração flexível de agentes e ferramentas personalizadas.
- Implantação Simplificada: Oferece múltiplos métodos de implantação, sem depender de um ecossistema de plataforma de nuvem específico.
Este projeto oferece uma solução de múltiplos agentes poderosa e flexível para empresas e desenvolvedores, sendo particularmente adequado para cenários que exigem a construção rápida de aplicações de agentes.