أُطر عمل وكلاء الذكاء الاصطناعي مفتوحة المصدر
بمجرد أن تبني بضعة وكلاء يدويًا، تتكرّر نفس السباكة مرارًا: حلقة تستدعي النموذج، وتشغّل الأداة التي طلبها، وتعيد إليه النتيجة، وتتوقف عند اكتمال المهمة. تُغلّف أُطر عمل الوكلاء تلك السباكة — إضافةً إلى الحالة والذاكرة والتنسيق متعدد الوكلاء — كي تكتب قدرًا أقل من الشيفرة الرابطة. هذه الصفحة خريطة ثابتة ومحايدة تجاه المزوّد لأهم الخيارات مفتوحة المصدر، وما تقدّمه لك فعليًا، وكيفية الاختيار. جميعها تقريبًا محايدة تجاه النموذج: تعمل مع Claude وGPT وGemini والنماذج المحلية مفتوحة الأوزان.
- معرفة ما يقدّمه لك إطار عمل الوكيل مقارنةً بحلقة تكتبها بنفسك — وما لا يقدّمه
- التعرّف على الأنماط الثلاثة: الرسوم البيانية ذات الحالة، والطواقم المبنية على الأدوار، والحلقات البسيطة
- استخدام إجراء قابل للتكرار لاختيار واحد — بموازنة التعقيد مقابل التحكّم
- تذكّر أن معظمها محايد تجاه النموذج — نادرًا ما يقيّدك الإطار بمزوّد واحد
ما الذي يقدّمه لك إطار عمل الوكيل فعليًا
انزع العلامة التجارية، فإذا بالإطار يعرض عليك مجموعة جزئية من أربعة أشياء:
- التنسيق (Orchestration) — حلقة التحكّم. خطوات متسلسلة، وتفرّعات، وإعادات محاولة، وحلقات-حتى-الاكتمال، و(بشكل متزايد) تنفيذ صامد ينجو من الانهيار ويستأنف من حيث توقّف.
- الأدوات — طريقة قياسية للإعلان عن دالة يمكن للنموذج استدعاؤها، والتحقّق من وسائطها، وتشغيلها، وإعادة النتيجة. نفس حلقة الوصف←الاستدعاء←التنفيذ←الإعادة التي تعرفها مسبقًا من استخدام الأدوات.
- الذاكرة والحالة — مكان لحفظ سجلّ المحادثة، والحقائق في مسوّدة العمل، والمستندات المُسترجَعة عبر الأدوار، كي لا يكون الوكيل فاقدًا للذاكرة بين الخطوات.
- تعدّد الوكلاء — أنماط لعدة وكلاء متخصّصين يسلّم بعضهم العمل إلى بعض: مشرف يفوّض إلى عمّال، أو نظراء يتعاونون على مهمة. (نفس الفكرة مفاهيميًا مثل الوكلاء الفرعيين في Claude Code.)
يستحقّ الإطار العناء حين تضطر لولاه إلى كتابة الأربعة جميعًا يدويًا وصيانتها. وهو لا يستحقّ العناء حين تكون مهمتك "استدعِ النموذج، وشغّل أداة أو أداتين، وأعِد إجابة" — هناك يكون الإطار عبئًا زائدًا تُنفق الوقت في مصارعته.
الأنماط الثلاثة
تختلف الأُطر أقلّ ممّا يوحي تسويقها. توجد في الحقيقة ثلاثة أشكال، ومعظم المشاريع تنويعة على أحدها:
- الرسم البياني/سير العمل ذو الحالة. تنمذج الوكيل كرسم بياني صريح من عُقَد وحواف (أو خطوات وانتقالات). أقصى قدر من التحكّم، وحالة قابلة للفحص، ومناسب للتدفقات طويلة الأمد وتلك التي تُدخِل البشر في الحلقة. يتطلّب تعلّمًا أكبر مقدّمًا. ← LangGraph، LlamaIndex Workflows.
- الطاقم المبني على الأدوار. تصف الوكلاء حسب الدور ("باحث"، "كاتب"، "مراجع") وتدعهم يتعاونون أو يشغّلون عملية. سريع للتعبير عن فريق متعدّد الوكلاء؛ تقايض بعض التحكّم الدقيق مقابل التجريد رفيع المستوى. ← CrewAI، وأسلوب تعدّد الوكلاء الحواري في AutoGen.
- الحلقة البسيطة / تجريدات قليلة. طبقة رقيقة فوق استدعاء الأدوات الأصلي للنموذج، مع تسليمات بين بضعة وكلاء وليس أكثر من ذلك بكثير. سهلة القراءة من البداية إلى النهاية، وسهلة التخلّي عنها. ← OpenAI Agents SDK (الخلَف الإنتاجي لمشروع Swarm التجريبي)، والحلقة البسيطة التي تكتبها بنفسك.
- ابدأ بأبسط شيء يعمل — غالبًا ما تتفوّق حلقة بسيطة لاستدعاء الأدوات على إطار ثقيل.
جولة سريعة (تحقّق من الموضع قبل أن تلتزم)
هذه هي المشاريع المفتوحة الجديرة بالمعرفة. سُمّيت فقط لأن المستودع الحقيقي لكلٍّ منها جرى التحقّق منه؛ وكل ما هو متقلّب يعيش خلف VerifyNote أعلاه.
- LangGraph — إطار عمل تنسيق منخفض المستوى لوكلاء ذوي حالة يعملون لأمد طويل مُنمذجين كرسوم بيانية؛ التنفيذ الصامد وإدخال البشر في الحلقة من الميزات الأساسية. صالح للاستخدام مستقلًا أو مع منظومة LangChain الأوسع. محايد تجاه النموذج.
- LlamaIndex — بدأ كإطار بيانات/RAG (موصّلات، فهارس، استرجاع) ويشحن الآن أيضًا طبقة Workflows مدفوعة بالأحداث للوكلاء. قوي حين يكون وكيلك جوهريًا استرجاعًا فوق مستنداتك.
- Microsoft AutoGen — إطار عمل لأنظمة تعدّد الوكلاء الحوارية. اعتبارًا من منتصف 2026 هو في وضع الصيانة؛ توجّه Microsoft المشاريع الجديدة إلى خلَف موحّد (Microsoft Agent Framework، الذي يدمج AutoGen + Semantic Kernel). تحقّق من الحالة الراهنة قبل البدء.
- CrewAI — إطار مبني على الأدوار: عرّف الوكلاء حسب الدور والهدف، ونظّمهم في طواقم (Crews) (تعاون مستقل) أو تدفقات (Flows) (تحكّم مدفوع بالأحداث). مسار سريع إلى فريق متعدّد الوكلاء.
- OpenAI Agents SDK — إطار خفيف عمدًا بتجريدات قليلة لتدفقات العمل متعدّدة الوكلاء مع التسليمات. رغم اسمه فهو محايد تجاه المزوّد (تشير وثائقه إلى دعم أكثر من 100 نموذج LLM)، وهو الخلَف الجاهز للإنتاج لمشروع Swarm التجريبي.
- حلقة الوكيل البسيطة — بلا إطار على الإطلاق: حلقة
whileخاصة بك حول استدعاء الأدوات الأصلي للنموذج. الافتراضي الصحيح للوكلاء البسطاء، والشيء الذي تغلّفه في نهاية المطاف كل الأُطر أعلاه.
كيف تختار إطار عمل
- جملة واحدة عمّا يفعله الوكيل، إضافةً إلى ما لا يمكن التفاوض عليه: زمن الاستجابة، وسقف التكلفة، وخصوصية البيانات، وهل يجب أن تنجو عمليات التشغيل من الانهيار، وهل يجب أن يوافق بشر على الخطوات.
- إن كان وكيلًا واحدًا يستدعي أداة أو أداتين، اكتب حلقة بسيطة. كثير من الوكلاء الإنتاجيين لا يحتاجون أكثر أبدًا. تبنَّ إطارًا فقط حين تضطر لولاه إلى إعادة تنفيذ التنسيق والذاكرة وتعدّد الوكلاء بنفسك.
- طويل الأمد / إدخال بشر في الحلقة / حالة قابلة للفحص ← رسم بياني ذو حالة (LangGraph، LlamaIndex Workflows). فريق من المتخصّصين ← طاقم مبني على الأدوار (CrewAI). بضعة وكلاء يتسلّمون العمل، مع إبقائه بسيطًا ← حلقة بسيطة (OpenAI Agents SDK، أو حلقتك الخاصة).
- تأكّد أن المستودع مصان بنشاط (وليس في وضع الصيانة) وأنه يدعم بنظافة النموذج الذي تستخدمه فعلًا — Claude أو GPT أو Gemini أو نموذجًا محليًا. معظمها محايد تجاه المزوّد؛ تحقّق ولا تفترض.
- ابنِ الخطوة الأصعب وحدها — الأداة الشائكة، أو التسليم، أو الاستئناف بعد الفشل — في مرشّحَين. التجريد الذي يجعل تلك الخطوة قابلة للقراءة هو الفائز.
- أبقِ أدواتك وموجّهاتك دوالَّ وسلاسل نصية بسيطة، كي يغلّف الإطار منطقك بدلًا من أن يمتلكه. ينبغي أن يعني تبديل الأُطر إعادة توصيل التنسيق، لا إعادة كتابة كل شيء.
الشيء الذي يغلّفه كل إطار
قبل أن تمدّ يدك إلى أي مكتبة، يفيدك أن ترى الحلقة التي بُنيت عليها جميعًا. هذه هي الفكرة بأكملها — النموذج يقرّر، وأنت تنفّذ، وتكرّر حتى الاكتمال:
# Provider-neutral agent loop — the core every framework wraps.
# `model_call` and `run_tool` are yours; swap in Claude, GPT, Gemini, or a local model.
def agent_loop(task, tools, max_steps=10):
messages = [{"role": "user", "content": task}]
for _ in range(max_steps):
# 1. Ask the model what to do next (it sees the tool schemas).
response = model_call(messages, tools=tools)
# 2. No tool requested → the model is done. Return its answer.
if not response.tool_calls:
return response.text
# 3. Run each requested tool and feed results back in.
messages.append(response.as_message())
for call in response.tool_calls:
result = run_tool(call.name, call.arguments)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": result,
})
return "Stopped: hit max_steps without finishing."
إن استطعت قراءة هذا، فأنت تفهم ما تفعله كل الأُطر في هذه الصفحة تحت الغطاء. الرسوم البيانية تضيف حالة وتفرّعًا صريحين؛ والطواقم تضيف أدوارًا وتفويضًا؛ وأُطر SDK البسيطة تضيف تسليمات مرتّبة — لكن نبض القلب دائمًا هو هذه الحلقة.
موجّه نظام أدنى للوكيل (يتلاءم مع الحلقة أعلاه)
You are a task-completing agent with access to tools.
Loop:
1. Think briefly about the next single step toward the goal.
2. If a tool would help, call exactly ONE tool with valid arguments.
3. When you have enough to answer, stop calling tools and give the final answer.
Rules:
- Prefer the fewest tool calls that get the job done.
- If a tool fails, read the error and adjust — do not repeat the same call.
- Never invent tool results; use only what tools actually returned.
- If the goal is impossible with the available tools, say so and stop.
Goal: {one-sentence task}ملاحظة حول الضجيج
لا إطار هنا هو "الأفضل" — ذلك سؤال مُشوّه. أُطر الرسوم البيانية تفوز على صعيد التحكّم والصمود؛ وأُطر الطواقم تفوز على صعيد التعبير عن فريق بسرعة؛ والبسيطة تفوز على صعيد القابلية للقراءة وانخفاض التقييد؛ والحلقة البسيطة تفوز أكثر ممّا تعترف به ملفات README الخاصة بالأُطر. الخيار الصحيح هو أصغر أداة تجعل خطوتك الأصعب واضحة. وكما هي الحال في اختيار نموذج، دع مهمتك أنت — لا عدد النجوم — هو من يقرّر. نفس الانضباط الذي تطبّقه مع التقييمات ينطبق هنا: ابنِ نموذجًا أوّليًا، وقِس على حالات حقيقية، واحتفظ بمخرج للطوارئ.
اختبر نفسك
0/3- يغلّف إطار عمل الوكيل التنسيق والأدوات والذاكرة وتنسيق تعدّد الوكلاء — تبنَّ واحدًا فقط حين تضطر لولاه إلى بناء الأربعة جميعًا بنفسك.
- ثلاثة أنماط تغطّي الميدان: الرسوم البيانية ذات الحالة (تحكّم/صمود)، والطواقم المبنية على الأدوار (فرق سريعة)، والحلقات البسيطة (قابلية للقراءة، تقييد منخفض).
- جميعها تقريبًا محايدة تجاه النموذج — تعمل على Claude وGPT وGemini والنماذج المحلية؛ تحقّق لكل مشروع بدلًا من الافتراض.
- لا إطار هو 'الأفضل' على نحو شامل؛ اختر أصغر أداة تجعل خطوتك أنت الأصعب واضحة، واحتفظ بمخرج للطوارئ.
- الحلقة البسيطة لاستدعاء الأدوات هي الافتراضي الصادق — وهي بالضبط ما تغلّفه كل الأُطر.
- حالة الصيانة تتغيّر (مثلًا AutoGen ← خلَف له)؛ تأكّد أن المشروع مصان بنشاط في مستودعه نفسه قبل الالتزام.
المصادر والقراءة الإضافية
- LangGraph — GitHub — إطار تنسيق منخفض المستوى لوكلاء ذوي حالة يعملون لأمد طويل.
- نظرة عامة على LangGraph — وثائق LangChain — المفاهيم، والتنفيذ الصامد، وإدخال البشر في الحلقة.
- LangChain — GitHub — المنظومة الأوسع التي يتكامل معها LangGraph.
- LlamaIndex — GitHub — إطار بيانات/RAG مع طبقة Workflows مدفوعة بالأحداث للوكلاء.
- وثائق LlamaIndex — RAG، ومحرّكات الاستعلام، والوكلاء، وWorkflows.
- Microsoft AutoGen — GitHub — إطار تعدّد الوكلاء الحواري (تحقّق من حالة الصيانة).
- Microsoft Agent Framework — GitHub — الخلَف الموحّد (AutoGen + Semantic Kernel) لبناء الوكلاء وتنسيقهم.
- CrewAI — GitHub — إطار متعدّد الوكلاء مبني على الأدوار مع الطواقم والتدفقات.
- وثائق CrewAI — الوكلاء، والمهام، والطواقم، والتدفقات، والأدوات.
- OpenAI Agents SDK — GitHub — إطار متعدّد الوكلاء خفيف ومحايد تجاه المزوّد مع التسليمات.
- وثائق OpenAI Agents SDK — نموذج الوكيل الأدنى التجريدات.
- OpenAI Swarm — GitHub — السلَف التجريبي الذي يحلّ محلّه الـ Agents SDK (تعليمي، متجاوَز الآن).
التالي
- الطريقة المحايدة تجاه المزوّد لاختيار نموذج ← اختيار نموذج
- الحلقة التي تغلّفها هذه الأُطر ← استخدام الأدوات
- تعدّد الوكلاء بطريقة Claude Code ← الوكلاء الفرعيون
- كيف تقارن المرشّحين فعليًا ← التقييمات