Marco multiagente de propósito general de nivel de producto de extremo a extremo de código abierto de JD.com, que admite el desarrollo de aplicaciones de agentes inteligentes listas para usar.
Descripción detallada del proyecto JoyAgent-JDGenie
Resumen del proyecto
JoyAgent-JDGenie es un marco de múltiples agentes genérico de nivel de producto de extremo a extremo de código abierto de JD, diseñado específicamente para resolver el problema de la "última milla" en la construcción rápida de productos de múltiples agentes. A diferencia de los SDK o marcos de agentes de código abierto existentes, JoyAgent-JDGenie es un producto de múltiples agentes de extremo a extremo que puede responder o resolver directamente las consultas o tareas de entrada.
Características principales
1. Producto completo listo para usar
- Solución de extremo a extremo: Los usuarios pueden obtener resultados directamente después de ingresar una consulta o tarea, sin necesidad de desarrollo adicional.
- Soporte de salida multiformato: Admite la generación de documentos de informe en formato web y PPT.
- Despliegue ligero: En comparación con otros productos, no depende de un ecosistema de plataforma en la nube específico.
2. Rendimiento excepcional
Ha alcanzado una precisión del 75.15% en la lista GAIA, superando a productos conocidos de la industria como OWL (CAMEL), Smolagent (Huggingface), LRC-Huawei (Huawei), xManus (OpenManus) y AutoAgent (Universidad de Hong Kong).
3. Arquitectura técnica completa
Modo de colaboración multi-agente
- Ejecución multinivel: Admite dos niveles: nivel de trabajo (work level) y nivel de tarea (task level).
- Modo multipatrón: Incluye el modo "plan and executor" y el modo "react".
- Motor de ejecución DAG de alta concurrencia: Proporciona una eficiencia de ejecución extrema.
Sub-agentes principales
- Agente de generación de informes (Report Agent)
- Agente de código (Code Agent)
- Agente de PPT
- Agente de archivos
- Agente de búsqueda (Search Agent)
Características técnicas
1. Protocolo de marco de agente
- Admite múltiples patrones de diseño de agentes.
- Gestión de contexto de múltiples agentes.
- Diseño de sub-agentes y herramientas conectables.
2. Características de funciones avanzadas
- Optimización iterativa basada en herramientas existentes: Genera nuevas herramientas de forma iterativa a partir de herramientas existentes, en lugar de generarlas desde cero.
- Combinación automática de herramientas atómicas: Descompone implícitamente las herramientas existentes en herramientas atómicas y las combina automáticamente en nuevas herramientas mediante modelos grandes.
- Salida de flujo de enlace completo: Admite respuesta en tiempo real y transmisión de resultados en flujo.
- Optimización de Plan y llamada a herramientas mediante RL: Optimiza el proceso de toma de decisiones mediante aprendizaje por refuerzo.
3. Entrega de archivos diversificada
Admite múltiples formatos de salida:
- Formato HTML
- Presentaciones de PowerPoint
- Documentos Markdown
Requisitos del entorno
Requisitos del sistema
- Entorno Java: JDK 17
- Entorno Python: Python 3.11
Preparación del entorno Python
pip install uv
cd genie-tool
uv sync
source .venv/bin/activate
Instalación y despliegue
Método uno: Despliegue desde el código fuente
1. Clonar el proyecto
git clone https://github.com/jd-opensource/joyagent-jdgenie.git
cd genie-tool
2. Configurar el entorno
Modifique el archivo .env.example
para configurar los parámetros relevantes utilizados por la herramienta de ejecución.
3. Iniciar el servicio
Primera ejecución:
sh start_genie_init.sh
Arranques posteriores:
sh start_genie.sh
Método dos: Despliegue con Docker
1. Construir la imagen
cd genie-tool
docker build -t genie:latest .
2. Ejecutar el contenedor
# -v configura el almacenamiento local -e configura el modelo de conversación
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
Desarrollo de extensiones
Desarrollo de herramientas personalizadas
1. Implementar la interfaz BaseTool
/**
* Interfaz base de la herramienta
*/
public interface BaseTool {
String getName(); // Nombre de la herramienta
String getDescription(); // Descripción de la herramienta
Map<String, Object> toParams(); // Parámetros de la herramienta
Object execute(Object input); // Invocar la herramienta
}
2. Crear un ejemplo de agente personalizado
// Ejemplo de agente meteorológico
public class WeatherTool implements BaseTool {
@Override
public String getName() {
return "agent_weather";
}
@Override
public String getDescription() {
return "Este es un agente que puede consultar el clima";
}
@Override
public Map<String, Object> toParams() {
return "{\"type\":\"object\",\"properties\":{\"location\":{\"description\":\"Ubicación\",\"type\":\"string\"}},\"required\":[\"location\"]}";
}
@Override
public Object execute(Object input) {
return "Hoy el clima está soleado";
}
}
3. Registrar el Agente personalizado
En com.jd.genie.controller.GenieController#buildToolCollection
agregue:
WeatherTool weatherTool = new WeatherTool();
toolCollection.addTool(weatherTool);
Integración del servicio MCP
En genie-backend/src/main/resources/application.yml
configure:
mcp_server_url: "http://ip1:port1/sse,http://ip2:port2/sse"
Comparación con otros marcos
Categoría | Agente | ¿Código abierto? | ¿Producto completo de código abierto? | ¿Depende del ecosistema? |
---|---|---|---|---|
Tipo SDK | SpringAI-Alibaba | Parcialmente | No, solo SDK de código abierto | Sí (Plataforma Alibaba Cloud Bailian) |
Tipo SDK | Coze | Parcialmente | No, solo parte del SDK Nieo de código abierto | Sí (Plataforma Volcengine) |
Tipo Marco | Fellow | Sí | No, solo el marco de agente Eko de código abierto | No |
Tipo Marco | Dify | Sí | No, solo el marco de agente de código abierto | No |
Tipo Marco | OpenManus | Sí | No, solo el marco de agente de código abierto | No |
Tipo Producto | JoyAgent-JDGenie | Sí | Sí, producto de agente completo de extremo a extremo de código abierto | No |
Resultados de la prueba de referencia GAIA
Agente | Puntuación | Puntuación_nivel1 | Puntuación_nivel2 | Puntuación_nivel3 | Institución |
---|---|---|---|---|---|
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 |
Resumen
JoyAgent-JDGenie, como marco de múltiples agentes de extremo a extremo de código abierto de JD, tiene las siguientes ventajas clave:
- Alto grado de productización: Ofrece una solución completa de extremo a extremo, lista para usar.
- Rendimiento superior: Destaca en las pruebas de referencia GAIA, superando a varios proyectos de código abierto conocidos.
- Arquitectura avanzada: Admite múltiples modos de colaboración de agentes y ejecución de alta concurrencia.
- Gran extensibilidad: Admite la integración flexible de agentes y herramientas personalizadas.
- Despliegue sencillo: Ofrece múltiples métodos de despliegue y no depende de un ecosistema de plataforma en la nube específico.
Este proyecto proporciona a empresas y desarrolladores una solución de múltiples agentes potente y flexible, especialmente adecuada para escenarios que requieren la construcción rápida de aplicaciones de agentes.