الانتقال إلى المحتوى الرئيسي
قبل النشر على CrewAI AMP، من الضروري التحقق من صحة بنية مشروعك. يمكن نشر كل من الطواقم والتدفقات كـ “أتمتات”، لكن لهما بنى مشاريع ومتطلبات مختلفة يجب استيفاؤها لنجاح النشر.

فهم الأتمتات

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

الطواقم مقابل التدفقات: الفروقات الرئيسية

مشاريع الطاقم

فرق وكلاء ذكاء اصطناعي مستقلة. الـ crews الجديدة تستخدم بنية JSON-first مع crew.jsonc و agents/؛ ويمكن للـ crews الكلاسيكية الاستمرار في استخدام crew.py.

مشاريع التدفق

سير عمل مُنسّق مع طواقم مضمنة في مجلد crews/. الأفضل للعمليات المعقدة متعددة المراحل.
الجانبالطاقمالتدفق
بنية المشروعجذر المشروع مع crew.jsonc و agents/src/project_name/ مع مجلد crews/
موقع المنطق الرئيسيcrew.jsonc (كلاسيكي: src/project_name/crew.py)src/project_name/main.py (فئة Flow)
دالة نقطة الدخولتُحمّل من crew.jsonc (كلاسيكي: run() في main.py)kickoff() في main.py
نوع pyproject.tomltype = "crew"type = "flow"
أمر CLI للإنشاءcrewai create crew namecrewai create flow name
موقع التهيئةcrew.jsonc و agents/ و tools/ اختياريًاsrc/project_name/crews/crew_name/config/ أو مجلدات crew JSON مضمنة
يمكن أن يحتوي طواقم أخرىلانعم (في مجلد crews/)

مرجع بنية المشروع

بنية مشروع الطاقم

عند تشغيل crewai create crew my_crew، تحصل على بنية JSON-first:
my_crew/
├── .gitignore
├── pyproject.toml          # Must have type = "crew"
├── README.md
├── .env
├── uv.lock                  # REQUIRED for deployment
├── crew.jsonc               # إعدادات الـ crew والمهام والعملية والمدخلات
├── agents/
│   └── researcher.jsonc     # تعريفات الـ Agents
├── tools/                   # أدوات custom:<name> اختيارية
├── knowledge/
└── skills/
في crews بنمط JSON-first، أبقِ crew.jsonc و agents/ و tools/ و knowledge/ و skills/ في جذر المشروع. وضعها داخل src/ يمنع crewai run والتحقق قبل النشر من العثور على تعريف الـ crew.
المشاريع الكلاسيكية التي تُنشأ عبر crewai create crew my_crew --classic تستخدم البنية القديمة src/project_name/crew.py و src/project_name/config/agents.yaml و src/project_name/config/tasks.yaml. تظل هذه البنية مدعومة للـ crews المكتوبة في Python مع decorators.

بنية مشروع التدفق

عند تشغيل crewai create flow my_flow، تحصل على هذه البنية:
my_flow/
├── .gitignore
├── pyproject.toml          # Must have type = "flow"
├── README.md
├── .env
├── uv.lock                  # REQUIRED for deployment
└── src/
    └── my_flow/
        ├── __init__.py
        ├── main.py          # Entry point with kickoff() function + Flow class
        ├── crews/           # Embedded crews folder
        │   └── poem_crew/
        │       ├── __init__.py
        │       ├── poem_crew.py  # Crew with @CrewBase decorator
        │       └── config/
        │           ├── agents.yaml
        │           └── tasks.yaml
        └── tools/
            ├── __init__.py
            └── custom_tool.py
الـ crews المستقلة بنمط JSON-first تستخدم ملفات JSON في جذر المشروع. أما Flows فتظل تستخدم src/project_name/ ويمكن أن تحتوي crews مضمنة كلاسيكية أو مجلدات crew JSON يتم تحميلها عبر crewai.project.load_crew.

قائمة فحص ما قبل النشر

استخدم هذه القائمة للتحقق من جاهزية مشروعك للنشر.

1. التحقق من تهيئة pyproject.toml

يجب أن يتضمن pyproject.toml قسم [tool.crewai] الصحيح:
[tool.crewai]
type = "crew"
إذا لم يتطابق type مع بنية مشروعك، سيفشل البناء أو لن تعمل الأتمتة بشكل صحيح.

2. التأكد من وجود ملف uv.lock

يستخدم CrewAI uv لإدارة الاعتماديات. يضمن ملف uv.lock بناءً قابلاً للتكرار وهو مطلوب للنشر.
# إنشاء أو تحديث ملف القفل
uv lock

# التحقق من وجوده
ls -la uv.lock
إذا لم يكن الملف موجوداً، شغّل uv lock وارفعه إلى مستودعك:
uv lock
git add uv.lock
git commit -m "Add uv.lock for deployment"
git push

3. التحقق من تعريف الـ Crew

يجب أن تحتوي crews بنمط JSON-first على crew.jsonc أو crew.json في جذر المشروع. يجب أن يشير مصفوفة agents إلى ملفات داخل agents/، ويجب أن تشير كل task إلى اسم Agent صحيح.
crew.jsonc
{
  "name": "Research Crew",
  "agents": ["researcher"],
  "tasks": [
    {
      "name": "research_task",
      "description": "Research {topic}.",
      "expected_output": "A concise report.",
      "agent": "researcher"
    }
  ],
  "inputs": {
    "topic": "AI Agents"
  }
}
تُشار الأدوات المخصصة بصيغة "custom:<name>" ويجب تنفيذها في tools/<name>.py كصنف يرث من BaseTool.

4. التحقق من نقاط دخول المشروع

لا تحتاج crews المستقلة بنمط JSON-first إلى ملف src/project_name/main.py مكتوب يدويًا؛ يقوم crewai run وتغليف النشر بتحميل crew.jsonc مباشرة. تستخدم crews الكلاسيكية وFlows نقاط دخول Python:
شغّل محليًا من جذر المشروع:
crewai run

5. تحضير متغيرات البيئة

قبل النشر، تأكد من أن لديك:
  1. مفاتيح API لـ LLM جاهزة (OpenAI، Anthropic، Google، إلخ.)
  2. مفاتيح API للأدوات إذا كنت تستخدم أدوات خارجية (Serper، إلخ.)
إذا كان مشروعك يعتمد على حزم من سجل PyPI خاص، ستحتاج أيضاً لتهيئة بيانات اعتماد مصادقة السجل كمتغيرات بيئة. راجع دليل سجلات الحزم الخاصة للتفاصيل.
اختبر مشروعك محلياً بنفس متغيرات البيئة قبل النشر لاكتشاف مشاكل التهيئة مبكراً.

أوامر التحقق السريع

شغّل هذه الأوامر من جذر مشروعك للتحقق السريع من إعدادك:
# 1. Check project type in pyproject.toml
grep -A2 "\[tool.crewai\]" pyproject.toml

# 2. Verify uv.lock exists
ls -la uv.lock || echo "ERROR: uv.lock missing! Run 'uv lock'"

# 3. For JSON-first crews, verify crew.jsonc and agents/
([ -f crew.jsonc ] || [ -f crew.json ]) || echo "No crew.jsonc or crew.json found"
test -d agents || echo "No agents/ directory found"

# 4. For classic Crews - verify crew.py exists
ls -la src/*/crew.py 2>/dev/null || echo "No crew.py (expected for Crews)"

# 5. For Flows - verify crews/ folder exists
ls -la src/*/crews/ 2>/dev/null || echo "No crews/ folder (expected for Flows)"

# 6. For classic Python crews - check for CrewBase usage
grep -r "@CrewBase" . --include="*.py"

أخطاء الإعداد الشائعة

الخطأالعرضالإصلاح
uv.lock مفقودفشل البناء أثناء حل الاعتمادياتشغّل uv lock وارفعه
type خاطئ في pyproject.tomlنجاح البناء لكن فشل وقت التشغيلغيّر إلى النوع الصحيح
crew.jsonc أو agents/ مفقود في crew بنمط JSON-firstلا يمكن العثور على تعريف الـ crewأبقِ crew.jsonc و agents/ في جذر المشروع
مُزخرف @CrewBase مفقود في crew كلاسيكيةأخطاء “Config not found”أضف المُزخرف لجميع فئات الـ crew الكلاسيكية
ملفات كلاسيكية في الجذر بدل src/نقطة الدخول غير موجودةانقل ملفات Python الكلاسيكية إلى src/project_name/
run() أو kickoff() مفقودةلا يمكن بدء الأتمتةأضف دالة الدخول الصحيحة

الخطوات التالية

بمجرد اجتياز مشروعك لجميع عناصر القائمة، أنت جاهز للنشر:

النشر على AMP

اتبع دليل النشر لنشر طاقمك أو تدفقك على CrewAI AMP باستخدام CLI أو واجهة الويب أو تكامل CI/CD.