نظرة عامة
يمكن لـ CrewAI التخطيط على مستويين:- تخطيط الوكيل: يكتب الوكيل خطة خطوة بخطوة لعمله، ثم ينفّذ كل خطوة ويتحقق منها. اضبطه باستخدام
Agent(planning_config=PlanningConfig(...)). - تخطيط الطاقم: قبل تشغيل الطاقم، يكتب
CrewPlannerخطة لكل مهمة ويضيفها إلى وصف كل مهمة. فعّله باستخدامCrew(planning=True).
تخطيط الوكيل
مرّرPlanningConfig إلى الوكيل لتفعيل التخطيط:
PlanningConfig يفعّل التخطيط. لإيقافه، اترك planning_config دون تعيين.
كيف يعمل
عندما يبدأ الوكيل مهمة، يشغّل حلقة تخطيط وتنفيذ:- التخطيط. يكتب LLM التخطيط خطة، مع توجيهه بالبقاء ضمن
max_stepsخطوة، ويحدد ما إذا كانت الخطة جاهزة. - التحسين. إذا لم تكن الخطة جاهزة، يحسّنها المخطِّط حتى تصبح جاهزة أو حتى الوصول إلى
max_attempts. - التنفيذ. تصبح كل خطوة عنصر todo وتعمل في حلقة أدوات خاصة بها، مقيّدة بـ
max_step_iterationsوstep_timeout. - المراقبة. بعد كل خطوة، يتحقق الوكيل من النتيجة. يعتمد مقدار التحقق على
reasoning_effort. - إعادة التخطيط. بحسب
reasoning_effort، قد تدفع خطوة فاشلة أو خطة لم تعد مناسبة الوكيل إلى كتابة خطة جديدة، حتىmax_replansمرة. - الإجابة. يبني الوكيل الإجابة النهائية من نتائج الخطوات.
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").
