لو عندك نموذج AI في production من غير Evals، أنت مش بتطوّره — أنت بتخمّن إنه اتحسّن أو بقى أسوأ بعد كل تعديل. المقال ده هيعلّمك ازاي تحوّل عملية التقييم من "إحساس" لرقم دقيق تقدر تثق فيه.
AI Evals: الـ CI/CD الحقيقي لأي تطبيق Gen-AI
المشكلة باختصار
لو غيّرت الـ prompt أو حدّثت الموديل من Claude Sonnet 4.5 لـ Sonnet 4.6، ازاي تعرف فعلاً إن الجودة اتحسّنت؟ لو فتحت المحادثة وجرّبت 3 أسئلة وشُفت الإجابات حلوة، ده مش دليل — ده انطباع. المشكلة إن نماذج اللغة بتاعتها غير حتمية (non-deterministic)، والسؤال الواحد ممكن يدّي إجابتين مختلفتين في مرتين، فالتجربة اليدوية مش كفاية.
المفهوم بمثال للمبتدئ
تخيّل إنك فتحت مطعم، وعندك طبّاخ جديد. عايز تعرف لو الطبّاخ ده أحسن من اللي قبله ولا لأ. عندك طريقتين:
- الطريقة الوحشة: تاكل من الأكل مرة واحدة وتقول "حلو" أو "مش حلو". ده اللي أغلب الناس بتعمله مع الـ AI.
- الطريقة الصح: تجيب 50 طبق معروف طعمهم الصح، تدّيه يطبخهم، وتقيّم كل طبق على 3 معايير ثابتة: الملح، الاستواء، الشكل. في الآخر عندك 150 درجة، تقدر تقارنها مع الطبّاخ القديم.
الـ Evals هي بالظبط الطريقة التانية، لكن على مخرجات الـ AI.
التعريف العلمي الدقيق
الـ Eval هو test suite متخصص لتقييم مخرجات نموذج لغوي. بيتكوّن من 3 مكونات:
- Dataset: مجموعة inputs حقيقية بتغطي حالات الاستخدام عندك (عادة 50–500 حالة).
- Scorer: دالة بتاخد الـ output وترجّع score رقمي (0–1 أو pass/fail). الـ scorer ممكن يكون: string match، regex، دالة Python، أو LLM تاني بيحكم.
- Aggregator: بيحسب متوسط الـ scores عبر كل الـ dataset ويطلّع رقم واحد تقدر تقارن بيه.
المصطلح اتشهر بعد ما OpenAI نشرت مكتبة evals سنة 2023، وبعدين Anthropic ضافت دعم رسمي ليه في الـ Workbench سنة 2024.
أنواع الـ Scorers الثلاثة
اختيار نوع الـ scorer هو أهم قرار هتاخده. كل نوع له ثمنه:
- Deterministic (string/regex): أرخص وأسرع. بيشتغل بس لو الإجابة الصح معروفة نصًا (زي: "استخرج رقم الفاتورة من النص ده").
- Programmatic (دالة Python): للحالات اللي فيها تحقّق منطقي (هل الـ JSON صالح؟ هل الرقم بين 0 و 100؟). رخيص وموثوق.
- LLM-as-judge: نموذج تاني بيحكم على الإجابة. بيشتغل لما الإجابة مفتوحة (ملخص مقال، رد على عميل). غالي وأبطأ، ومحتاج calibration.
كود Python شغّال — Eval بسيط باستخدام Claude
الكود ده بيقيّم قدرة النموذج على استخراج بلد من نص عربي. Dataset من 3 أمثلة كبداية، في production خليه 50+.