البناء الواقعي وتحقيق الدخل

المشروع النهائي: خط أنبوب محتوى متعدد الوكلاء

55 دقيقة للقراءة

النتيجة: بنهاية هذا الدرس ستكون قد شحنت خط أنبوب CrewAI يعمل بـ 4 وكلاء متخصصين — باحث ← كاتب ← مدقق حقائق ← ناشر — يأخذ موضوعاً كمدخل، يجمع المصادر، يصيغ منشوراً، يتحقق من كل ادعاء واقعي، ويحفظ الـ markdown النهائي (أو ينشره عبر webhook). هذا هو التنسيق متعدد الوكلاء الذي بنيت نحوه عبر خمس وحدات.

ما ستشحنه — هذا الأمر يشغّل الفريق كاملاً:

python pipeline.py --topic "حالة أطر الوكلاء مفتوحة المصدر في الربع الثاني 2026"

الجزء 1 — إعداد المشروع (5 دقائق)

content-crew/
├── pipeline.py
├── agents/
│   ├── researcher.py
│   ├── writer.py
│   ├── fact_checker.py
│   └── publisher.py
├── tools/
│   ├── web_search.py
│   └── cms_webhook.py
├── requirements.txt
└── .env.example

requirements.txt:

crewai==0.95.0
crewai-tools==0.25.0
anthropic==0.42.0
tavily-python==0.7.1
httpx==0.27.2
python-dotenv==1.0.1

.env.example:

ANTHROPIC_API_KEY=sk-ant-...
TAVILY_API_KEY=tvly-...
CMS_WEBHOOK_URL=https://your-cms.com/api/drafts
CMS_WEBHOOK_TOKEN=

الجزء 2 — الأدوات المخصصة (10 دقائق)

وكلاء CrewAI يستخدمون نمط @tool من الوحدة 3. أداتان تُشغّلان هذا الفريق: بحث الويب (الباحث) و CMS webhook (الناشر). راجع tools/web_search.py و tools/cms_webhook.py في النسخة الإنجليزية.


الجزء 3 — الوكلاء الأربعة (15 دقيقة)

لكل وكيل مهمة واحدة — هذه هي فكرة التنسيق. وكيل بثلاث مسؤوليات سرعان ما يصبح وكيلاً لا يؤدي أياً منها جيداً.

# agents/researcher.py
researcher = Agent(
    role="Research Analyst",
    goal="Gather 6-10 authoritative, recent sources on the assigned topic",
    backstory="أنت محلل بحوث مخضرم. تثق بالمصادر الأولية (وثائق البائعين، "
              "مستودعات GitHub، الإعلانات الرسمية) أكثر من الملخصات الثانوية. "
              "تشك في الأرقام المستديرة والتواريخ الحديثة — كلاهما علامات حمراء.",
    tools=[web_search],
    llm="anthropic/claude-sonnet-4-6",
    verbose=True,
    allow_delegation=False,
)

# agents/fact_checker.py — استخدم Opus للدقة العالية
fact_checker = Agent(
    role="Fact Checker",
    goal="تحقق من كل ادعاء رقمي، رقم إصدار، تاريخ، و'الأول/الوحيد/الأكبر'...",
    backstory="أنت بارانوي بالمهنة. تفترض كل إحصائية خاطئة حتى تجد مصدراً موثوقاً. "
              "تعامل الادعاءات السلبية ('X ليس لديه Y') بشك إضافي — هذه المصدر الأول للأخطاء.",
    tools=[web_search],
    llm="anthropic/claude-opus-4-7",
    verbose=True,
    allow_delegation=False,
)

# publisher: استخدم Haiku (رخيص، مهمة ميكانيكية)
publisher = Agent(
    role="Publisher",
    goal="احفظ المنشور النهائي وادفعه إلى webhook الـ CMS",
    llm="anthropic/claude-haiku-4-6",
    ...
)

اختيار النموذج مقصود:

  • الباحث: Sonnet — استدلال واسع + استخدام أدوات
  • الكاتب: Sonnet — صياغة عالية الجودة
  • مدقق الحقائق: Opus — أعلى دقة، تستحق التكلفة للصحة
  • الناشر: Haiku — مهمة ميكانيكية صغيرة، أرخص ~5-6×

مطابقة قوة النموذج لصعوبة المهمة تقلّص التكلفة الإجمالية للفريق بـ ~60% مقابل استخدام Sonnet لكل وكيل.


الجزء 4 — الفريق المُنسِّق (10 دقائق)

pipeline.py يبني 4 مهام مُسلسلة مع Process.sequential. كل مهمة لاحقة تستقبل مخرجات السابقة عبر context=[...]. انظر النسخة الإنجليزية للكود الكامل.

النقاط الرئيسية:

  • research_task → يُخرج موجز بحث مع مصادر ومؤشرات ادعاءات
  • write_task → يستخدم context=[research_task]، يصيغ مسودة مع اقتباسات [^N]
  • factcheck_taskcontext=[research_task, write_task]، يصحح ويُسجل التعديلات
  • publish_taskcontext=[factcheck_task]، يضيف frontmatter ويدفع للـ CMS

الجزء 5 — شغّله (دقيقتان)

python pipeline.py --topic "حالة أطر الوكلاء مفتوحة المصدر في الربع الثاني 2026"

إجمالي وقت التشغيل: 3–6 دقائق. إجمالي التكلفة على Anthropic: $0.40–$0.80 لكل منشور بأسعار 2026.


الجزء 6 — ما يتغير عند تبديل الموضوع

خط الأنبوب محايد موضوعياً:

التغييرأين
تركيز بحث مختلفbackstory الوكيل + description مهمة البحث
طول منشور مختلفوصف مهمة الكاتب (1500-2000 → 800-1200)
CMS مختلفبدّل publish_to_cms في tools/cms_webhook.py
أضف وكيل SEO قبل الناشرAgent(...) جديد + Task(...) جديد
اجعله مهمة مجدولةغلّف pipeline.py في GitHub Actions cron

إضافة وكيل خامس ~15 سطر كود — هذه قوة بنية CrewAI.


الجزء 7 — قائمة استكشاف الأخطاء

العرضأول شيء تتحقق منهالسبب المعتاد
الباحث يُرجع 0 نتائجلوحة Tavilyالطبقة المجانية مستنفدة، أو days=90 مقيد جداً
مخرج الكاتب قصير جداًbackstory الكاتبالهدف مُصاغ كـ "ملخص" بدل "منشور 1500-2000 كلمة"
مدقق الحقائق لا يصحح المسودة فعلاًإصدار CrewAIالإصدارات الأقدم لا تمرر مخرجات المهام كسياق قابل للتحرير — رقّ إلى 0.95+
الناشر يفشل في webhookCMS_WEBHOOK_URLنقطة نهاية خاطئة، ترويسة مصادقة ناقصة
كل الوكلاء يستخدمون نفس النموذجتجاوز envCREWAI_DEFAULT_MODEL يتفوق على تكوين لكل وكيل
الفريق يتعلق للأبدأوصاف المهامexpected_output غامض يُبقي الوكلاء يكررون

نقطة تحقق — أنجز هذا قبل ادعاء الشهادة

  1. شحن الفريق. python pipeline.py --topic "أي شيء" يمر عبر 4 وكلاء بلا أخطاء.
  2. شحن مسار الكتابة. الـ markdown النهائي في ./output/ له frontmatter صحيح ومحتوى حقيقي.
  3. شحن الصيد. شغّل على موضوع من المحتمل أن يهلوس فيه الكاتب إحصائيات. تأكد من أن سجل تغييرات مدقق الحقائق يُظهر تصحيحاً واحداً على الأقل.
  4. شحن الـ webhook. وجّه CMS_WEBHOOK_URL إلى نقطة نهاية حقيقية. تأكد من أن الناشر يرسل POST ويسجل الاستجابة.
  5. التقط الفريق يعمل + الـ markdown النهائي + استجابة الـ webhook — كإثبات عملك.

الآن شحنت خط أنبوب متعدد الوكلاء يقوم بعمل تحريري حقيقي على أساس محايد موضوعياً. كل نمط تنسيق من الوحدات الخمس السابقة — تخصص الوكلاء، تسلسل المهام، توجيه الأدوات، مطابقة تكلفة النموذج، حواجز تدقيق الحقائق — يعمل الآن في الإنتاج.

التالي (اختياري): أضف تكامل Slack ليُسقط الفريق ملخصاً يومياً في قناة فريقك، أو اربطه بخلاصة RSS لتُحوّل إعلانات التقنية الجديدة إلى مسودات تلقائياً. :::

اختبار

اختبار الوحدة 5: البناء الواقعي وتحقيق الدخل

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.