> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crewai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# البدء السريع

> ابنِ أول Flow في CrewAI خلال دقائق — التنسيق والحالة وفريقًا بوكيل واحد ينتج تقريرًا فعليًا.

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

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

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

[https://www.loom.com/embed/befb9f68b81f42ad8112bfdd95a780af](https://www.loom.com/embed/befb9f68b81f42ad8112bfdd95a780af)

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

إذا لم تُكمل تثبيت CrewAI بعد، اتبع [دليل التثبيت](https://docs.crewai.com/ar/installation.md) أولًا.

## المتطلبات الأساسية

* بيئة Python وواجهة سطر أوامر CrewAI (راجع [التثبيت](https://docs.crewai.com/ar/installation.md))
* نموذج لغوي مهيأ بالمفاتيح الصحيحة — راجع [LLMs](https://docs.crewai.com/ar/concepts/llms.md#setting-up-your-llm)
* مفتاح API من [Serper.dev](https://serper.dev/) (`SERPER_API_KEY`) للبحث على الويب في هذا الدرس

## ابنِ أول Flow لك

**1. أنشئ مشروع Flow**

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

```shell Terminal theme={null}
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=...)`.

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

**3. اضبط الـ crew في `crew.jsonc`**

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

```jsonc crew.jsonc theme={null}
{
  "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`.

```python content_crew.py theme={null}
# 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`.

```python main.py theme={null}
# 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()
```

> [!TIP]
>
> إذا كان اسم الحزمة ليس `latest_ai_flow`، عدّل استيراد `kickoff_content_crew` ليطابق مسار الوحدة في مشروعك.

**6. متغيرات البيئة**

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

* `SERPER_API_KEY` — من [Serper.dev](https://serper.dev/)
* مفاتيح مزوّد النموذج حسب الحاجة — راجع [إعداد LLM](https://docs.crewai.com/ar/concepts/llms.md#setting-up-your-llm)

**7. التثبيت والتشغيل**

```shell Terminal theme={null}
crewai install
crewai run
```

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

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

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

```markdown output/report.md theme={null}
# وكلاء الذكاء الاصطناعي: المشهد والاتجاهات الحديثة

## ملخص تنفيذي
…

## أبرز الاتجاهات
- **استخدام الأدوات والتنسيق** — …
- **التبني المؤسسي** — …

## الآثار
…
```

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

## كيف يترابط هذا

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](https://docs.crewai.com/ar/guides/flows/first-flow.md) و[Flows](https://docs.crewai.com/ar/concepts/flows.md). للطواقم دون Flow، راجع [Crews](https://docs.crewai.com/ar/concepts/crews.md). لوكيل `Agent` واحد و`kickoff()` بلا مهام، راجع [Agents](https://docs.crewai.com/ar/concepts/agents.md#direct-agent-interaction-with-kickoff).

> [!TIP]
>
> أصبح لديك Flow كامل مع طاقم وكيل وتقرير محفوظ — قاعدة قوية لإضافة خطوات أو طواقم أو أدوات.

### اتساق التسمية

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

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

## النشر

ادفع Flow إلى **[CrewAI AMP](https://app.crewai.com)** بعد أن يعمل محليًا. إذا كان للمشروع `origin` في git، ينشر AMP من ذلك المستودع (على **GitHub**، يجب أن يتمكن تكامل GitHub في AMP من الوصول إليه)؛ وإذا لم يكن هناك `origin`، يرفع `crewai deploy create` المشروع كملف ZIP. من جذر المشروع:

```bash المصادقة theme={null}
crewai login
```

```bash إنشاء نشر theme={null}
crewai deploy create
```

```bash الحالة والسجلات theme={null}
crewai deploy status
crewai deploy logs
```

```bash إرسال التحديثات بعد تغيير الكود theme={null}
crewai deploy push
```

```bash عرض النشرات أو حذفها theme={null}
crewai deploy list
crewai deploy remove -u <deployment_uuid>
```

> [!TIP]
>
> غالبًا ما يستغرق **النشر الأول حوالي دقيقة**. المتطلبات الكاملة ومسار الواجهة الويب في [النشر على AMP](https://docs-platform.crewai.com/platform/ar/guides/deploy-to-amp).

> **[دليل النشر](https://docs-platform.crewai.com/platform/ar/guides/deploy-to-amp)**
>
> النشر على AMP خطوة بخطوة (CLI ولوحة التحكم).

> **[المجتمع](https://community.crewai.com)**
>
> ناقش الأفكار وشارك مشاريعك وتواصل مع مطوري CrewAI.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.