W&B Weave للتقييم
إعداد خطوط أنابيب التقييم
3 دقيقة للقراءة
Weave يوفر نهجاً منظماً لتقييم تطبيقات LLM. تُعرّف المسجلين، تُنشئ مجموعات البيانات، وتُشغّل التقييمات التي تتتبع النتائج تلقائياً.
مكونات التقييم
| المكون | الغرض |
|---|---|
| Model | تطبيق LLM للتقييم |
| Dataset | حالات الاختبار مع المدخلات والمخرجات المتوقعة |
| Scorers | دوال تقيس الجودة |
| Evaluation | يجمع النموذج ومجموعة البيانات والمسجلين |
إنشاء مسجل
المسجلون هم دوال تُقيّم مخرجات النموذج:
import weave
weave.init('my-team/my-project')
@weave.op()
def accuracy_scorer(output: str, expected: str) -> dict:
"""تحقق إذا كان المخرج يطابق الإجابة المتوقعة."""
is_correct = expected.lower() in output.lower()
return {
"correct": is_correct,
"score": 1.0 if is_correct else 0.0
}
تعريف مجموعة بيانات
أنشئ مجموعة بيانات مع حالات الاختبار:
import weave
# عرّف أمثلة التقييم
dataset = [
{
"question": "ما هي عاصمة فرنسا؟",
"expected": "باريس"
},
{
"question": "ما هو 2 + 2؟",
"expected": "4"
},
{
"question": "من كتب روميو وجولييت؟",
"expected": "شكسبير"
}
]
# احفظ كمجموعة بيانات Weave
weave_dataset = weave.Dataset(
name="qa-test-set",
rows=dataset
)
weave.publish(weave_dataset)
إنشاء نموذجك
غلّف تطبيق LLM الخاص بك كنموذج Weave:
import weave
from openai import OpenAI
class QAModel(weave.Model):
model_name: str = "gpt-4o-mini"
system_prompt: str = "أجب على الأسئلة بإيجاز."
@weave.op()
def predict(self, question: str) -> str:
client = OpenAI()
response = client.chat.completions.create(
model=self.model_name,
messages=[
{"role": "system", "content": self.system_prompt},
{"role": "user", "content": question}
]
)
return response.choices[0].message.content
تشغيل تقييم
ادمج كل شيء في تقييم:
import weave
weave.init('my-team/my-project')
# أنشئ نسخة النموذج
model = QAModel()
# حمّل مجموعة البيانات
dataset = weave.ref("qa-test-set").get()
# عرّف المسجلين
@weave.op()
def contains_answer(output: str, expected: str) -> dict:
return {"contains_expected": expected.lower() in output.lower()}
# أنشئ وشغّل التقييم
evaluation = weave.Evaluation(
dataset=dataset,
scorers=[contains_answer]
)
# شغّل التقييم
results = await evaluation.evaluate(model)
print(results)
مسجلون متعددون
أضف مسجلين متعددين لتقييم شامل:
@weave.op()
def length_scorer(output: str) -> dict:
"""تحقق إذا كان طول الاستجابة مناسباً."""
word_count = len(output.split())
return {
"word_count": word_count,
"appropriate_length": 5 <= word_count <= 100
}
@weave.op()
def format_scorer(output: str) -> dict:
"""تحقق من تنسيق الاستجابة."""
return {
"has_period": output.strip().endswith('.'),
"capitalized": output[0].isupper() if output else False
}
# استخدم جميع المسجلين
evaluation = weave.Evaluation(
dataset=dataset,
scorers=[contains_answer, length_scorer, format_scorer]
)
عرض النتائج
بعد تشغيل التقييم:
- اذهب إلى مشروعك في wandb.ai
- انتقل إلى Evaluations
- شاهد المقاييس المجمعة والدرجات لكل مثال
- قارن عبر إصدارات النموذج المختلفة
هيكل نتائج التقييم
نتائج التقييم
├── مقاييس الملخص
│ ├── contains_expected: 0.85 (85% صحيح)
│ ├── appropriate_length: 0.95
│ └── has_period: 0.90
├── نتائج كل مثال
│ ├── مثال 1: درجات لكل مسجل
│ ├── مثال 2: درجات لكل مسجل
│ └── ...
└── معلومات النموذج
├── الإصدار
└── المعاملات
نصيحة: ابدأ بمسجلين بسيطين مثل المطابقة الدقيقة أو الاحتواء، ثم أضف مسجلين أكثر تطوراً مع فهمك لاحتياجات التقييم.
التالي، سنتعلم كيفية مقارنة التجارب وتتبع التحسينات عبر الزمن. :::