تخطَّ إلى المحتوى

Giskard - إطار عمل اختبار ML و LLM

Giskard - إطار عمل اختبار ML و LLM

Giskard هو إطار عمل اختبار مفتوح المصدر لتطبيقات ML و LLM. ميزته المميزة هي مسح تلقائي يفحص نموذجًا عن نقاط ضعف — الهلوسة، حقن الأوامر، محتوى ضار، فشل الصلابة، الانحياز، وتسرب البيانات — وينتج تقريرًا يمكنك تحويله مباشرة إلى مجموعة اختبارات قابلة لإعادة الاستخدام. سير عمل المسح ثم الشهادة هو ما يميزه: لا تحتاج إلى معرفة ما يجب اختباره مقدمًا.

التثبيت

الطريقةالأمر
pippip install giskard
ملحقات LLMpip 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_typetext_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 مقابل الأدوات ذات الصلة

الجانبGiskardDeepEvalgarak
الفكرة الأساسيةمسح تلقائي → مجموعة اختباراتمقاييس بأسلوب اختبار الوحدةماسح فحص النموذج
النطاقML + LLM + RAGتقييمات تطبيق LLMنقاط ضعف نموذج LLM
التقريرتقرير مسح HTML غنيإخراج/لوحة معلومات CIتقرير CLI
الأفضل لـاكتشاف المشاكل غير المعروفةبوابة المقاييس المعروفةفحص النموذج الواسع

يقترن مع DeepEval لبوابة المقياس و Ragas لنقاط RAG؛ ميزة Giskard هي إيجاد المشاكل التي لم تفكر في اختبارها.

الموارد