التحضير للنشر
فهم الأتمتات
Section titled “فهم الأتمتات”في CrewAI AMP، الأتمتات هو المصطلح الشامل لمشاريع الذكاء الاصطناعي الوكيل القابلة للنشر. يمكن أن تكون الأتمتة إما:
- طاقم: فريق مستقل من وكلاء الذكاء الاصطناعي يعملون معاً على المهام
- تدفق: سير عمل مُنسّق يمكنه الجمع بين طواقم متعددة واستدعاءات LLM المباشرة والمنطق الإجرائي
فهم النوع الذي تنشره ضروري لأن لهما بنى مشاريع ونقاط دخول مختلفة.
الطواقم مقابل التدفقات: الفروقات الرئيسية
Section titled “الطواقم مقابل التدفقات: الفروقات الرئيسية”مشاريع الطاقم
فرق وكلاء ذكاء اصطناعي مستقلة. الـ 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.toml | type = "crew" | type = "flow" |
| أمر CLI للإنشاء | crewai create crew name | crewai create flow name |
| موقع التهيئة | crew.jsonc و agents/ و tools/ اختياريًا | src/project_name/crews/crew_name/config/ أو مجلدات crew JSON مضمنة |
| يمكن أن يحتوي طواقم أخرى | لا | نعم (في مجلد crews/) |
مرجع بنية المشروع
Section titled “مرجع بنية المشروع”بنية مشروع الطاقم
Section titled “بنية مشروع الطاقم”عند تشغيل 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/بنية مشروع التدفق
Section titled “بنية مشروع التدفق”عند تشغيل 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قائمة فحص ما قبل النشر
Section titled “قائمة فحص ما قبل النشر”استخدم هذه القائمة للتحقق من جاهزية مشروعك للنشر.
1. التحقق من تهيئة pyproject.toml
Section titled “1. التحقق من تهيئة pyproject.toml”يجب أن يتضمن pyproject.toml قسم [tool.crewai] الصحيح:
[tool.crewai]type = "crew"[tool.crewai]type = "flow"2. التأكد من وجود ملف uv.lock
Section titled “2. التأكد من وجود ملف uv.lock”يستخدم CrewAI uv لإدارة الاعتماديات. يضمن ملف uv.lock بناءً قابلاً للتكرار وهو مطلوب للنشر.
# إنشاء أو تحديث ملف القفلuv lock
# التحقق من وجودهls -la uv.lockإذا لم يكن الملف موجوداً، شغّل uv lock وارفعه إلى مستودعك:
uv lockgit add uv.lockgit commit -m "Add uv.lock for deployment"git push3. التحقق من تعريف الـ Crew
Section titled “3. التحقق من تعريف الـ Crew”يجب أن تحتوي crews بنمط JSON-first على crew.jsonc أو crew.json في جذر المشروع.
يجب أن يشير مصفوفة agents إلى ملفات داخل agents/، ويجب أن تشير كل task إلى اسم Agent صحيح.
{ "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.
يجب أن تستخدم الـ crews الكلاسيكية وPython crews المضمنة داخل Flows مزخرف @CrewBase.
from crewai import Agent, Crew, Process, Taskfrom crewai.project import CrewBase, agent, crew, taskfrom crewai.agents.agent_builder.base_agent import BaseAgentfrom typing import List
@CrewBaseclass MyCrew(): """My crew description"""
agents: List[BaseAgent] tasks: List[Task]
@agent def my_agent(self) -> Agent: return Agent( config=self.agents_config['my_agent'], # type: ignore[index] verbose=True )
@task def my_task(self) -> Task: return Task( config=self.tasks_config['my_task'] # type: ignore[index] )
@crew def crew(self) -> Crew: return Crew( agents=self.agents, tasks=self.tasks, process=Process.sequential, verbose=True, )4. التحقق من نقاط دخول المشروع
Section titled “4. التحقق من نقاط دخول المشروع”لا تحتاج crews المستقلة بنمط JSON-first إلى ملف src/project_name/main.py مكتوب يدويًا؛
يقوم crewai run وتغليف النشر بتحميل crew.jsonc مباشرة. تستخدم crews الكلاسيكية وFlows نقاط دخول Python:
شغّل محليًا من جذر المشروع:
crewai runتستخدم نقطة الدخول دالة run():
from my_crew.crew import MyCrew
def run(): """Run the crew.""" inputs = {'topic': 'AI in Healthcare'} result = MyCrew().crew().kickoff(inputs=inputs) return result
if __name__ == "__main__": run()تستخدم نقطة الدخول دالة kickoff() مع فئة Flow:
from crewai.flow import Flow, listen, startfrom my_flow.crews.poem_crew.poem_crew import PoemCrew
class MyFlow(Flow): @start() def begin(self): # Flow logic here result = PoemCrew().crew().kickoff(inputs={...}) return result
def kickoff(): """Run the flow.""" MyFlow().kickoff()
if __name__ == "__main__": kickoff()5. تحضير متغيرات البيئة
Section titled “5. تحضير متغيرات البيئة”قبل النشر، تأكد من أن لديك:
- مفاتيح API لـ LLM جاهزة (OpenAI، Anthropic، Google، إلخ.)
- مفاتيح API للأدوات إذا كنت تستخدم أدوات خارجية (Serper، إلخ.)
أوامر التحقق السريع
Section titled “أوامر التحقق السريع”شغّل هذه الأوامر من جذر مشروعك للتحقق السريع من إعدادك:
# 1. Check project type in pyproject.tomlgrep -A2 "\[tool.crewai\]" pyproject.toml
# 2. Verify uv.lock existsls -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 existsls -la src/*/crew.py 2>/dev/null || echo "No crew.py (expected for Crews)"
# 5. For Flows - verify crews/ folder existsls -la src/*/crews/ 2>/dev/null || echo "No crews/ folder (expected for Flows)"
# 6. For classic Python crews - check for CrewBase usagegrep -r "@CrewBase" . --include="*.py"أخطاء الإعداد الشائعة
Section titled “أخطاء الإعداد الشائعة”| الخطأ | العرض | الإصلاح |
|---|---|---|
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() مفقودة | لا يمكن بدء الأتمتة | أضف دالة الدخول الصحيحة |
الخطوات التالية
Section titled “الخطوات التالية”بمجرد اجتياز مشروعك لجميع عناصر القائمة، أنت جاهز للنشر:
النشر على AMP
اتبع دليل النشر لنشر طاقمك أو تدفقك على CrewAI AMP باستخدام CLI أو واجهة الويب أو تكامل CI/CD.