هل يمكنك إنشاء مهام سير عمل وكيل دون الحاجة إلى [النماذج اللغوية الكبيرة (LLMs)] (https://www.ibm.com/sa-ar/think/topics/large-language-models)؟ الجواب هو نعم. سنشرح في هذا البرنامج التعليمي كيفية بناء نظام توليد معزز بالاسترجاع متعدد الوكلاء محليًا باستخدام AutoGen باستخدام IBM® [Granite™] (https://www.ibm.com/sa-ar/granite).
يعد التوليد المعزز بالاسترجاع (RAG) طريقة فعالة لتزويد النموذج اللغوي الكبير بمجموعات بيانات إضافية من مصادر بيانات مختلفة دون الحاجة إلى ضبط دقيق باهظ التكلفة. وبالمثل، يستفيد RAG الوكيل من قدرة وكيل الذكاء الاصطناعيعلى تخطيط وتنفيذ المهام الفرعية جنبًا إلى جنب مع استرداد المعلومات ذات الصلة لتكملة قاعدة معارف النموذج اللغوي الكبير. تتيح هذه القدرة تحسين وتوسيع نطاق تطبيقات RAG مقارنةً بروبوتات المحادثة التقليدية. لم نعد بحاجة إلى كتابة استعلامات SQL لاستخراج البيانات ذات الصلة من قاعدة المعرفة.
مستقبل RAG الوكيل هو RAG متعدد الوكلاء، حيث يتعاون العديد من الوكلاء المتخصصين لتحقيق زمن انتقال وكفاءة مثاليين. سنوضح هذا التعاون من خلال استخدام نموذج صغير وفعال مثل Granite 3.2 ودمجه مع بنية وكيل معياري. سنستخدم العديد من "الوكلاء المصغرين" المتخصصين الذين يتعاونون لتحقيق المهام من خلال التخطيط التكيفي واستدعاء الأدوات أو الوظيفة. مثل البشر، غالبًا ما يتفوق فريق من الوكلاء، أو نظام متعدد الوكلاء، على الجهود البطولية للفرد، خاصة عندما يكون لديهم أدوار محددة بوضوح وتواصل فعال.
لتنسيق هذا التعاون، يمكننا استخدام AutoGen (AG2) كإطار عمل أساسي لإدارة سير العمل واتخاذ القرار، جنبًا إلى جنب مع أدوات أخرى مثل Ollama لخدمة النماذج اللغوية الكبيرة المحلية وOpen WebUI للتفاعل. AutoGen هو إطار عمل لإنشاء تطبيقات الذكاء الاصطناعي متعددة العوامل التي طورتها Microsoft.1 والجدير بالذكر أن كل المكونات التي تمت الاستفادة منها في هذا البرنامج التعليمي مفتوحة المصدر. تُمكِّنك هذه الأدوات معًا من إنشاء نظام ذكاء اصطناعي قوي ومراعٍ للخصوصية في آنٍ واحد، دون مغادرة جهاز الكمبيوتر المحمول.
يعتمد وكيل استرجاع ®Granite الخاص بنا على بنية معيارية يؤدي فيها كل وكيل دورًا متخصصًا. مثل البشر، يعمل العملاء بشكل أفضل عندما يكون لديهم تعليمات مستهدفة وسياق كافٍ لاتخاذ قرار مستنير. فقد يؤدي الكثير من المعلومات الدخيلة، مثل سجل الدردشة غير المفلتر، إلى حدوث مشكلة "إبرة في كومة القش"، حيث يصبح من الصعب بشكل متزايد فك تشفير الإشارة بسبب كثرة المعلومات.
في بنية الذكاء الاصطناعي الوكيلية هذه، يعمل الوكلاء معًا بشكل تسلسلي لتحقيق الهدف. هكذا يتم تنظيم نظام الذكاء الاصطناعي التوليدي:
وكيل المخطط: ينشئ الخطة الأولية عالية المستوى، مرة واحدة في بداية سير العمل. على سبيل المثال، إذا سأل أحد المستخدمين، "ما هي المشاريع مفتوحة المصدر القابلة للمقارنةً مع المشاريع التي يستخدمها فريقي؟" بعد ذلك، سيقوم الوكيل بتجميع خطة خطوة بخطوة قد تبدو مثل هذا: "1. بحث فريق الوثائق عن تقنيات المصدر المفتوح. 2. ابحث في الويب عن مشاريع مصدر مفتوح مماثلة للمشاريع الموجودة في الخطوة 1.» إذا فشلت أيٌّ من هذه الخطوات أو قدمت نتائج غير كافية، فيمكن تكييف الخطوات لاحقًا بواسطة عامل الانعكاس.
مساعد البحث: مساعد البحث هو العمود الفقري للنظام. يأخذ وينفذ تعليمات مثل «وثائق فريق البحث عن تقنيات مفتوحة المصدر». بالنسبة للخطوة 1 من الخطة، فإنه يستخدم التعليمات الأولية من وكيل المخطط. بالنسبة للخطوات اللاحقة، يتلقى أيضا سياقًا منسقًا من نتائج الخطوات السابقة.
على سبيل المثال، إذا طُلب منك "البحث في الويب عن مشاريع مصدر مفتوح مشابهة"، فستتلقى أيضًا مخرجات خطوة البحث عن المستندات السابقة. واعتمادًا على التعليمات، يمكن لمساعد البحث استخدام أدوات مثل البحث على الويب أو البحث عن المستندات، أو كليهما، لإنجاز مهمته.
ناقد الخطوة: ناقد الخطوة هو المسؤول عن تحديد ما إذا كانت مخرجات الخطوة السابقة تفي بالتعليمات التي أعطيت له بشكل مرضٍ أم لا. يتلقى معلومتين: التعليمات أحادية الخطوة التي تم تنفيذها للتو ومخرجات تلك التعليمات. إن وجود ناقد متدرج في المحادثة يجلب الوضوح حول ما إذا كان الهدف قد تحقق، وهو أمر ضروري للتخطيط للخطوة التالية.
متابع تحقيق الهدف: يقوم متابع تحقيق الهدف بتحديد ما إذا كان الهدف النهائي قد تحقق، استنادًا إلى جميع متطلبات الهدف المقدم، والخطط الموضوعة لتحقيقه، والمعلومات التي تم جمعها حتى الآن. مخرجات المتابع إما "نعم" أو "ليس بعد" متبوعة بشرح موجز لا يزيد عن جملة أو جملتين.
وكيل التفكير وكيل التفكير هو صانع القرار التنفيذي لدينا. يقرر الخطوة التالية التي يجب اتخاذها، سواء كان ذلك التعدي على الخطوة التالية المخطط لها، أو تغيير المسار للتعويض عن الحوادث أو التأكيد على أن الهدف قد تم إكماله. وكما هو الحال مع المدير التنفيذي في الحياة الواقعية، فإنه يقوم بأفضل عملية صناعة القرار عندما يكون لديه هدف واضح في ذهنه ويتم تقديم نتائج موجزة عن التقدم الذي تم إحرازه أو لم يتم إحرازه للوصول إلى هذا الهدف. يكون ناتج وكيل التفكير إما الخطوة التالية التي يجب اتخاذها أو تعليمات الإنهاء إذا تم الوصول إلى الهدف. نقدم لوكيل التفكير العناصر التالية:
إن تقديم هذه العناصر في شكل منظم يوضح لصانع القرار لدينا ما تم إنجازه حتى يتمكن من تحديد ما يجب أن يحدث بعد ذلك.
منشئ التقارير: بمجرد تحقيق الهدف، يقوم منشئ التقارير بتجميع كل النتائج في مخرجات متماسكة تجيب مباشرةً على الاستعلام الأصلي. في حين أن كل خطوة في العملية تولد مخرجات مستهدفة، فإن منشئ التقرير يربط كل شيء معًا في تقرير نهائي.
بالنسبة للمبتدئين، قد يكون من الصعب إنشاء تطبيق الذكاء الاصطناعي الوكيل من البداية. ومن ثم، سوف نستخدم مجموعة من الأدوات المصدر مفتوح. يدمج وكيل استرجاع Granite أدوات متعددة للتوليد المعزز بالاسترجاع الوكيل.
Open WebUI: يتفاعل المستخدم مع النظام من خلال واجهة دردشة سهلة الاستخدام مستضافة في Open WebUI. تعمل هذه الواجهة كنقطة أساسية لإرسال الاستعلامات (مثل "أحضر لي آخر المقالات الإخبارية المتعلقة بملاحظات مشروعي") وعرض المخرجات.
وكيل قائم على Python (إطار العمل AG2): يوجد في قلب النظام وكيل قائم على Python تم إنشاؤه باستخدام AutoGen (AG2). ينسق هذا الوكيل سير العمل عن طريق تقسيم المهام واستدعاء الأدوات ديناميكيًا لتنفيذ الخطوات.
يحق للوكيل الوصول إلى أداتين أساسيتين:
أداة البحث عن المستندات: تقوم بجلب المعلومات ذات الصلة من قاعدة بيانات المتجهات تحتوي على ملاحظات المشروع التي تم تحميلها أو المستندات المخزنة كتضمينات. يستفيد هذا البحث المتجه من واجهات برمجة تطبيقات استرجاع المستندات المضمنة داخل Open WebUI، بدلًا من إعداد مخزن بيانات منفصل تمامًا.
أداة البحث على الويب: تقوم بإجراء عمليات بحث على شبكة الإنترنت لجمع المعارف الخارجية والمعلومات في الوقت الفعلي. في هذه الحالة، نحن نستخدم SearXNG كمحرك البحث الوصفي الخاص بنا.
Ollama: النموذج اللغوي الكبير IBM Granite 3.2 هو نموذج اللغة الذي يدعم النظام. يتم استضافته محليًا باستخدام Ollama، مما يضمن الاستدلال السريع وكفاءة التكلفة وخصوصية البيانات. إذا كنت مهتمًا بتشغيل هذا المشروع باستخدام نماذج أكبر، فيمكنك الوصول إلى واجهة برمجة التطبيقات من خلال IBM watsonx.ai ® أو يفضل OpenAI، على سبيل المثال. ومع ذلك، يتطلب هذا النهج مفتاح API watsonx.ai أو OpenAI. بدلًا من ذلك، نستخدم Ollama المستضاف محليًا في هذا البرنامج التعليمي.
وهناك أطر عمل وكيل أخرى، مفتوحة المصدر، وشائعة ولكنها لم تتم تغطيتها في هذا البرنامج التعليمي، ومنها: LangChain, LangGraph and crewAI.
يمكن الاطلاع على تعليمات الإعداد التفصيلية بالإضافة إلى المشروع بأكمله على IBM Granite Community GitHub. يمكنك العثور على إصدار Jupyter Notebook لهذا البرنامج التعليمي على GitHub أيضًا.
توفِّر الخطوات التالية إعدادًا سريعًا لعامل استرجاع Granite®.
يعد تثبيت Ollama أمرًا بسيطًا مثل تنزيل العميل من موقعOllama الرسمي. بعد تثبيت Ollama، شغِّل الأمر التالي لسحب Granite 3.2 LLM.
أنت الآن جاهز للعمل مع Ollama وGranite.
من الحلول منخفضة التعليمات البرمجية لبناء سير العمل هو AutoGen Studio. ومع ذلك، فإن بناء وكيل بسيط بأنفسنا يمكن أن يساعدنا في فهم إعداد مشروع التوليد المعزز بالاسترجاع الكامل متعدد الوكلاء بشكل أفضل. للمتابعة، قم بإعداد دفتر Jupyter Notebook في بيئة التطوير المتكاملة المفضلة لديك (IDE) وقم بتنشيط بيئة افتراضية عن طريق تشغيل الأوامر التالية في جهازك الطرفي.
python3.11 -m venv venv
source venv/bin/activate
سنحتاج إلى عدد قليل من المكتبات والوحدات النمطية لهذا الوكيل البسيط. تأكد من تثبيت واستيراد ما يلي.
!pip install -qU langchain chromadb tf-keras pyautogen "ag2[ollama]" sentence_transformers
import getpass
from autogen.agentchat.contrib.retrieve_assistant_agent import AssistantAgent
from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent
يوجد العديد من معلمات التكوين لتعيينها محليًا لاستدعاء النموذج اللغوي الكبير الصحيح الذي سحبناه باستخدام Ollama.
ollama_llm_config = {
"config_list": [
{
"model": "granite3.2:8b",
"api_type": "ollama",
}
],
}
يمكننا تمرير معلمات التكوين هذه في المعلمة "llm_config" لفئة "AssistantAgent" لإنشاء مثيل أول وكيل الذكاء الاصطناعي لدينا.
assistant = AssistantAgent(
name="assistant",
system_message="You are a helpful assistant.",
llm_config=ollama_llm_config,
)
يستخدم هذا الوكيل Granite 3.2 لتجميع المعلومات التي تم إرجاعها بواسطة وكيل "ragproxyagent". الوثيقة التي نقدمها لوكيل التوليد المعزز بالاسترجاع كسياق إضافي هي ملف README Markdown البسيط الموجود في مستودع AutoGen على GitHub. بالإضافة إلى ذلك، يمكننا تمرير قاموس جديد للتكوينات الخاصة بعامل الاسترجاع. بعض المفاتيح الإضافية التي قد تجدها مفيدة هي "vector_db" و"chunk_token_size" و"embedding_model".
للحصول على قائمة كاملة بمفاتيح التكوين، يرجى الرجوع إلى الوثائقالرسمية.
ragproxyagent = RetrieveUserProxyAgent(
name="ragproxyagent",
max_consecutive_auto_reply=3,
is_termination_msg=lambda msg: msg.get("content") is not None or "TERMINATE" in msg["content"],
system_message = "Context retrieval assistant.",
retrieve_config={
"task": "qa",
"docs_path": "https://raw.githubusercontent.com/microsoft/autogen/main/README.md",
"get_or_create": True,
"collection_name": "autogen_docs",
"overwrite": True
},
code_execution_config=False,
human_input_mode="NEVER",
)
الآن، يمكننا بدء محادثة مع وكيل التوليد المعزز بالاسترجاع الخاص بنا لطرح سؤال يتعلق بالمستند المقدم كسياق.
qs = "What languages does AutoGen support?"
result = ragproxyagent.initiate_chat(
assistant, message=ragproxyagent.message_generator, problem=qs
)
print(result)
يرجى ملاحظة أنه تم تنقيح محتوى Markdown لملف README من المخرجات للإيجاز.
المخرجات:
محاولة إنشاء مجموعة.
2025-07-21 12:20:36:125 - autogen.agentchat.contrib.retrieve_user_proxy_agent - INFO - Found 1 chunks.
2025-07-21 12:20:36,129 - autogen.agentchat.contrib.vectordb.chromadb - معلومات - لا يتم تضمين المحتوى. سيستخدم وظيفة التضمين الخاصة بـ VectorDB لإنشاء تضمين المحتوى.
يُرجع VectorDB معرف المستند: [['8e9131c7']]
إضافة محتوى المستند 8e9131c7 إلى السياق.
ragproxyagent (إلى مساعد):
أنت روبوت محادثة معزز للاسترجاع. أنت تجيب على أسئلة المستخدم بناءً على معرفتك الخاصة والسياق الذي يقدمه المستخدم.
إذا لم تتمكن من الإجابة على السؤال بالسياق الحالي أو بدونه، يجب عليك الرد بالضبط "تحديث السياق".
يجب عليك إعطاء إجابة قصيرة قدر الإمكان.
سؤال المستخدم هو: ما اللغات التي يدعمها AutoGen؟
السياق هو:
[REDACTED]
مساعد (إلى ragproxyagent):
يبدو أن النص المقدم هو ملف README لمشروع AutoGen، وهي مبادرة مفتوحة المصدر من Microsoft. فيما يلي ملخص لمحتواه:
تتضمن README أيضًا جدولًا يلخص الحزم المتوفرة لكل لغة مدعومة (C# وPython) ومديري الحزم الخاصة بكل منهما (NuGet وPyPI). وهذا يجعل من السهل على المطورين التعرف بسرعة على العناصر الضرورية لبدء استخدام AutoGen بلغتهم المفضلة.
>>>>>>>> إنهاء التشغيل (601a53dc-8a5d-4e19-8503-1517fe3c7634): استولى شرط رسالة الإنهاء على الوكيل "ragproxyagent"
رائع! نجح وكيلنا المساعد ووكيل التوليد المعزز بالاسترجاع في تجميع السياق الإضافي للاستجابة بشكل صحيح لاستعلام المستخدم باستخدام لغات البرمجة التي يدعمها AutoGen حاليًا. يمكنك أن تفكر في هذا باعتباره محادثة جماعية بين الوكلاء الذين يتبادلون المعلومات. هذا المثال هو عرض توضيحي بسيط لتنفيذ التوليد المعزز بالاسترجاع الوكيل محليًا باستخدام AutoGen.
الآن، دعنا ننتقل إلى بناء نظام توليد معزز بالاسترجاع وكيل أكثر تقدمًا. في محطتك الطرفية، قم بتثبيت وتشغيل Open WebUI.
pip install open-webui
open-webui serve
للبحث على الويب، سنستفيد من القدرات المضمنة في Open WebUI.
يدعم Open WebUI عددًا من موفري البحث. بشكل عام، يمكنك إما استخدام خدمة واجهة برمجة تطبيقات (API) تابعة لجهة خارجية، والتي ستحتاج إلى الحصول على مفتاح API لها، أو يمكنك إعداد حاوية SearXNG Docker محليًا. في كلتا الحالتين، ستحتاج إلى تكوين موفر البحث الخاص بك في وحدة تحكم واجهة مستخدم الويب المفتوحة.
يوجد هذا التكوين، إما مؤشر إلى SearXNG وإما إدخال مفتاح واجهة برمجة التطبيقات الخاصة بك، ضمن Admin Panel > Settings > Web Search في وحدة تحكم Open WebUI.
يرجى الرجوع إلى الإرشادات الواردة في وثائقOpen WebUI للحصول على إرشادات أكثر تفصيلًا.
1. في متصفحك، انتقل إلى http://localhost:8080/ للوصول إلى Open Web UI. إذا كانت هذه هي المرة الأولى التي تفتح فيها واجهة Open WebUI، فقم بتسجيل اسم مستخدم وكلمة مرور. يتم الاحتفاظ بهذه المعلومات محلية بالكامل لجهازك.
2. بعد تسجيل الدخول، انقر فوق الرمز الموجود في الجانب الأيسر السفلي حيث يوجد اسم المستخدم الخاص بك. من القائمة، انقر فوق لوحة الإدارة.
3. في علامة التبويب Functions، انقر فوق + لإضافة دالة جديدة.
4. أعط الوظيفة اسمًا، مثل "Granite RAG Agent"، ووصفًا، كلاهما
5. الصق البرنامج النصي granite_autogen_rag.py Python في مربع النص المقدم، واستبدل أي محتوى موجود.
6. انقر فوق حفظ في أسفل الشاشة.
7. مرة أخرى في صفحة Functions، تأكد من تبديل الوكيل إلى Enabled.
8. انقر فوق أيقونة الترس بجوار مفتاح التمكين لتخصيص أي إعدادات مثل نقطة نهاية الاستدلال أو نقطة نهاية SearXNG أو معرّف النموذج.
الآن، يظهر وكيل AutoGen الجديد تمامًا كنموذج في واجهة Open WebUI. يمكنك تحديده وتزويده باستفسارات المستخدم.
1 في واجهة مستخدم الويب المفتوحة، انتقل إلى Workspace > Knowledge. 2. انقر فوق + لإنشاء مجموعة جديدة. 3. قم بتحميل المستندات لكي يقوم وكيل استرجاع Granite بالاستفسار عنها.
لإعداد موفر بحث (على سبيل المثال، SearXNG)، اتبع هذا الدليل.
معلمات التكوين هي كما يلي:
| المعلمة | الوصف | القيمة الافتراضية |
|---|---|---|
| task_model_id | النموذج الأساسي لتنفيذ المهام | granite3.2:8b |
| vision_model_id | نموذج الرؤية لتحليل الصور | granite-vision3.2:2b |
| openai_api_url | نقطة نهاية واجهة برمجة التطبيقات لمكالمات النموذج على غرار OpenAI | http://localhost:11434 |
| Openai_API_API_key | مفتاح واجهة برمجة التطبيقات للمصادقة | Ollama |
| vision_api_url | نقطة نهاية للمهام المتعلقة بالرؤية | http://localhost:11434 |
| model_temperature | يتحكم في عشوائية الاستجابة | 0 |
| max_plan_steps | الحد الأقصى للخطوات في تخطيط الوكيل | 6 |
ملاحظة***: يمكن تكوين هذه المعلمات من خلال أيقونة الترس في قسم "Functions" في لوحة إدارة واجهة مستخدم Open WebUI بعد إضافة الوظيفة.
يقوم وكيل استرجاع Granite® بتنفيذ التوليد المعزز بالاسترجاع القائم على AG2 من خلال الاستعلام عن المستندات المحلية ومصادر الويب، وتنفيذ تخطيط المهام متعددة الوكلاء وفرض التنفيذ التكيفي. ابدأ محادثة وزود نظام الوكيل الخاص بك باستعلام متعلق بالمستندات المقدمة لرؤية سلسلة التوليد المعزز بالاسترجاع أثناء العمل.
يتيح الإعداد متعدد الوكلاء إنشاء أدوات عملية وقابلة للاستخدام من خلال الحصول على أقصى استفادة من النماذج مفتوحة المصدر متوسطة الحجم مثل Granite 3.2. يمكن أن تعمل بنية التوليد المعزز بالاسترجاع الوكيلة هذه، التي تم إنشاؤها باستخدام أدوات مفتوحة المصدر بالكامل، كنقطة انطلاق لتصميم وتخصيص وكلاء الإجابة على الأسئلة وخوارزميات الذكاء الاصطناعي. يمكن استخدامه أيضًا -بشكل مبتكر- لمجموعة كبيرة من حالات الاستخدام. في هذا البرنامج التعليمي، أتيحت لك الفرصة للتعمق في الأنظمة الوكيلة البسيطة والمعقدة، والاستفادة من القدرات. تم استدعاء Granite LLM باستخدام Ollama، مما يسمح باستكشاف محلي بالكامل لهذه الأنظمة. كخطوة تالية، فكر في دمج المزيد من الأدوات المخصصة في نظام الوكيل الخاص بك.
استفد من الذكاء الاصطناعي في عملك بالاستعانة بخبرة IBM الرائدة في مجال الذكاء الاصطناعي ومحفظة حلولها المتوفرة لك.
أعدّ ابتكار عمليات ومهام سير العمل الحساسة بإضافة الذكاء الاصطناعي لتعزيز التجارب وصنع القرارات في الوقت الفعلي والقيمة التجارية.
[1] Wu, Qingyun, et al. “AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation Framework.” GitHub, 2023, github.com/microsoft/autogen.