الوحدة 8 — الكلفة وزمن الاستجابة وحدود المقاربة
بعد ثلاث وحدات في تركيب الفريق، الوقت الآن لمقاييس صادقة: كم يُكلّف تنفيذ واحد فعلًا؟ كم يستغرق من الزمن؟ ما مقدار التفاوت بين تنفيذَين على نفس المدخلات؟ ومتى لا يستحقّ الأمر أن نُشغّل هذا الفريق أصلًا؟
عدد النداءات لكلّ تنفيذ
لا يوجد رقم سحريّ، لكن يمكن حسابه:
- مهامّ عاديّة: نداء نموذج واحد لكلّ مهمّة (تعليمة + توليد المخرَج).
- مهامّ بأدوات: نداء أوّل يقرّر الأداة، نداء ثانٍ يقرأ نتيجتها، وأحيانًا ثالث. عمومًا 2 إلى 4 نداءات لكلّ استخدام أداة.
- تفويض بين وكلاء: كلّ سؤال أو تفويض يُضيف نداءَين (سؤال + جواب).
- العملية الهرميّة: المدير يُضيف نداءً لكلّ قرار توزيع، وأحيانًا نداء تدقيق بعد كلّ نتيجة وكيل.
على خيطنا الأحمر بأربع مهامّ عاديّة، الحدّ الأدنى المتوقّع: 6 نداءات (نداءان للمحلِّل بسبب أداة القراءة، ونداء لكلّ من الآخرين، ونداء استرجاع من الذاكرة). في الممارسة، نُلاحظ متوسّطًا حول 8.
الفاتورة الحقيقيّة
قياس عشر تنفيذات متعاقبة على نفس ملفّ المواصفات، بعملية تتابعيّة، memory=True، ونماذج مختلطة (gpt-4o للمحلّل والمراجِع، gpt-4o-mini للمسؤول):
| المقياس | متوسّط | أدنى | أعلى |
|---|---|---|---|
| النداءات لكلّ تنفيذ | 8.4 | 6 | 12 |
| رموز الدخل | 14 500 | 11 200 | 22 800 |
| رموز الخرج | 4 100 | 3 400 | 5 600 |
| الزمن (ثانية) | 52 | 38 | 84 |
| الكلفة (د.أ) | 0.48 | 0.32 | 0.71 |
ملاحظات:
- التفاوت في الكلفة 2.2× بين أرخص وأغلى تنفيذ على نفس المدخلات. سبب رئيسيّ: النموذج يقرّر أحيانًا استدعاء أداة إضافيّة أو إ عادة قراءة قسم.
- الزمن يتضاعف حين يحدث خطأ أداة (
timeout) وإعادة محاولة. تعديلmax_iterيحدّ من ذلك. - المسؤول يستهلك 5٪ فقط من الرموز رغم أنّه ينفّذ نداءات كثيرة قصيرة. اختيار
gpt-4o-miniله كان صحيحًا.
المقارنة مع البدائل
نفس المسار على وكيل واحد مُحكَم التعليمات (نموذج gpt-4o وحيد بلا CrewAI):
| المقياس | فريق CrewAI | وكيل واحد |
|---|---|---|
| متوسّط الكلفة | 0.48 د.أ | 0.19 د.أ |
| متوسّط الزمن | 52 ث | 24 ث |
| جودة الوثيقة (تقييم بشريّ من 10) | 8.4 | 7.1 |
القراءة: الفريق يكلّف 2.5× ويستغرق 2.2×، مقابل تحسّن جودة 1.18×. هل يستحقّ؟ يعتمد على السياق: إن كانت الوثيقة تُقرأ ألف مرّة من عملاء، نعم. إن كانت مذكّرة داخليّة، لا.
أين ينبع التفاوت
فحص عشرين تنفيذًا أظهر مصادر التفاوت الرئيسيّة، مرتّبة بأثرها:
- قرار أداة إضافيّة: النموذج قد يبحث ثلاث مرّات على الويب في مرّة، ومرّة واحدة في أخرى. الأثر: ~30٪ من التفاوت.
- إعادة محاولة بعد فشل أداة:
timeoutأو نتيجة فارغة تُشعل جولة إضافيّة. الأثر: ~25٪. - جولة تفويض بين المراجِع والمحرِّر: المراجِع قد يطلب تعديلًا. الأثر: ~20٪.
- حجم استرجاعات الذاكرة الطويلة: تنمو تدريجيًّا. الأثر: ~15٪.
- تفاوت داخليّ في النموذج نفسه: تنفيذات مختلفة تعطي نصوصًا مختلفة الطول. الأثر: ~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 أنسب للمسارات الطويلة، والوكيل الواحد كافٍ للمهامّ البسيطة.