中文| الإنجليزية
Qwen-Agent هو إطار عمل لتطوير تطبيقات LLM استنادًا إلى التعليمات التالية واستخدام الأداة والتخطيط وقدرات الذاكرة الخاصة بـ Qwen. كما يأتي أيضًا مع تطبيقات أمثلة مثل Browser Assistant، وCode Interpreter، وCustom Assistant.
18 سبتمبر 2024: تمت إضافة العرض التوضيحي لـ Qwen2.5-Math لعرض إمكانات الاستدلال المتكامل للأدوات في Qwen2.5-Math. ملحوظة: منفذ تنفيذ بايثون ليس في وضع الحماية وهو مخصص للاختبار المحلي فقط، وليس للاستخدام في الإنتاج.
قم بتثبيت الإصدار الثابت من PyPI:
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"# أو استخدم `pip install -U qwen-agent` للحد الأدنى من المتطلبات.# المتطلبات الاختيارية، المحددة بين قوسين مزدوجين، هي:# [gui ] لدعم واجهة المستخدم الرسومية المستندة إلى Gradio؛# [rag] لدعم RAG؛# [code_interpreter] لدعم مترجم Code Interpreter؛# [python_executor] للاستدلال المتكامل للأدوات مع Qwen2.5-Math.
وبدلاً من ذلك، يمكنك تثبيت أحدث إصدار للتطوير من المصدر:
استنساخ بوابة https://github.com/QwenLM/Qwen-Agent.gitcd Qwen-Agent pip install -e ./"[gui,rag,code_interpreter,python_executor]"# أو `pip install -e ./` للحد الأدنى من المتطلبات.
يمكنك إما استخدام خدمة النموذج التي تقدمها DashScope الخاصة بـ Alibaba Cloud، أو نشر واستخدام خدمة النموذج الخاصة بك باستخدام نماذج Qwen مفتوحة المصدر.
إذا اخترت استخدام خدمة النموذج التي تقدمها DashScope، فيرجى التأكد من تعيين متغير البيئة DASHSCOPE_API_KEY
على مفتاح DashScope API الفريد الخاص بك.
وبدلاً من ذلك، إذا كنت تفضل نشر واستخدام الخدمة النموذجية الخاصة بك، فيرجى اتباع الإرشادات المتوفرة في الملف التمهيدي الخاص بـ Qwen2 لنشر خدمة واجهة برمجة التطبيقات المتوافقة مع OpenAI. على وجه التحديد، راجع قسم vLLM لنشر وحدة معالجة الرسومات عالية الإنتاجية أو قسم Ollama لنشر وحدة المعالجة المركزية (+GPU) المحلية.
يقدم Qwen-Agent مكونات ذرية، مثل LLMs (التي ترث من class BaseChatModel
وتأتي مع استدعاء الوظائف) والأدوات (التي ترث من class BaseTool
)، إلى جانب المكونات عالية المستوى مثل Agents (المشتقة من class Agent
).
يوضح المثال التالي عملية إنشاء وكيل قادر على قراءة ملفات PDF واستخدام الأدوات، بالإضافة إلى دمج أداة مخصصة:
import pprintimport urllib.parseimport json5from qwen_agent.agents import Assistantfrom qwen_agent.tools.base import BaseTool, Register_tool# الخطوة 1 (اختياري): أضف أداة مخصصة باسم `my_image_gen`.@register_tool('my_image_gen')class MyImageGen(BaseTool):# يخبر "الوصف" الوكيل بوظيفة هذه الأداة. الوصف = "خدمة الرسم بالذكاء الاصطناعي (إنشاء الصور)، وإدخال وصف النص، وإرجاع عنوان URL للصورة المرسوم بناءً على معلومات النص."# تخبر "المعلمات" الوكيل عن الإدخال معلمات الأداة has.parameters = [{'name': 'prompt','type': 'string','description': 'وصف تفصيلي لمحتوى الصورة المطلوبة، باللغة الإنجليزية','required': True}]def call(self, params: str, **kwargs) -> str:# `params` هي الوسائط التي تم إنشاؤها بواسطة وكيل LLM.prompt = json5.loads(params)['prompt']prompt = urllib.parse.quote( موجه) إرجاع json5.dumps ( {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},ensure_ascii=False)# الخطوة 2: قم بتكوين LLM الذي تستخدمه.llm_cfg = {# استخدم الخدمة النموذجية المقدمة من قبل DashScope:'model': 'qwen-max','model_server': 'dashscope',# 'api_key': 'YOUR_DASHSCOPE_API_KEY',# سيستخدم متغير البيئة `DASHSCOPE_API_KEY' إذا لم يتم تعيين 'api_key' هنا.# استخدم خدمة نموذجية متوافقة مع OpenAI API، مثل vLLM أو Ollama:# 'model': 'Qwen2-7B-Chat',# 'model_server': 'http://localhost:8000/v1', # base_url، المعروف أيضًا as api_base# 'api_key': 'EMPTY',# (اختياري) معلمات LLM الفائقة للإنشاء:'generate_cfg': {'top_p': 0.8} }# الخطوة 3: إنشاء وكيل. نستخدم هنا الوكيل `المساعد' كمثال، وهو قادر على استخدام الأدوات وقراءة الملفات.system_instruction = '''أنت مساعد مفيد. بعد تلقي طلب المستخدم، يجب عليك: - أولاً رسم صورة والحصول على عنوان url للصورة، - ثم قم بتشغيل الكود `request.get(image_url)` لتنزيل الصورة، وأخيرًا حدد عملية صورة من المستند المحدد لمعالجة الصورة. يرجى إظهار الصورة باستخدام `plt.show()`.' ''tools = ['my_image_gen', 'code_interpreter'] # `code_interpreter` هي أداة مدمجة لتنفيذ code.files = ['./examples/resource/doc.pdf'] # امنح الروبوت ملف PDF إليه read.bot = Assistant(llm=llm_cfg,system_message=system_instruction,function_list=tools,files=files)# الخطوة 4: تشغيل الوكيل باعتباره chatbot.messages = [] # هذا يخزن سجل الدردشة. بينما صحيح:# على سبيل المثال ، أدخل الاستعلام "ارسم كلبًا وقم بتدويره 90 درجة".query = input('user query:')# إلحاق استعلام المستخدم بسجل الدردشة.messages.append({'role': 'user', 'content ': query})response = []للاستجابة في bot.run(messages=messages):# إخراج البث.print('استجابة الروبوت:')pprint.pprint(response, indent=2)# إلحاق استجابات الروبوت إلى سجل الدردشة.الرسائل.تمديد (الاستجابة)
بالإضافة إلى استخدام عمليات تنفيذ الوكيل المضمنة مثل class Assistant
، يمكنك أيضًا تطوير عملية تنفيذ الوكيل الخاصة بك عن طريق الوراثة من class Agent
. يرجى الرجوع إلى دليل الأمثلة لمزيد من أمثلة الاستخدام.
نعم. توفر فئات LLM استدعاء الوظائف. بالإضافة إلى ذلك، تم أيضًا إنشاء بعض فئات الوكيل بناءً على إمكانية استدعاء الوظيفة، على سبيل المثال، FnCallAgent وReActChat.
لقد أصدرنا حلاً سريعًا لـ RAG، بالإضافة إلى وكيل باهظ الثمن ولكنه تنافسي، للقيام بالإجابة على الأسئلة عبر المستندات الطويلة جدًا. لقد تمكنوا من التفوق في الأداء على نماذج السياق الطويلة الأصلية في معيارين قياسيين صعبين مع كونهم أكثر كفاءة، وأداء مثاليًا في اختبار الضغط "إبرة في كومة قش" بإبرة واحدة والذي يتضمن سياقات رمزية مكونة من مليون رمز. راجع المدونة للحصول على التفاصيل الفنية.
BrowserQwen هو مساعد متصفح مبني على Qwen-Agent. يرجى الرجوع إلى وثائقها للحصول على التفاصيل.
مترجم التعليمات البرمجية ليس في وضع الحماية، ويقوم بتنفيذ التعليمات البرمجية في بيئتك الخاصة. من فضلك لا تطلب من Qwen أداء مهام خطيرة، ولا تستخدم مترجم الكود مباشرة لأغراض الإنتاج.