إطار عمل متعدد الوكلاء شامل وعام على مستوى المنتج مفتوح المصدر من JD.com، يدعم تطوير تطبيقات الوكلاء الذكية الجاهزة للاستخدام.
JoyAgent-JDGenie: تفاصيل المشروع
نظرة عامة على المشروع
JoyAgent-JDGenie هو إطار عمل شامل (end-to-end) متعدد الوكلاء وعام على مستوى المنتج، مفتوح المصدر من JD، مصمم خصيصًا لحل مشكلة "الميل الأخير" في البناء السريع لمنتجات متعددة الوكلاء. على عكس حزم SDK أو أطر عمل الوكلاء مفتوحة المصدر الحالية، فإن JoyAgent-JDGenie هو منتج متعدد الوكلاء شامل، يمكنه الإجابة مباشرة على الاستعلامات أو حل المهام المدخلة.
الميزات الأساسية
1. منتج كامل جاهز للاستخدام
- حل شامل (End-to-end): يمكن للمستخدمين الحصول على النتائج مباشرة بعد إدخال الاستعلام أو المهمة، دون الحاجة إلى تطوير إضافي.
- دعم مخرجات متعددة التنسيقات: يدعم إنشاء مستندات تقارير بصيغة الويب و PowerPoint.
- نشر خفيف الوزن: لا يعتمد على نظام بيئي معين لمنصة سحابية مقارنة بالمنتجات الأخرى.
2. أداء متميز
وصلت دقة الأداء في قائمة GAIA إلى 75.15%، متجاوزة بذلك منتجات معروفة في الصناعة مثل OWL (CAMEL)، Smolagent (Huggingface)، LRC-Huawei (Huawei)، xManus (OpenManus)، و AutoAgent (جامعة هونغ كونغ).
3. بنية تقنية متكاملة
وضع التعاون متعدد الوكلاء
- تنفيذ متعدد المستويات (Multi-level execution): يدعم مستويين: مستوى العمل (work level) ومستوى المهمة (task level).
- وضع متعدد الأنماط (Multi-pattern mode): يتضمن وضع التخطيط والمنفذ (plan and executor) ووضع التفاعل (react).
- محرك تنفيذ DAG عالي التزامن: يوفر كفاءة تنفيذ قصوى.
الوكلاء الفرعيون الأساسيون
- وكيل إنشاء التقارير (Report Agent)
- وكيل الكود (Code Agent)
- وكيل العروض التقديمية (PPT Agent)
- وكيل الملفات (File Agent)
- وكيل البحث (Search Agent)
الميزات التقنية
1. بروتوكول إطار عمل الوكيل
- يدعم أنماط تصميم وكلاء متعددة.
- إدارة سياق متعدد الوكلاء.
- تصميم قابل للتوصيل (pluggable) للوكلاء الفرعيين والأدوات.
2. ميزات وظيفية متقدمة
- تحسين تكراري يعتمد على الأدوات الحالية: يتم إنشاء أدوات جديدة بشكل تكراري بناءً على الأدوات الموجودة، بدلاً من الإنشاء المباشر من الصفر.
- تجميع تلقائي للأدوات الذرية: يتم تفكيك الأدوات الموجودة ضمنيًا إلى أدوات ذرية، ثم يتم تجميعها تلقائيًا بواسطة النماذج الكبيرة لتشكيل أدوات جديدة.
- إخراج تدفقي كامل المسار (Full-link streaming output): يدعم الاستجابة في الوقت الفعلي ونقل النتائج بشكل تدفقي.
- تحسين التخطيط واستدعاء الأدوات باستخدام التعلم المعزز (RL): تحسين عملية اتخاذ القرار من خلال التعلم المعزز.
3. تسليم ملفات متنوع
يدعم تنسيقات إخراج متعددة:
- تنسيق HTML
- عروض PowerPoint التقديمية
- مستندات Markdown
متطلبات البيئة
متطلبات النظام
- بيئة Java: JDK 17
- بيئة Python: Python 3.11
إعداد بيئة Python
pip install uv
cd genie-tool
uv sync
source .venv/bin/activate
التثبيت والنشر
الطريقة الأولى: النشر من الكود المصدري
1. استنساخ المشروع
git clone https://github.com/jd-opensource/joyagent-jdgenie.git
cd genie-tool
2. تهيئة البيئة
عدّل ملف .env.example
لتهيئة المعلمات ذات الصلة المستخدمة بواسطة أداة التنفيذ.
3. بدء الخدمة
للتنفيذ الأول:
sh start_genie_init.sh
للتشغيل اللاحق:
sh start_genie.sh
الطريقة الثانية: النشر باستخدام Docker
1. بناء الصورة
cd genie-tool
docker build -t genie:latest .
2. تشغيل الحاوية
# -v لتعيين التخزين المحلي -e لتعيين نموذج المحادثة
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
التطوير الموسع
تطوير أداة مخصصة
1. تنفيذ واجهة BaseTool
/**
* واجهة الأداة الأساسية
*/
public interface BaseTool {
String getName(); // اسم الأداة
String getDescription(); // وصف الأداة
Map<String, Object> toParams(); // معلمات الأداة
Object execute(Object input); // استدعاء الأداة
}
2. إنشاء مثال وكيل مخصص
// مثال وكيل الطقس
public class WeatherTool implements BaseTool {
@Override
public String getName() {
return "agent_weather";
}
@Override
public String getDescription() {
return "هذا وكيل يمكنه الاستعلام عن الطقس";
}
@Override
public Map<String, Object> toParams() {
return "{\"type\":\"object\",\"properties\":{\"location\":{\"description\":\"الموقع\",\"type\":\"string\"}},\"required\":[\"location\"]}";
}
@Override
public Object execute(Object input) {
return "الطقس اليوم مشمس";
}
}
3. تسجيل الوكيل المخصص
أضف في com.jd.genie.controller.GenieController#buildToolCollection
:
WeatherTool weatherTool = new WeatherTool();
toolCollection.addTool(weatherTool);
دمج خدمة MCP
قم بالتهيئة في genie-backend/src/main/resources/application.yml
:
mcp_server_url: "http://ip1:port1/sse,http://ip2:port2/sse"
مقارنة مع أطر العمل الأخرى
الفئة | الوكيل | هل هو مفتوح المصدر | هل هو منتج كامل مفتوح المصدر | هل يعتمد على نظام بيئي |
---|---|---|---|---|
فئة SDK | SpringAI-Alibaba | جزئي | لا، فقط SDK مفتوح المصدر | نعم (منصة Alibaba Cloud Bailian) |
فئة SDK | Coze | جزئي | لا، فقط جزء من Nieo SDK مفتوح المصدر | نعم (منصة Volc Engine) |
فئة إطار العمل | Fellow | نعم | لا، فقط إطار عمل وكيل Eko مفتوح المصدر | لا |
فئة إطار العمل | Dify | نعم | لا، فقط إطار عمل الوكيل مفتوح المصدر | لا |
فئة إطار العمل | OpenManus | نعم | لا، فقط إطار عمل الوكيل مفتوح المصدر | لا |
فئة المنتج | JoyAgent-JDGenie | نعم | نعم، منتج وكيل شامل (end-to-end) ومفتوح المصدر بالكامل | لا |
نتائج اختبار GAIA المعياري
الوكيل | النتيجة | النتيجة_المستوى1 | النتيجة_المستوى2 | النتيجة_المستوى3 | المؤسسة |
---|---|---|---|---|---|
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 |
ملخص
JoyAgent-JDGenie، كإطار عمل شامل متعدد الوكلاء مفتوح المصدر من JD، يتمتع بالمزايا الأساسية التالية:
- درجة عالية من تحويل المنتج: يوفر حلاً شاملاً (end-to-end) ومتكاملاً، جاهزًا للاستخدام.
- أداء متميز: يظهر أداءً رائعًا في اختبار GAIA المعياري، متجاوزًا العديد من المشاريع مفتوحة المصدر المعروفة.
- بنية متقدمة: يدعم أوضاع تعاون متعددة للوكلاء وتنفيذًا عالي التزامن.
- قابلية توسع قوية: يدعم التكامل المرن للوكلاء والأدوات المخصصة.
- نشر بسيط: يوفر طرق نشر متعددة، ولا يعتمد على نظام بيئي معين لمنصة سحابية.
يوفر هذا المشروع حلاً قويًا ومرنًا متعدد الوكلاء للشركات والمطورين، وهو مناسب بشكل خاص للسيناريوهات التي تتطلب بناء تطبيقات وكلاء ذكية بسرعة.