ابنِ وكيل تنفيذ مهام مستقل
التعليمات
في هذا المختبر، ستبني وكيل تنفيذ مهام مستقل كامل بلغة Python. وكيلك سيفكك الأهداف إلى رسوم بيانية موجهة غير دورية (DAG) من المهام الفرعية، وينفذها باستخدام نمط ReAct، ويكتشف عندما يكون عالقاً، ويعيد التخطيط عندما ينحرف التنفيذ، ويستشير البشر عند نقاط التفتيش، ويحترم ميزانيات التنفيذ.
هذه هي البنية وراء وكلاء البرمجة الإنتاجيين ومساعدي البحث وأنظمة أتمتة سير العمل.
نظرة عامة على البنية
هدف المستخدم
|
TaskPlanner: تفكيك إلى DAG مهام فرعية
|
ReactLoop: لكل مهمة فرعية
|
+---> Thought -> Action -> Observation ---+
| |
| StepExecutor: استدعاء أداة، تحليل |
| |
+---- SelfReflection: عالق؟ يدور؟ -------+
|
[إذا عالق]
|
Replanner: إنشاء خطة جديدة
|
HumanCheckpoint: سؤال إذا لزم
|
BudgetManager: فرض الحدود
|
[متابعة أو إنهاء بلطف]
الخطوة 1: مخطط المهام (Task Planner)
ابنِ TaskPlanner يفكك هدفاً عالي المستوى إلى رسم بياني موجه غير دوري (DAG) من المهام الفرعية. كل مهمة فرعية تحتوي:
task_idفريدdescriptionلما يجب إنجازه- قائمة
dependencies(معرّفات مهام أخرى يجب إتمامها أولاً) status(معلقة، قيد التنفيذ، مكتملة، فاشلة)
المخطط يجب أن:
- يقبل نص هدف وينتج قائمة كائنات
SubTask - يحدد ترتيب التنفيذ من رسم التبعيات البياني
- يعيد المهام الجاهزة للتنفيذ (جميع التبعيات مستوفاة)
الخطوة 2: حلقة ReAct
ابنِ ReactLoop تنفذ مهمة فرعية واحدة باستخدام دورة Thought-Action-Observation:
- Thought: يستدل LLM حول ما يجب فعله تالياً لهذه المهمة الفرعية
- Action: يختار LLM أداة ويستدعيها
- Observation: تُلتقط نتيجة الأداة
- تتكرر الدورة حتى ينتج LLM إجابة نهائية أو يُبلغ حد الخطوات
- كل خطوة دورة تُسجل في سجل مهيكل
الخطوة 3: منفّذ الخطوات (Step Executor)
ابنِ StepExecutor يتعامل مع استدعاء الأدوات:
- يقبل إجراءاً (اسم أداة + وسائط) من حلقة ReAct
- يبحث عن الأداة، وينفذها، ويحلل النتيجة
- يعيد
StepResultمهيكلاً مع المخرجات وحالة النجاح/الفشل ومدة التنفيذ - يتعامل مع أخطاء الأدوات بسلاسة (أدوات مفقودة، فشل التنفيذ، انتهاء المهلة)
الخطوة 4: التأمل الذاتي (Self-Reflection)
ابنِ وحدة SelfReflection تقيّم تقدم التنفيذ:
- تحليل سجل خطوات Thought/Action/Observation
- اكتشاف حالات العلوق: إجراءات متطابقة متكررة، تأرجح بين إجراءين، عدم تقدم
- اكتشاف انحراف الهدف: الإجراءات تبتعد عن هدف المهمة الفرعية
- إعادة
ReflectionResultمع تشخيص وتوصية (متابعة، إعادة تخطيط، أو تصعيد)
الخطوة 5: معيد التخطيط (Replanner)
ابنِ Replanner ينشئ خطة جديدة عندما تفشل الأصلية:
- يقبل الخطة الأصلية والخطوات الفاشلة وتشخيص التأمل
- ينشئ خطة معدلة تتجنب النهج الفاشلة
- يتتبع فرق الخطة: ما الذي تغير بين الخطة الأصلية والمعدلة
- يحتفظ بسجل مراجعات الخطة لمنع التدوير بين الخطط
الخطوة 6: نقطة التفتيش البشرية (Human Checkpoint)
ابنِ وحدة HumanCheckpoint توقف التنفيذ لمدخلات بشرية:
- تقيّم ما إذا كانت نقطة تفتيش مطلوبة بناءً على: درجة الثقة، فئة الإجراء (لا رجعة فيه؟)، وعدد إعادات التخطيط حتى الآن
- تنسق ملخصاً واضحاً للحالة الحالية للإنسان
- تقبل قرارات بشرية: موافقة، تعديل خطة، أو إلغاء
- عتبة ثقة قابلة للتكوين (افتراضي: 0.7)
الخطوة 7: مدير الميزانية (Budget Manager)
ابنِ BudgetManager يفرض حدود التنفيذ:
- يتتبع الخطوات المتخذة والرموز المستهلكة ووقت الحائط المنقضي
- حدود قابلة للتكوين لكل بُعد (max_steps، max_tokens، max_time_seconds)
- في كل خطوة، يتحقق مما إذا تم تجاوز أي ميزانية
- عندما تنخفض الميزانية (ضمن 20% من الحد)، يُشير للوكيل بالتلخيص
- عندما تُتجاوز الميزانية، يُطلق إنهاءً لطيفاً: تلخيص التقدم حتى الآن بدلاً من الفشل بصمت
ماذا تقدّم
المحرر يحتوي على 7 أقسام ملفات مع تعليقات TODO. استبدل كل TODO بكود Python الخاص بك. سيقوم المقيّم الذكي بتقييم كل قسم وفقاً لمعايير التقييم.
تلميحات
- لرسم DAG، ترتيب طوبولوجي بسيط يحدد ترتيب التنفيذ. استخدم خوارزمية Kahn أو DFS العودي
- لاكتشاف العلوق، قارن آخر N إجراء في السجل: إذا تكررت، فالوكيل يدور
- لفرق الخطة، خزّن الخطط كقوائم واحسب الخطوات المضافة/المحذوفة/المعدلة
- مدير الميزانية يجب أن يعيد
BudgetStatusمن نوع enum: OK، WARNING، EXCEEDED - استخدم
time.time()لتتبع وقت الحائط وعدّاداً بسيطاً لميزانيات الخطوات/الرموز