انتقل إلى المحتوى الرئيسي

الوحدة 5 — التخطيط وتفكيك المهامّ

الوكيل الذي رأيناه إلى الآن يُقرِّر كلّ خطوة على حدة، بلا خريطة. هذا يعمل جيّدًا للأسئلة المتوسّطة (خمس خطوات أو أقلّ)، لكنّه يفشل على المهامّ الأطول: ينسى ما بدأه، يُكرِّر خطوات، يتعثّر بلا مرجع. الحلّ الحديث: خطّة صريحة قبل التنفيذ، مع إعادة تخطيط عند الفشل.

نمط Plan-and-Execute

الفكرة بسيطة: نموذجان بأدوارَين مختلفَين. الأوّل مخطِّط: يقرأ السؤال، ويُنتج قائمة خطوات مرقَّمة. الثاني منفِّذ: يأخذ الخطوات واحدة واحدة، ويستدعي الأدوات لكلّ خطوة، ويُبلِّغ نتيجتها.

def planifier(question):
reponse = client.chat.completions.create(
model="gpt-4o", temperature=0,
messages=[
{"role": "system", "content": "أنت مخطِّط. أنتج قائمة خطوات مرقَّمة (3 إلى 7 خطوات)، كلّ خطوة قابلة للتنفيذ بأداة واحدة."},
{"role": "user", "content": question},
],
)
return parser_liste(reponse.choices[0].message.content)

def executer_plan(plan, question):
resultats = []
for etape in plan:
# حلقة وكيل قصيرة على هذه الخطوة تحديدًا
r = boucle_agent(f"{question}\nالخطوة الحاليّة: {etape}", max_iterations=3)
resultats.append({"etape": etape, "resultat": r})
return resultats

قيمة هذا الفصل: النموذج المخطِّط يرى المهمّة كاملة، فيتّخذ قرارات معماريّة. المنفِّذ يركّز على خطوة واحدة، فيقلّ الالتباس داخل كلّ استدعاء.

متى يبرَّر التخطيط

التخطيط ليس مجّانيّا: يضيف نداء نموذج قويّ (المخطِّط)، ويُعقّد التصحيح. يبرَّر حين:

  • عدد الخطوات كبير (سبع أو أكثر): بلا خطّة، النموذج ينسى ما فعله في الخطوة الثانية عندما يبلغ السادسة.
  • الخطوات مترابطة بترتيب صارم: خطوة تحتاج نتيجة سابقة؛ الاستدلال الخطوة-خطوة يخلط الترتيب.
  • المهمّة قابلة للفشل الجزئيّ: من المفيد أن نعرف عند أيّ خطوة توقّف الوكيل.

لا يبرَّر حين المهمّة قصيرة (خطوتان أو ثلاث)؛ التخطيط في هذه الحالة يُضيع دورة كاملة بلا فائدة، ويرفع الفاتورة 30 ٪.

إعادة التخطيط عند الفشل

خطّة مثاليّة لا توجد. بعد كلّ خطوة، نطرح السؤال: هل الخطّة ما تزال صالحة؟

def executer_avec_replan(plan_initial, question):
plan = plan_initial
i = 0
while i < len(plan):
etape = plan[i]
resultat = executer_etape(etape)
if resultat["statut"] == "echec":
# نُعيد التخطيط للخطوات المتبقّية بعد قراءة سبب الفشل
plan = plan[:i+1] + replanifier(question, plan, i, resultat["raison"])
i += 1
return plan

مثال: خطّة تفترض توفّر بيان أسعار على bourse.com، لكن الأداة تعيد 404. بدل التوقّف، نُعيد استدعاء المخطِّط بسبب الفشل، فيقترح مصدرًا بديلًا أو خطوة تجميع من صفحتَين.

الوكلاء الفرعيّون

مهامّ معقّدة (بحث تنافسيّ على خمس شركات) تُفكَّك إلى وكلاء فرعيّين: وكيل لكلّ شركة، ثمّ وكيل «مُجمِّع» يقرأ المذكّرات الخمس وينتج مذكّرة موحَّدة. الفوائد:

  • توازٍ: الوكلاء الخمسة يعملون متزامنين، فيهبط الزمن إلى خُمس المتتالي.
  • تخصّص: كلّ وكيل بأدوات مخصَّصة لشركته (قاعدة داخليّة مختلفة، مصادر منظّمة مختلفة).
  • عزل الفشل: فشل وكيل شركة X لا يوقف الأربعة الآخرين.

كلفة هذا النمط: تنسيق أعقد، ومضاعفة الرموز على تعليمة النظام. عمليًّا، ثلاثة إلى خمسة وكلاء فرعيّين حدّ معقول قبل أن ينهار التنسيق.

كلفة التخطيط مقابل الفائدة

قياس عمليّ على وكيل البحث بجدول تقييم من 30 سؤالًا:

نمطمتوسّط الخطواتكلفة الرموززمنمعدّل النجاح
بلا تخطيط (ReAct)4.2380012 ث76 ٪
بتخطيط5.1590015 ث84 ٪
بتخطيط + إعادة تخطيط5.6680017 ث89 ٪

الفارق 13 نقطة نجاح مقابل زيادة 79 ٪ في الكلفة. قرار: يبرَّر التخطيط إن كانت المذكّرة تُستهلك لقرارات مكلفة (تقنيّة، ماليّة)؛ لا يبرَّر لبحث استكشافيّ سريع.

الخيط الأحمر: تخطيط لوكيل البحث

نُضيف طبقة تخطيط لأسئلة تُصنَّف «معقّدة» (تعليمة تصنيف قصيرة عند الدخول). الأسئلة البسيطة تبقى بلا تخطيط. المخطِّط يُنتج مثلًا:

1. البحث عن ملاحظات إصدار Postgres 16 الرسميّة.
2. قراءة قسم "logical replication of partitioned tables".
3. استفسار قاعدة داخليّة عن سياسة الفريق حول Postgres 16.
4. مقارنة القيود المذكورة في المصدرَين.
5. تسجيل الوقائع الثلاث في المذكّرة مع مصادرها.

المنفِّذ يُشغِّل خمس حلقات وكيل قصيرة، كلّ واحدة على خطوة. عند فشل خطوة، نُعيد التخطيط للباقي. الأثر أوضح للتصحيح: نعرف الخطوة التي فشلت بلا قراءة عشر رسائل.

الفخّ: الخطّة التي لا تُنفَّذ حرفيًّا

نموذج قد يُنتج خطّة ممتازة، ثمّ يتجاهلها عند التنفيذ. سبب متكرّر: تعليمة المنفِّذ لا تُشير إلى الخطّة، أو الخطّة مذكورة في السطر السادس من التعليمة بينما التعليمات القويّة في الأوّل. الحلّ:

  • تعليمة المنفِّذ تُصدَّر بالخطوة الحاليّة نصًّا: «نفِّذ الخطوة التاليّة فقط: {نصّ الخطوة}. لا تتجاوزها.»
  • نُقيّد الأدوات المتاحة للخطوة: خطوة بحث لا تُعطى أدوات كتابة.
  • نتحقّق بعد كلّ خطوة: هل النتيجة تُطابق ما وعدت به الخطوة؟ إن لا، نُعيد.
لا تُخطِّط لتخطّط

التخطيط أداة، لا هدف. مشاريع كثيرة تُدرج طبقة تخطيط لأنّها «تبدو ذكيّة»، فتدفع كلفتها بلا زيادة نجاح. اقرأ الجدول أعلاه بعينَين ناقدتَين: التخطيط يستحقّ حين تُبرِّره الأرقام، لا حين يُبرِّره الحدس.

الخلاصة

  • نمط Plan-and-Execute يفصل بين مخطِّط ومنفِّذ؛ يُحسّن جودة المهامّ الطويلة، ويوضّح التصحيح.
  • إعادة التخطيط عند فشل خطوة يمنع الوكيل من التوقّف عند أوّل عائق.
  • الوكلاء الفرعيّون يفكّكون المهامّ الكبيرة إلى فروع متوازية؛ حدّ ثلاثة إلى خمسة قبل أن ينهار التنسيق.
  • التخطيط له كلفة (نداء إضافيّ، تعقيد أعمق)؛ يبرَّر بجدول تقييم يبيّن أنّ زيادة النجاح تفوق زيادة الفاتورة.