MLflow لتقييم LLM
مسجلو LLM المدمجون
3 دقيقة للقراءة
MLflow يوفر مسجلين جاهزين للاستخدام لمهام تقييم LLM الشائعة. هؤلاء المسجلون يستخدمون أنماط LLM-as-Judge داخلياً لتقييم جودة الاستجابة.
المسجلون المدمجون المتاحون
| المسجل | ما يقيسه |
|---|---|
| answer_correctness | الدقة الواقعية مقابل الإجابة المتوقعة |
| answer_relevance | مدى ملاءمة الإجابة للسؤال |
| faithfulness | هل الإجابة مبنية على السياق |
| answer_similarity | التشابه الدلالي مع الإجابة المتوقعة |
| toxicity | المحتوى الضار أو المسيء |
استخدام المسجلين المدمجين
التقييم الأساسي
from mlflow.genai.scorers import (
answer_correctness,
answer_relevance,
faithfulness
)
from mlflow.genai import evaluate
# إعداد بيانات التقييم
eval_data = [
{
"inputs": {"question": "ما هي عاصمة فرنسا؟"},
"outputs": {"answer": "باريس هي عاصمة فرنسا."},
"expectations": {"expected_answer": "باريس"}
},
{
"inputs": {"question": "من كتب هاملت؟"},
"outputs": {"answer": "شكسبير كتب هاملت."},
"expectations": {"expected_answer": "وليام شكسبير"}
}
]
# تشغيل التقييم مع المسجلين المدمجين
results = evaluate(
data=eval_data,
scorers=[
answer_correctness(),
answer_relevance(),
faithfulness()
]
)
مسجل الصحة
يتحقق إذا كانت الاستجابة صحيحة واقعياً:
from mlflow.genai.scorers import answer_correctness
# المسجل يقارن outputs.answer مع expectations.expected_answer
scorer = answer_correctness()
# يُرجع درجات مثل:
# {
# "answer_correctness": 0.95,
# "reasoning": "الإجابة تحدد باريس بشكل صحيح كعاصمة..."
# }
مسجل الملاءمة
يقيس مدى ملاءمة الإجابة للسؤال:
from mlflow.genai.scorers import answer_relevance
scorer = answer_relevance()
# درجة عالية: الإجابة تعالج السؤال مباشرة
# درجة منخفضة: الإجابة خارج الموضوع أو ثانوية
مسجل الأمانة
لأنظمة RAG—يتحقق إذا كانت الإجابة مبنية على السياق المقدم:
from mlflow.genai.scorers import faithfulness
eval_data = [
{
"inputs": {
"question": "ما هي ساعات عمل المتجر؟",
"context": "متجرنا مفتوح من الإثنين للجمعة، 9 صباحاً حتى 6 مساءً."
},
"outputs": {
"answer": "المتجر مفتوح أيام الأسبوع من 9 صباحاً حتى 6 مساءً."
}
}
]
results = evaluate(
data=eval_data,
scorers=[faithfulness()] # يتحقق من الإجابة مقابل السياق
)
إعداد المسجلين
تخصيص سلوك المسجل:
from mlflow.genai.scorers import answer_correctness
# حدد أي نموذج يستخدم كحاكم
scorer = answer_correctness(
model="openai:/gpt-4o", # نموذج الحاكم
examples=[ # أمثلة few-shot للحكم الأفضل
{
"question": "ما هو 2+2؟",
"answer": "الإجابة هي 4.",
"expected": "4",
"score": 1.0,
"reasoning": "إجابة صحيحة"
}
]
)
دمج عدة مسجلين
تشغيل تقييمات متعددة معاً:
from mlflow.genai.scorers import (
answer_correctness,
answer_relevance,
answer_similarity
)
from mlflow.genai import evaluate
results = evaluate(
data=eval_data,
scorers=[
answer_correctness(),
answer_relevance(),
answer_similarity()
]
)
# الوصول إلى الدرجات الفردية
print(results.tables["eval_results"])
# يُظهر أعمدة: answer_correctness، answer_relevance، answer_similarity
عرض النتائج
النتائج تتكامل مع تتبع MLflow:
import mlflow
with mlflow.start_run():
results = evaluate(
data=eval_data,
scorers=[answer_correctness()]
)
# المقاييس تُسجل تلقائياً
# اعرض في واجهة MLflow أو الوصول برمجياً
print(f"متوسط الصحة: {results.metrics['answer_correctness/mean']}")
متى تستخدم المسجلين المدمجين
| حالة الاستخدام | المسجلون الموصى بهم |
|---|---|
| أنظمة Q&A | answer_correctness، answer_relevance |
| تطبيقات RAG | faithfulness، answer_correctness |
| التلخيص | answer_similarity، faithfulness |
| مراقبة المحتوى | toxicity |
نصيحة: ابدأ بالمسجلين المدمجين. أنشئ حكاماً مخصصين فقط عندما تحتاج معايير تقييم خاصة بالمجال.
التالي، سنتعلم كيفية إنشاء حكام مخصصين لاحتياجات التقييم المتخصصة. :::