Giskard - إطار عمل اختبار ML و LLM
Giskard - إطار عمل اختبار ML و LLM
Giskard هو إطار عمل اختبار مفتوح المصدر لتطبيقات ML و LLM. ميزته المميزة هي مسح تلقائي يفحص نموذجًا عن نقاط ضعف — الهلوسة، حقن الأوامر، محتوى ضار، فشل الصلابة، الانحياز، وتسرب البيانات — وينتج تقريرًا يمكنك تحويله مباشرة إلى مجموعة اختبارات قابلة لإعادة الاستخدام. سير عمل المسح ثم الشهادة هو ما يميزه: لا تحتاج إلى معرفة ما يجب اختباره مقدمًا.
التثبيت
| الطريقة | الأمر |
|---|---|
| pip | pip install giskard |
| ملحقات LLM | pip install "giskard[llm]" |
| مفتاح النموذج | export OPENAI_API_KEY=... (يُستخدم لكاشفات تعتمد على LLM) |
| التحقق | python -c "import giskard; print(giskard.__version__)" |
تغليف تطبيق LLM
import giskard
import pandas as pd
def predict(df: pd.DataFrame):
return [my_llm_app(q) for q in df["question"]]
model = giskard.Model(
model=predict,
model_type="text_generation",
name="Support Assistant",
description="Answers customer questions using our docs",
feature_names=["question"],
)
dataset = giskard.Dataset(
pd.DataFrame({"question": ["How do I reset my password?"]}),
target=None,
)
| الحقل | لماذا مهم |
|---|---|
description | يستخدمها Giskard لإنشاء فحوصات ذات صلة بالمجال |
model_type | text_generation, classification, regression |
feature_names | أعمدة الإدخال |
description ليست تجميلية — يُنشئ الماسح مدخلات معادية خاصة بالمجال منها.
المسح
report = giskard.scan(model, dataset)
report.to_html("scan_report.html")
| الكاشف | يجد |
|---|---|
| الهلوسة | ادعاءات غير مدعومة أو غير متماسكة |
| حقن الأوامر | تجاوز التعليمات |
| الضرر | توليد محتوى غير آمن |
| الصلابة | الحساسية للتغييرات البسيطة في الإدخال |
| تعريض السرية | تسرب الأسرار/PII |
| الصور النمطية | الانحياز في المخرجات |
| انحياز الأداء | دقة غير متساوية عبر الشرائح (الجدولية/NLP) |
# افحص مجموعات الكاشف المحددة فقط
report = giskard.scan(model, dataset, only=["hallucination", "jailbreak"])
المسح → مجموعة الاختبارات
suite = report.generate_test_suite("Support Assistant tests")
suite.run()
هذا هو سير العمل الرئيسي: النتائج تصبح اختبارات انحدار، لذا تبقى المشكلة المُصلحة مُصلحة ويمكن بوابتها في CI.
اختبارات مخصصة
from giskard import test, TestResult
@test(name="No refund promises")
def no_refund_promise(model, dataset):
outputs = model.predict(dataset).prediction
bad = [o for o in outputs if "guaranteed refund" in o.lower()]
return TestResult(passed=len(bad) == 0, metric=len(bad))
suite.add_test(no_refund_promise).run()
تقييم RAG (RAGET)
Giskard يتضمن مجموعة أدوات تقييم RAG التي تُنشئ مجموعة أسئلة من قاعدة المعرفة الخاصة بك وتسجل كل مكون من مكونات خط الأنابيب.
| المكون المسجل | يخبرك |
|---|---|
| المُولد | هل إجابة LLM جيدة مع السياق؟ |
| المُسترجع | هل استرجاع السطور الصحيحة؟ |
| إعادة الكتابة | هل تساعد إعادة صياغة الاستعلام؟ |
| الموجّه | هل تم توجيه الاستعلام بشكل صحيح؟ |
| قاعدة المعرفة | هل المادة المصدرية كافية؟ |
التسجيل على مستوى المكون أكثر قابلية للتنفيذ من رقم نهائي واحد — فهو يخبرك أي مرحلة لإصلاحها.
Giskard مقابل الأدوات ذات الصلة
| الجانب | Giskard | DeepEval | garak |
|---|---|---|---|
| الفكرة الأساسية | مسح تلقائي → مجموعة اختبارات | مقاييس بأسلوب اختبار الوحدة | ماسح فحص النموذج |
| النطاق | ML + LLM + RAG | تقييمات تطبيق LLM | نقاط ضعف نموذج LLM |
| التقرير | تقرير مسح HTML غني | إخراج/لوحة معلومات CI | تقرير CLI |
| الأفضل لـ | اكتشاف المشاكل غير المعروفة | بوابة المقاييس المعروفة | فحص النموذج الواسع |
يقترن مع DeepEval لبوابة المقياس و Ragas لنقاط RAG؛ ميزة Giskard هي إيجاد المشاكل التي لم تفكر في اختبارها.