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

البدء السريع

شاهد: بناء Agents و Flows في CrewAI باستخدام Coding Agent Skills

Section titled “شاهد: بناء Agents و Flows في CrewAI باستخدام Coding Agent Skills”

قم بتثبيت مهارات وكيل البرمجة الخاصة بنا (Claude Code، Codex، …) لتشغيل وكلاء البرمجة بسرعة مع CrewAI.

يمكنك تثبيتها باستخدام npx skills add crewaiinc/skills

في هذا الدليل ستُنشئ Flow يحدد موضوع بحث، ويشغّل طاقمًا بوكيل واحد (باحث يستخدم البحث على الويب)، وينتهي بتقرير Markdown على القرص. يُعد Flow الطريقة الموصى بها لتنظيم التطبيقات الإنتاجية: يمتلك الحالة وترتيب التنفيذ، بينما الوكلاء ينفّذون العمل داخل خطوة الطاقم.

إذا لم تُكمل تثبيت CrewAI بعد، اتبع دليل التثبيت أولًا.

  • بيئة Python وواجهة سطر أوامر CrewAI (راجع التثبيت)
  • نموذج لغوي مهيأ بالمفاتيح الصحيحة — راجع LLMs
  • مفتاح API من Serper.dev (SERPER_API_KEY) للبحث على الويب في هذا الدرس
  1. أنشئ مشروع Flow

    من الطرفية، أنشئ مشروع Flow (اسم المجلد يستخدم شرطة سفلية، مثل latest_ai_flow):

    Code
    Terminal window
    crewai create flow latest-ai-flow
    cd latest_ai_flow

    يُنشئ ذلك تطبيق Flow ضمن src/latest_ai_flow/، بما في ذلك طاقمًا أوليًا في crews/content_crew/ ستستبدله بطاقم بحث بوكيل واحد في الخطوات التالية.

  2. اضبط وكيلًا واحدًا في JSONC

    أنشئ src/latest_ai_flow/crews/content_crew/agents/researcher.jsonc (أنشئ مجلد agents/ إذا لزم). تُملأ المتغيرات مثل {topic} من crew.kickoff(inputs=...).

    {
    "role": "باحث بيانات أول في {topic}",
    "goal": "اكتشاف أحدث التطورات في {topic}",
    "backstory": "أنت باحث يجد المعلومات الأكثر صلة ويعرضها بوضوح.",
    "tools": ["SerperDevTool"],
    "settings": {
    "verbose": true
    }
    }
  3. اضبط الـ crew في `crew.jsonc`

    أنشئ src/latest_ai_flow/crews/content_crew/crew.jsonc:

    {
    "name": "Research Crew",
    "agents": ["researcher"],
    "tasks": [
    {
    "name": "research_task",
    "description": "أجرِ بحثًا معمقًا عن {topic}. استخدم البحث على الويب للعثور على معلومات حديثة وموثوقة.",
    "expected_output": "تقرير بصيغة Markdown بأقسام واضحة: الاتجاهات الرئيسية، أدوات أو شركات بارزة، والآثار. بين 800 و1200 كلمة تقريبًا. دون إحاطة المستند بأكمله بكتل كود.",
    "agent": "researcher",
    "output_file": "output/report.md",
    "markdown": true
    }
    ],
    "process": "sequential",
    "verbose": true
    }
  4. حمّل crew JSON (`content_crew.py`)

    استبدل content_crew.py المُولّد بمحمل صغير يحول crew.jsonc إلى Crew.

    src/latest_ai_flow/crews/content_crew/content_crew.py
    from pathlib import Path
    from crewai.project import load_crew
    def kickoff_content_crew(inputs: dict):
    crew, default_inputs = load_crew(Path(__file__).with_name("crew.jsonc"))
    return crew.kickoff(inputs={**default_inputs, **inputs})
  5. عرّف Flow في `main.py`

    اربط الطاقم بـ Flow: خطوة @start() تضبط الموضوع في الحالة، وخطوة @listen تشغّل الطاقم. يظل output_file للمهمة يكتب output/report.md.

    src/latest_ai_flow/main.py
    from pydantic import BaseModel
    from crewai.flow import Flow, listen, start
    from latest_ai_flow.crews.content_crew.content_crew import kickoff_content_crew
    class ResearchFlowState(BaseModel):
    topic: str = ""
    report: str = ""
    class LatestAiFlow(Flow[ResearchFlowState]):
    @start()
    def prepare_topic(self, crewai_trigger_payload: dict | None = None):
    if crewai_trigger_payload:
    self.state.topic = crewai_trigger_payload.get("topic", "AI Agents")
    else:
    self.state.topic = "AI Agents"
    print(f"الموضوع: {self.state.topic}")
    @listen(prepare_topic)
    def run_research(self):
    result = kickoff_content_crew(inputs={"topic": self.state.topic})
    self.state.report = result.raw
    print("اكتمل طاقم البحث.")
    @listen(run_research)
    def summarize(self):
    print("مسار التقرير: output/report.md")
    def kickoff():
    LatestAiFlow().kickoff()
    def plot():
    LatestAiFlow().plot()
    if __name__ == "__main__":
    kickoff()
  6. متغيرات البيئة

    في جذر المشروع، ضبط .env:

    • SERPER_API_KEY — من Serper.dev
    • مفاتيح مزوّد النموذج حسب الحاجة — راجع إعداد LLM
  7. التثبيت والتشغيل
    Code
    Terminal window
    crewai install
    crewai run

    يُنفّذ crewai run نقطة دخول Flow المعرّفة في المشروع (نفس أمر الطواقم؛ نوع المشروع "flow" في pyproject.toml).

  8. تحقق من المخرجات

    يجب أن ترى سجلات من Flow والطاقم. افتح output/report.md للتقرير المُولَّد (مقتطف):

    Code
    # وكلاء الذكاء الاصطناعي: المشهد والاتجاهات الحديثة
    ## ملخص تنفيذي
    ## أبرز الاتجاهات
    - **استخدام الأدوات والتنسيق** — …
    - **التبني المؤسسي** — …
    ## الآثار

    سيكون الملف الفعلي أطول ويعكس نتائج بحث مباشرة.

  1. Flow — يشغّل LatestAiFlow أولًا prepare_topic ثم run_research ثم summarize. الحالة (topic، report) على Flow.
  2. الطاقم — يحمّل kickoff_content_crew ملف crew.jsonc ويشغّل مهمة واحدة بوكيل واحد: الباحث يستخدم Serper للبحث على الويب ثم يكتب التقرير.
  3. المُخرَج — يكتب output_file للمهمة التقرير في output/report.md.

للتعمق في أنماط Flow (التوجيه، الاستمرارية، الإنسان في الحلقة)، راجع ابنِ أول Flow وFlows. للطواقم دون Flow، راجع Crews. لوكيل Agent واحد وkickoff() بلا مهام، راجع Agents.

يجب أن تطابق الأسماء في crew.jsonc الملفات والمراجع:

  • agents: ["researcher"] يحمّل agents/researcher.jsonc
  • tasks[].agent: "researcher" يربط المهمة بذلك الـ agent

ادفع Flow إلى CrewAI AMP بعد أن يعمل محليًا ويكون المشروع في مستودع GitHub. من جذر المشروع:

Code
Terminal window
crewai login
Terminal window
crewai deploy create
Terminal window
crewai deploy status
crewai deploy logs
Terminal window
crewai deploy push
Terminal window
crewai deploy list
crewai deploy remove <deployment_id>