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

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

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

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

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

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

المعمارية التي تبنيها

خط أنبوب محتوى متعدد الوكلاء — عملية CrewAI المتسلسلة

المدخل
الباحث (نموذج طبقة متوسطة)
الكاتب (نموذج طبقة متوسطة)
مدقق الحقائق (نموذج الطبقة العليا)
الناشر (نموذج صغير — رخيص)

الجزء 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 على PyPI ودليل التثبيت الرسمي لمعرفة نطاق Python المدعوم حالياً:

crewai>=1.14.0
crewai-tools>=1.14.0
anthropic>=0.99.0
tavily-python>=0.7.24
httpx>=0.27.2
python-dotenv>=1.0.1

.env.example:

ANTHROPIC_API_KEY=sk-ant-...
TAVILY_API_KEY=tvly-...            # راجع صفحة أسعار Tavily لحدود الطبقة المجانية الحالية
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-5",
    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-5",
    verbose=True,
    allow_delegation=False,
)

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

قرار التصميم هو توزيع الطبقات، لا أسماء النماذج:

الوكيلالطبقةلماذا
الباحثمتوسطةاستدلال واسع مع استخدام موثوق للأدوات؛ نتائج البحث تحمل العبء الأكبر
الكاتبمتوسطةجودة الصياغة والأسلوب مهمة؛ الصحة مسؤولية الوكيل التالي
مدقق الحقائقعلياالموضع الوحيد الذي يكون فيه الخطأ غير قابل للاسترداد — ادفع هنا
الناشرصغيرةإضافة frontmatter واستدعاء أداة واحدة. النموذج الكبير لا يضيف شيئاً

أسماء النماذج تتغير كل بضعة أشهر؛ الطبقات لا تتغير. بدّل المعرّفات بما هو حالي على صفحة نماذج Anthropic واحتفظ بالتوزيع نفسه.

التوفير من التوزيع حقيقي لكن قِسه بنفسك بدل أخذ رقم من درس: شغّل الفريق مرة بكل الوكلاء على الطبقة المتوسطة، ومرة بالتوزيع أعلاه، وقارن الفاتورتين. تلك المقارنة تخص عبء عملك أنت.


الجزء 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"

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


الجزء 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الإصدارات الأقدم لا تمرر مخرجات المهام كسياق قابل للتحرير — رقّ إلى إصدار 1.x الحالي — راجع crewai على PyPI
الناشر يفشل في 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: البناء الواقعي وتحقيق الدخل

خذ الاختبار
هل كان هذا الدرس مفيدًا؟

سجّل الدخول للتقييم