انتقل إلى المحتوى الرئيسي

الوحدة 8 — الكلفة وزمن الاستجابة وحدود المقاربة

بعد ثلاث وحدات في تركيب الفريق، الوقت الآن لمقاييس صادقة: كم يُكلّف تنفيذ واحد فعلًا؟ كم يستغرق من الزمن؟ ما مقدار التفاوت بين تنفيذَين على نفس المدخلات؟ ومتى لا يستحقّ الأمر أن نُشغّل هذا الفريق أصلًا؟

عدد النداءات لكلّ تنفيذ​

لا يوجد رقم سحريّ، لكن يمكن حسابه:

  • مهامّ عاديّة: نداء نموذج واحد لكلّ مهمّة (تعليمة + توليد المخرَج).
  • مهامّ بأدوات: نداء أوّل يقرّر الأداة، نداء ثانٍ يقرأ نتيجتها، وأحيانًا ثالث. عمومًا 2 إلى 4 نداءات لكلّ استخدام أداة.
  • تفويض بين وكلاء: كلّ سؤال أو تفويض يُضيف نداءَين (سؤال + جواب).
  • العملية الهرميّة: المدير يُضيف نداءً لكلّ قرار توزيع، وأحيانًا نداء تدقيق بعد كلّ نتيجة وكيل.

على خيطنا الأحمر بأربع مهامّ عاديّة، الحدّ الأدنى المتوقّع: 6 نداءات (نداءان للمحلِّل بسبب أداة القراءة، ونداء لكلّ من الآخرين، ونداء استرجاع من الذاكرة). في الممارسة، نُلاحظ متوسّطًا حول 8.

الفاتورة الحقيقيّة​

قياس عشر تنفيذات متعاقبة على نفس ملفّ المواصفات، بعملية تتابعيّة، memory=True، ونماذج مختلطة (gpt-4o للمحلّل والمراجِع، gpt-4o-mini للمسؤول):

المقياسمتوسّطأدنىأعلى
النداءات لكلّ تنفيذ8.4612
رموز الدخل14 50011 20022 800
رموز الخرج4 1003 4005 600
الزمن (ثانية)523884
الكلفة (د.أ)0.480.320.71

ملاحظات:

  • التفاوت في الكلفة 2.2× بين أرخص وأغلى تنفيذ على نفس المدخلات. سبب رئيسيّ: النموذج يقرّر أحيانًا استدعاء أداة إضافيّة أو إعادة قراءة قسم.
  • الزمن يتضاعف حين يحدث خطأ أداة (timeout) وإعادة محاولة. تعديل max_iter يحدّ من ذلك.
  • المسؤول يستهلك 5٪ فقط من الرموز رغم أنّه ينفّذ نداءات كثيرة قصيرة. اختيار gpt-4o-mini له كان صحيحًا.

المقارنة مع البدائل​

نفس المسار على وكيل واحد مُحكَم التعليمات (نموذج gpt-4o وحيد بلا CrewAI):

المقياسفريق CrewAIوكيل واحد
متوسّط الكلفة0.48 د.أ0.19 د.أ
متوسّط الزمن52 ث24 ث
جودة الوثيقة (تقييم بشريّ من 10)8.47.1

القراءة: الفريق يكلّف 2.5× ويستغرق 2.2×، مقابل تحسّن جودة 1.18×. هل يستحقّ؟ يعتمد على السياق: إن كانت الوثيقة تُقرأ ألف مرّة من عملاء، نعم. إن كانت مذكّرة داخليّة، لا.

أين ينبع التفاوت​

فحص عشرين تنفيذًا أظهر مصادر التفاوت الرئيسيّة، مرتّبة بأثرها:

  1. قرار أداة إضافيّة: النموذج قد يبحث ثلاث مرّات على الويب في مرّة، ومرّة واحدة في أخرى. الأثر: ~30٪ من التفاوت.
  2. إعادة محاولة بعد فشل أداة: timeout أو نتيجة فارغة تُشعل جولة إضافيّة. الأثر: ~25٪.
  3. جولة تفويض بين المراجِع والمحرِّر: المراجِع قد يطلب تعديلًا. الأثر: ~20٪.
  4. حجم استرجاعات الذاكرة الطويلة: تنمو تدريجيًّا. الأثر: ~15٪.
  5. تفاوت داخليّ في النموذج نفسه: تنفيذات مختلفة تعطي نصوصًا مختلفة الطول. الأثر: ~10٪.

قواعد الحدّ من الكلفة​

  • حدّد max_iter صراحةً على كلّ وكيل: 5 إلى 8 كافٍ عادةً. الافتراض قد يكون 25.
  • استعمل نماذج مختلطة: نموذج قوي للمحوريّين، خفيف للمنسّق.
  • قنّن مخرجات الأدوات: كلّ أداة تُعيد بيانات كبيرة يجب أن يكون لها حدّ.
  • راقب long_term_memory.db: نظّفه دوريًّا إن كنت تُشغّل الفريق كثيرًا.
  • استعمل التوازي حين يمكن: مهامّ مستقلّة يمكن تشغيلها في نفس الوقت عبر async_execution=True على Task.

حدود CrewAI في الإنتاج​

الإطار ممتاز للنماذج الأوّليّة والمخرجات ذات القيمة العالية، لكنّه ليس الحلّ الشامل:

  • الحالة العابرة: Crew.kickoff() تنفيذ واحد كامل. لا يوجد استئناف بعد انقطاع في المنتصف. للمهامّ الطويلة، LangGraph أنسب.
  • التزامن: تشغيل خمسة عشر فريقًا متزامنًا في نفس العمليّة يفرض تصميمًا حذرًا للأدوات (لا حالات مشتركة).
  • الملاحظة: السجلّات الافتراضيّة نصّيّة. لتتبّع في الإنتاج، تكامل مع OpenTelemetry أو LangSmith يجب أن يُبنى يدويًّا.
  • الحدّ من الإفراط في المزوّد: لا يوجد RateLimiter مدمج في CrewAI؛ يجب لفّه على النموذج قبل التمرير.

متى لا تستعمل فريقًا​

خلاصة الوحدة 1 مؤكّدة بأرقام هذه الوحدة:

  • مسار من خطوتَين قابل للتنبّؤ: سكربت بايثون بنداءَي نموذج. أخفّ 10×.
  • مهمّة واحدة مركّبة قابلة للتوصيف في تعليمة واحدة: وكيل واحد بأدوات. أخفّ 3×.
  • مسار بحلقة تحكّم صريحة: LangGraph يعطي مرونة أكبر بكلفة تشغيل مقارنة.
  • CrewAI مثاليّ لـ: فريق من 3 إلى 6 وكلاء متخصّصين على مهمّة تستحقّ عدّة زوايا نظر.
تنبيه الفاتورة

قبل الإطلاق، شغّل الفريق ثلاثين مرّة على مدخلات نموذجيّة، وحسبَ الفاتورة الشهريّة المتوقّعة. تفاوت 2× في الكلفة الفرديّة يعني تفاوت 2× في الفاتورة الشهريّة. اضبط ميزانيّة تنبيه مع مزوّدك.

الخلاصة​

  • فريق من أربعة وكلاء بعملية تتابعيّة يُنتج ~8 نداءات نموذج و0.48 د.أ لكلّ تنفيذ في خيطنا الأحمر.
  • التفاوت 2× بين تنفيذَين على نفس المدخلات؛ منابعه أداء الأدوات وقرارات النموذج.
  • مقارنةً بوكيل واحد، الفريق يكلّف 2.5× ويعطي جودة أعلى بـ1.18× — التبرير يعتمد على قيمة المخرَج.
  • CrewAI ليس الحلّ الشامل: LangGraph أنسب للمسارات الطويلة، والوكيل الواحد كافٍ للمهامّ البسيطة.