Home
Login

إطار عمل تطوير وكيل ذكي يعتمد على نموذج Qwen، ويدعم استدعاء الوظائف ومترجم التعليمات البرمجية و RAG وامتداد المتصفح

Apache-2.0Python 9.7kQwenLMQwen-Agent Last Updated: 2025-06-18

نظرة عامة على مشروع Qwen-Agent

Qwen-Agent هو إطار عمل لتطوير الوكلاء الأذكياء يعتمد على نموذج اللغة الكبير Qwen، وهو متخصص في تطوير تطبيقات LLM التي تتمتع بقدرات اتباع التعليمات واستخدام الأدوات والتخطيط والذاكرة. تم تطوير هذا المشروع وصيانته بواسطة فريق Qwen في Alibaba، وهو حاليًا بمثابة الدعم الخلفي لخدمة الدردشة Qwen (Qwen Chat).

الميزات الأساسية

1. دعم الوكلاء الأذكياء متعدد الوظائف

  • مساعد المتصفح (Browser Assistant): القدرة على تصفح الويب والتعامل معه
  • مفسر التعليمات البرمجية (Code Interpreter): تنفيذ وتحليل كود Python
  • مساعد مخصص (Custom Assistant): تخصيص الوكلاء الأذكياء
  • استرجاع معزز RAG: سؤال وجواب حول المستندات واسترجاع المعرفة
  • ملحق Chrome: مساعد ذكي في شكل ملحق للمتصفح

2. تكامل التكنولوجيا المتقدمة

  • استدعاء الوظائف (Function Calling): دعم تكامل الأدوات وواجهات برمجة التطبيقات (APIs)
  • دعم بروتوكول MCP: توافق بروتوكول سياق النموذج
  • استدعاء الأدوات المتوازية: استخدام الأدوات متعدد الخطوات ومتعدد الجولات
  • قدرة الاستدلال: تكامل نماذج الاستدلال مثل QwQ-32B

آخر تحديثات الأخبار

  • 18 مارس 2025: دعم حقل reasoning_content، وتعديل قالب استدعاء الوظائف الافتراضي
  • 7 مارس 2025: إضافة عرض توضيحي لاستدعاء أدوات QwQ-32B، ودعم الاستدعاء المتوازي ومتعدد الخطوات
  • 3 ديسمبر 2024: ترقية واجهة المستخدم الرسومية (GUI) إلى Gradio 5، تتطلب Python 3.10+
  • 18 سبتمبر 2024: إضافة عرض توضيحي Qwen2.5-Math، وعرض قدرة الاستدلال المتكاملة للأدوات

طريقة التثبيت

تثبيت الإصدار المستقر

pip install -U "qwen-agent[gui,rag,code_interpreter,mcp]"
# أو التثبيت الأدنى
pip install -U qwen-agent

تثبيت إصدار التطوير

git clone https://github.com/QwenLM/Qwen-Agent.git
cd Qwen-Agent
pip install -e ./"[gui,rag,code_interpreter,mcp]"

شرح التبعيات الاختيارية

  • [gui]: دعم واجهة المستخدم الرسومية Gradio
  • [rag]: وظيفة استرجاع معزز RAG
  • [code_interpreter]: وظيفة مفسر التعليمات البرمجية
  • [mcp]: دعم بروتوكول MCP

تكوين خدمة النموذج

الطريقة الأولى: استخدام خدمة DashScope

llm_cfg = {
    'model': 'qwen-max-latest',
    'model_server': 'dashscope',
    # 'api_key': 'YOUR_DASHSCOPE_API_KEY',
    'generate_cfg': {
        'top_p': 0.8
    }
}

الطريقة الثانية: خدمة النموذج ذاتية النشر

llm_cfg = {
    'model': 'Qwen2.5-7B-Instruct',
    'model_server': 'http://localhost:8000/v1',
    'api_key': 'EMPTY',
}

بنية المكونات الأساسية

المكونات الأساسية

  • BaseChatModel: فئة LLM الأساسية، تدعم استدعاء الوظائف
  • BaseTool: فئة الأدوات الأساسية، قابلة للتوسيع لتخصيص الوظائف
  • Agent: فئة الوكيل الذكي الأساسية، تدعم التخصيص عن طريق الوراثة

المكونات المتقدمة

  • Assistant: وكيل ذكي مساعد عام
  • FnCallAgent: وكيل ذكي لاستدعاء الوظائف
  • ReActChat: وكيل ذكي للحوار والاستدلال والعمل

مثال على التطبيق الفعلي

إنشاء وكيل ذكي بأدوات مخصصة

import pprint
import urllib.parse
import json5
from qwen_agent.agents import Assistant
from qwen_agent.tools.base import BaseTool, register_tool
from qwen_agent.utils.output_beautify import typewriter_print

# الخطوة 1: إضافة أداة مخصصة
@register_tool('my_image_gen')
class MyImageGen(BaseTool):
    description = 'خدمة الرسم بالذكاء الاصطناعي (توليد الصور)، أدخل وصفًا نصيًا، وأرجع عنوان URL للصورة المرسومة بناءً على المعلومات النصية.'
    parameters = [{
        'name': 'prompt',
        'type': 'string',
        'description': 'وصف تفصيلي لمحتوى الصورة المطلوب، باللغة الإنجليزية',
        'required': True
    }]
    
    def call(self, params: str, **kwargs) -> str:
        prompt = json5.loads(params)['prompt']
        prompt = urllib.parse.quote(prompt)
        return json5.dumps(
            {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},
            ensure_ascii=False)

# الخطوة 2: تكوين LLM
llm_cfg = {
    'model': 'qwen-max-latest',
    'model_server': 'dashscope',
    'generate_cfg': {
        'top_p': 0.8
    }
}

# الخطوة 3: إنشاء وكيل ذكي
system_instruction = '''بعد تلقي طلب المستخدم، يجب عليك:
- أولاً رسم صورة والحصول على عنوان URL للصورة،
- ثم تشغيل الكود `request.get(image_url)` لتنزيل الصورة،
- وأخيرًا تحديد عملية صورة من المستند المحدد لمعالجة الصورة.
يرجى عرض الصورة باستخدام `plt.show()`.'''

tools = ['my_image_gen', 'code_interpreter']
files = ['./examples/resource/doc.pdf']
bot = Assistant(llm=llm_cfg,
                system_message=system_instruction,
                function_list=tools,
                files=files)

# الخطوة 4: تشغيل دردشة الوكيل الذكي
messages = []
while True:
    query = input('\nuser query: ')
    messages.append({'role': 'user', 'content': query})
    response = []
    response_plain_text = ''
    print('bot response:')
    for response in bot.run(messages=messages):
        response_plain_text = typewriter_print(response, response_plain_text)
    messages.extend(response)

بدء تشغيل واجهة المستخدم الرسومية (Web UI)

from qwen_agent.gui import WebUI
WebUI(bot).run()

تكامل بروتوكول MCP

مثال على تكوين خادم MCP

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
    },
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "test.db"
      ]
    }
  }
}

متطلبات البيئة التابعة

  • Node.js (أحدث إصدار)
  • uv 0.4.18 أو إصدار أحدث
  • Git
  • SQLite

قدرة سؤال وجواب حول مستندات RAG

يوفر المشروع حلول RAG سريعة، بالإضافة إلى وكيل ذكي تنافسي للمستندات الطويلة جدًا، ويتفوق على نماذج سياق النمو الأصلية في اثنين من المعايير الصعبة، ويحقق أداءً مثاليًا في اختبار الإجهاد "البحث عن إبرة في كومة قش" أحادي الطلقة الذي يتضمن سياقًا يبلغ 1 مليون رمز.

مساعد المتصفح BrowserQwen

BrowserQwen هو مساعد متصفح مبني على Qwen-Agent، ويوفر تصفح الويب والتعامل معه واستخراج المعلومات.

الميزات والمزايا التقنية

  1. تصميم معياري: مكونات ذرية، سهلة التوسيع والتخصيص
  2. دعم نماذج متعددة: متوافق مع إصدارات مختلفة من سلسلة Qwen
  3. نظام بيئي غني بالأدوات: أدوات عملية متعددة مدمجة
  4. نشر مرن: دعم الخدمات السحابية والنشر المحلي
  5. صيانة نشطة: تحديثات مستمرة وتحسينات في الوظائف

روابط الموارد ذات الصلة

ملخص

Qwen-Agent هو إطار عمل لتطوير الوكلاء الأذكياء قوي وسهل الاستخدام، ويوفر للمطورين سلسلة أدوات كاملة لبناء تطبيقات LLM معقدة. سواء كان روبوت محادثة بسيطًا أو مساعدًا ذكيًا متعدد الوظائف معقدًا، يمكن تحقيقه ونشره بسرعة من خلال هذا الإطار.

Star History Chart