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

نظرة عامة

يمكن لـ CrewAI التخطيط على مستويين:
  • تخطيط الوكيل: يكتب الوكيل خطة خطوة بخطوة لعمله، ثم ينفّذ كل خطوة ويتحقق منها. اضبطه باستخدام Agent(planning_config=PlanningConfig(...)).
  • تخطيط الطاقم: قبل تشغيل الطاقم، يكتب CrewPlanner خطة لكل مهمة ويضيفها إلى وصف كل مهمة. فعّله باستخدام Crew(planning=True).
يمكنك استخدام أيٍّ منهما، أو كليهما معًا.

تخطيط الوكيل

مرّر PlanningConfig إلى الوكيل لتفعيل التخطيط:
وجود PlanningConfig يفعّل التخطيط. لإيقافه، اترك planning_config دون تعيين.

كيف يعمل

عندما يبدأ الوكيل مهمة، يشغّل حلقة تخطيط وتنفيذ:
  1. التخطيط. يكتب LLM التخطيط خطة، مع توجيهه بالبقاء ضمن max_steps خطوة، ويحدد ما إذا كانت الخطة جاهزة.
  2. التحسين. إذا لم تكن الخطة جاهزة، يحسّنها المخطِّط حتى تصبح جاهزة أو حتى الوصول إلى max_attempts.
  3. التنفيذ. تصبح كل خطوة عنصر todo وتعمل في حلقة أدوات خاصة بها، مقيّدة بـ max_step_iterations و step_timeout.
  4. المراقبة. بعد كل خطوة، يتحقق الوكيل من النتيجة. يعتمد مقدار التحقق على reasoning_effort.
  5. إعادة التخطيط. بحسب reasoning_effort، قد تدفع خطوة فاشلة أو خطة لم تعد مناسبة الوكيل إلى كتابة خطة جديدة، حتى max_replans مرة.
  6. الإجابة. يبني الوكيل الإجابة النهائية من نتائج الخطوات.
تُحفظ الخطة في حالة تنفيذ الوكيل، ولا تُضاف إلى وصف المهمة. يحتاج التنفيذ خطوة بخطوة إلى خطة جاهزة ذات خطوات منظمة، يحصل عليها المخطِّط عبر function calling. إذا لم تكن الخطة جاهزة بعد max_attempts، أو كان LLM التخطيط لا يدعم function calling، يعمل الوكيل بحلقة التنفيذ القياسية بدلًا من ذلك.

مستوى جهد الاستدلال

يتحكم reasoning_effort فيما يحدث بعد كل خطوة: يتجاوز observe_steps مراجعة LLM في أي مستوى: True يضيفها إلى "low"، و False يزيلها من "medium" و "high". مع observe_steps=True، يعيد "low" التخطيط أيضًا عندما تقول المراجعة إن خطوة فاشلة تحتاج إلى خطة جديدة.

خيارات الإعداد

str
افتراضي:"medium"
مقدار تحقق الوكيل وتكيّفه بعد كل خطوة: "low" أو "medium" أو "high".
bool
افتراضي:"None"
تشغيل مراجعة LLM بعد كل خطوة. القيمة None تراجع في "medium" و "high" فقط.
int
افتراضي:"None"
الحد الأقصى لمحاولات التخطيط، بما فيها الخطة الأولى. القيمة None تواصل التحسين حتى يعلّم المخطِّط الخطة بأنها جاهزة، مما قد يضيف استدعاءات LLM. عيّن رقمًا لتقييدها.
int
افتراضي:"20"
حد الخطوات الذي يُطلب من المخطِّط الالتزام به. يُمرَّر إلى الموجّه بصفة {max_steps} ولا يُفرض على الخطة المُعادة. يجب ألا يقل عن 1.
int
افتراضي:"3"
الحد الأقصى لمرات إعادة التخطيط الكاملة قبل أن يُنهي الوكيل إجابته. القيمة 0 تعطّل إعادة التخطيط.
int
افتراضي:"15"
الحد الأقصى لتكرارات LLM في خطوة واحدة. القيم الأقل تجعل الخطوات أسرع لكن أقل شمولًا.
int
افتراضي:"None"
الحد الأقصى بالثواني لخطوة واحدة، ويُفحص قبل كل استدعاء LLM داخل الخطوة. عند تجاوزه، تتوقف الخطوة وتُعيد ما لديها حتى تلك اللحظة. لا تُعلَّم الخطوة بأنها فاشلة، ولا يُقاطَع استدعاء LLM أو أداة قيد التشغيل. القيمة None تعني عدم وجود مهلة.
str | BaseLLM
افتراضي:"None"
نموذج LLM المستخدم في التخطيط وفي المراجعة بعد كل خطوة. القيمة None تستخدم LLM الوكيل.
str
افتراضي:"None"
موجّه نظام مخصص للتخطيط. القيمة None تستخدم الموجّه المدمج.
str
افتراضي:"None"
موجّه مخصص للخطة الأولى. راجع الموجّهات المخصصة أدناه.
str
افتراضي:"None"
موجّه مخصص لتحسين الخطة. راجع الموجّهات المخصصة أدناه.
إليك وكيلًا يستخدم نموذجًا منفصلًا وأقل تكلفة للتخطيط ويقيّد كل جزء من الحلقة:

الموجّهات المخصصة

يُملأ plan_prompt و refine_prompt باستخدام str.format في Python. العناصر النائبة التالية متاحة: إذا لم تتضمن موجّهاتك {max_steps}، فلن يتلقى المخطِّط أي حد للخطوات.
أي عنصر نائب آخر، أو { أو } حرفي، يؤدي إلى فشل التخطيط. عندها يسجّل الوكيل الخطأ ويعمل دون خطة. اكتب الأقواس الحرفية بالشكل {{ و }}.

التخطيط دون مهمة

يعمل التخطيط أيضًا عند استدعاء الوكيل مباشرةً باستخدام kickoff()، دون Task أو Crew. تُستخدم رسالة الإدخال كوصف للمهمة:

الاختصار planning=True

يفعّل Agent(planning=True) إعدادًا محدودًا ومنخفض التكلفة. وهو مماثل لـ PlanningConfig(reasoning_effort="low", max_attempts=1): محاولة تخطيط واحدة ودون مراجعة LLM بعد كل خطوة.
إذا مرّرت planning_config أيضًا، فستكون له الأولوية.

عندما يفشل التخطيط

إذا حدث خطأ أثناء تخطيط الوكيل، يُسجَّل الخطأ ويشغّل الوكيل المهمة دون خطة.
المعاملان reasoning=True و max_reasoning_attempts مهملان. راجع الاستدلال لمعرفة كيفية الترحيل.

تخطيط الطاقم

عند تفعيل تخطيط الطاقم، تُرسل جميع معلومات الطاقم إلى CrewPlanner قبل تشغيل المهام. يخطط لكل مهمة خطوة بخطوة ويضيف الخطة إلى وصف تلك المهمة.

استخدام تخطيط الطاقم

أضف planning=True إلى طاقمك. في كل مرة يبدأ فيها الطاقم، يكتب CrewPlanner خطة مثل الموجودة في تبويب Result ويضيف جزء كل مهمة إلى وصف تلك المهمة:

LLM التخطيط

يستخدم تخطيط الطاقم gpt-5.4-mini افتراضيًا. عيّن planning_llm إلى اسم نموذج أو مثيل LLM لاستخدام نموذج آخر، مثل Crew(..., planning=True, planning_llm="gpt-5").
مع LLM التخطيط الافتراضي، يحتاج تخطيط الطاقم إلى مفتاح OpenAI API صالح، حتى لو كان وكلاؤك يستخدمون مزوّدين آخرين. إذا لم يكن لديك مفتاح OpenAI API مُعدّ، فعيّن planning_llm إلى نموذج يمكنك الوصول إليه.