نظرة عامة على الوكيل
في إطار عمل CrewAI، الـAgent هو وحدة مستقلة يمكنها:
- أداء مهام محددة
- اتخاذ قرارات بناءً على دوره وهدفه
- استخدام الأدوات لتحقيق الأهداف
- التواصل والتعاون مع وكلاء آخرين
- الاحتفاظ بذاكرة التفاعلات
- تفويض المهام عند السماح بذلك
يتضمن CrewAI AMP منشئ وكلاء مرئي يبسّط إنشاء وتهيئة الوكلاء بدون كتابة كود. صمم وكلاءك بصريًا واختبرهم في الوقت الفعلي.
يُمكّن منشئ الوكلاء المرئي من:

- تهيئة وكلاء بديهية بواجهات نماذج
- اختبار والتحقق في الوقت الفعلي
- مكتبة قوالب مع أنواع وكلاء مهيأة مسبقًا
- تخصيص سهل لخصائص وسلوكيات الوكيل
خصائص الوكيل
| الخاصية | المعامل | النوع | الوصف |
|---|---|---|---|
| الدور | role | str | يحدد وظيفة الوكيل وخبرته ضمن الطاقم. |
| الهدف | goal | str | الهدف الفردي الذي يوجه عملية اتخاذ القرار لدى الوكيل. |
| الخلفية | backstory | str | يوفر سياقًا وشخصية للوكيل، مما يثري التفاعلات. |
| LLM (اختياري) | llm | Union[str, LLM, Any] | نموذج اللغة الذي يشغّل الوكيل. افتراضيًا النموذج المحدد في OPENAI_MODEL_NAME أو “gpt-4”. |
| الأدوات (اختياري) | tools | List[BaseTool] | القدرات أو الوظائف المتاحة للوكيل. افتراضيًا قائمة فارغة. |
| LLM استدعاء الدوال (اختياري) | function_calling_llm | Optional[Any] | نموذج لغة لاستدعاء الأدوات، يتجاوز LLM الطاقم إذا حُدد. |
| الحد الأقصى للتكرارات (اختياري) | max_iter | int | الحد الأقصى للتكرارات قبل أن يقدم الوكيل أفضل إجابته. الافتراضي 20. |
| الحد الأقصى لـ RPM (اختياري) | max_rpm | Optional[int] | الحد الأقصى للطلبات في الدقيقة لتجنب حدود المعدل. |
| الحد الأقصى لوقت التنفيذ (اختياري) | max_execution_time | Optional[int] | الحد الأقصى للوقت (بالثواني) لتنفيذ المهمة. |
| الوضع المفصل (اختياري) | verbose | bool | تفعيل سجلات التنفيذ المفصلة للتصحيح. الافتراضي False. |
| السماح بالتفويض (اختياري) | allow_delegation | bool | السماح للوكيل بتفويض المهام لوكلاء آخرين. الافتراضي False. |
| دالة الخطوة (اختياري) | step_callback | Optional[Any] | دالة تُستدعى بعد كل خطوة للوكيل، تتجاوز دالة الطاقم. |
| التخزين المؤقت (اختياري) | cache | bool | تفعيل التخزين المؤقت لاستخدام الأدوات. الافتراضي True. |
| قالب النظام (اختياري) | system_template | Optional[str] | قالب أمر نظام مخصص للوكيل. |
| قالب الأمر (اختياري) | prompt_template | Optional[str] | قالب أمر مخصص للوكيل. |
| قالب الاستجابة (اختياري) | response_template | Optional[str] | قالب استجابة مخصص للوكيل. |
| السماح بتنفيذ الكود (اختياري) | allow_code_execution | Optional[bool] | تفعيل تنفيذ الكود للوكيل. الافتراضي False. |
| الحد الأقصى لإعادة المحاولة (اختياري) | max_retry_limit | int | الحد الأقصى لإعادات المحاولة عند حدوث خطأ. الافتراضي 2. |
| احترام نافذة السياق (اختياري) | respect_context_window | bool | إبقاء الرسائل تحت حجم نافذة السياق عبر التلخيص. الافتراضي True. |
| وضع تنفيذ الكود (اختياري) | code_execution_mode | Literal["safe", "unsafe"] | وضع تنفيذ الكود: ‘safe’ (باستخدام Docker) أو ‘unsafe’ (مباشر). الافتراضي ‘safe’. |
| متعدد الوسائط (اختياري) | multimodal | bool | ما إذا كان الوكيل يدعم القدرات متعددة الوسائط. الافتراضي False. |
| حقن التاريخ (اختياري) | inject_date | bool | ما إذا كان يتم حقن التاريخ الحالي تلقائيًا في المهام. الافتراضي False. |
| تنسيق التاريخ (اختياري) | date_format | str | سلسلة تنسيق التاريخ عند تفعيل inject_date. الافتراضي “%Y-%m-%d” (تنسيق ISO). |
| الاستدلال (اختياري) | reasoning | bool | ما إذا كان يجب على الوكيل التأمل وإنشاء خطة قبل تنفيذ المهمة. الافتراضي False. |
| الحد الأقصى لمحاولات الاستدلال (اختياري) | max_reasoning_attempts | Optional[int] | الحد الأقصى لمحاولات الاستدلال قبل تنفيذ المهمة. إذا None، سيحاول حتى الاستعداد. |
| المُضمّن (اختياري) | embedder | Optional[Dict[str, Any]] | تهيئة المُضمّن المستخدم من قبل الوكيل. |
| مصادر المعرفة (اختياري) | knowledge_sources | Optional[List[BaseKnowledgeSource]] | مصادر المعرفة المتاحة للوكيل. |
| استخدام أمر النظام (اختياري) | use_system_prompt | Optional[bool] | ما إذا كان يُستخدم أمر النظام (لدعم نموذج o1). الافتراضي True. |
إنشاء الوكلاء
هناك طريقتان لإنشاء الوكلاء في CrewAI: باستخدام تهيئة YAML (موصى بها) أو تعريفهم مباشرة في الكود.تهيئة YAML (موصى بها)
توفر تهيئة YAML طريقة أنظف وأكثر قابلية للصيانة لتعريف الوكلاء. نوصي بشدة باستخدام هذا النهج في مشاريع CrewAI. بعد إنشاء مشروع CrewAI كما هو موضح في قسم التثبيت، انتقل إلى ملفsrc/latest_ai_development/config/agents.yaml وعدّل القالب ليتوافق مع متطلباتك.
ستُستبدل المتغيرات في ملفات YAML (مثل
{topic}) بقيم من مدخلاتك عند تشغيل الطاقم:Code
agents.yaml
CrewBase:
Code
يجب أن تتطابق الأسماء المستخدمة في ملفات YAML (
agents.yaml) مع أسماء
الطرق في كود Python.تعريف مباشر في الكود
يمكنك إنشاء الوكلاء مباشرة في الكود بإنشاء فئةAgent. إليك مثالًا شاملًا يوضح جميع المعاملات المتاحة:
Code
وكيل بحث أساسي
Code
وكيل تطوير الكود
Code
وكيل تحليل طويل المدى
Code
تفاصيل المعاملات
المعاملات الحرجة
roleوgoalوbackstoryمطلوبة وتشكّل سلوك الوكيلllmيحدد نموذج اللغة المستخدم (افتراضي: GPT-4 من OpenAI)
الذاكرة والسياق
memory: تفعيل للحفاظ على سجل المحادثةrespect_context_window: يمنع مشاكل حد الرموزknowledge_sources: إضافة قواعد معرفة خاصة بالمجال
التحكم في التنفيذ
max_iter: الحد الأقصى للمحاولات قبل تقديم أفضل إجابةmax_execution_time: المهلة بالثوانيmax_rpm: تحديد معدل استدعاءات APImax_retry_limit: إعادات المحاولة عند الخطأ
تنفيذ الكود
allow_code_execution: يجب أن يكون True لتشغيل الكودcode_execution_mode:"safe": يستخدم Docker (موصى به للإنتاج)"unsafe": تنفيذ مباشر (استخدم فقط في بيئات موثوقة)
يشغّل هذا صورة Docker افتراضية. إذا أردت تهيئة صورة Docker،
راجع أداة Code Interpreter في قسم الأدوات. أضف أداة
مفسر الكود كأداة في معامل أداة الوكيل.
الميزات المتقدمة
multimodal: تفعيل القدرات متعددة الوسائط لمعالجة النص والمحتوى المرئيreasoning: تمكين الوكيل من التأمل وإنشاء خطط قبل تنفيذ المهامinject_date: حقن التاريخ الحالي تلقائيًا في أوصاف المهام
القوالب
system_template: يحدد السلوك الأساسي للوكيلprompt_template: ينظم تنسيق الإدخالresponse_template: ينسّق استجابات الوكيل
عند استخدام القوالب المخصصة، تأكد من تعريف كل من
system_template و
prompt_template. response_template اختياري لكن يُوصى به
لتنسيق مخرجات متسق.أدوات الوكيل
يمكن تجهيز الوكلاء بأدوات متنوعة لتعزيز قدراتهم. يدعم CrewAI أدوات من: إليك كيفية إضافة أدوات لوكيل:Code
التفاعل المباشر مع الوكيل عبر kickoff()
يمكن استخدام الوكلاء مباشرة بدون المرور بمهمة أو سير عمل طاقم باستخدام طريقة kickoff(). يوفر هذا طريقة أبسط للتفاعل مع وكيل عندما لا تحتاج إلى إمكانيات تنسيق الطاقم الكاملة.
Code
اعتبارات مهمة وأفضل الممارسات
الأمان وتنفيذ الكود
- عند استخدام
allow_code_execution، كن حذرًا مع مدخلات المستخدم وتحقق منها دائمًا - استخدم
code_execution_mode: "safe"(Docker) في بيئات الإنتاج - فكّر في تعيين حدود
max_execution_timeمناسبة لمنع الحلقات اللانهائية
تحسين الأداء
- استخدم
respect_context_window: trueلمنع مشاكل حد الرموز - عيّن
max_rpmمناسبًا لتجنب تحديد المعدل - فعّل
cache: trueلتحسين الأداء للمهام المتكررة - اضبط
max_iterوmax_retry_limitبناءً على تعقيد المهمة
إدارة الذاكرة والسياق
- استفد من
knowledge_sourcesللمعلومات الخاصة بالمجال - هيّئ
embedderعند استخدام نماذج تضمين مخصصة - استخدم القوالب المخصصة للتحكم الدقيق في سلوك الوكيل
التعاون بين الوكلاء
- فعّل
allow_delegation: trueعندما يحتاج الوكلاء للعمل معًا - استخدم
step_callbackلمراقبة وتسجيل تفاعلات الوكلاء - فكّر في استخدام نماذج LLM مختلفة لأغراض مختلفة
توافق النموذج
- عيّن
use_system_prompt: falseللنماذج القديمة التي لا تدعم رسائل النظام - تأكد من أن
llmالمختار يدعم الميزات التي تحتاجها
