تخطَّ إلى المحتوى

التحضير للنشر

في 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.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/

عند تشغيل 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

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

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 بناءً قابلاً للتكرار وهو مطلوب للنشر.

Terminal window
# إنشاء أو تحديث ملف القفل
uv lock
# التحقق من وجوده
ls -la uv.lock

إذا لم يكن الملف موجوداً، شغّل uv lock وارفعه إلى مستودعك:

Terminal window
uv lock
git add uv.lock
git commit -m "Add uv.lock for deployment"
git push

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

Section titled “3. التحقق من تعريف الـ Crew”
JSON-first Crews

يجب أن تحتوي 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/YAML

يجب أن تستخدم الـ crews الكلاسيكية وPython crews المضمنة داخل Flows مزخرف @CrewBase.

from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from crewai.agents.agent_builder.base_agent import BaseAgent
from typing import List
@CrewBase
class 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:

JSON-first Crews

شغّل محليًا من جذر المشروع:

Terminal window
crewai run
Crews كلاسيكية

تستخدم نقطة الدخول دالة run():

src/my_crew/main.py
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:

src/my_flow/main.py
from crewai.flow import Flow, listen, start
from 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()

قبل النشر، تأكد من أن لديك:

  1. مفاتيح API لـ LLM جاهزة (OpenAI، Anthropic، Google، إلخ.)
  2. مفاتيح API للأدوات إذا كنت تستخدم أدوات خارجية (Serper، إلخ.)

شغّل هذه الأوامر من جذر مشروعك للتحقق السريع من إعدادك:

Terminal window
# 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.