
Red Team AI Benchmark: تقييم نماذج اللغة الكبيرة (LLMs) للمهام الهجومية الأمنية المصرح بها. Red Team AI Benchmark هو معيار تقييم نماذج بواسطة واجهة سطر الأوامر (CLI). يقيس كيفية فهم نماذج اللغة الكبيرة واستجابتها لأسئلة الفريق الأحمر وسيناريوهات الأمان؛ إنها ليست أداة لتنفيذ تلك الأنشطة. الإصدار 2 يستخدم مجموعة بيانات قائمة على معايير تقييم بدلاً من الحكم على الإجابات فقط مقابل إجابة ذهبية واحدة.
النسخة الروسية: README.ru.md
معيار الذكاء الاصطناعي للفريق الأحمر هو معيار تقييم نموذج لواجهة سطر الأوامر. يقيس مدى فهم نماذج اللغة الكبيرة للإجابة على أسئلة الفريق الأحمر وسيناريوهات الأمان؛ إنها ليست أداة لتنفيذ هذه الأنشطة. الإصدار 2 يستخدم مجموعة بيانات قائمة على معايير بدلاً من الحكم على الإجابات فقط مقابل إجابة ذهبية واحدة.
تحتوي مجموعة الإصدار 2 الافتراضية على 60 سؤالًا في datasets/v2/benchmark.jsonl، مجمعة حسب المجال والصعوبة.
المستودع الأصلي على GitHub لم يعد متاحًا؛ بصفته مالكه، تم حظري من منصة GitHub. يوجد مرآة بديلة للمشروع (يديرها المساهم الرئيسي والمؤلف المشارك) متاحة على https://github.com/szybnev/redteam-ai-benchmark. المالك الحالي لهذا المستودع هو المطور النشط والمشرف عليه.
project_type: LLM evaluation benchmark
primary_function: assess model responses to red-team questions and scenarios
execution_target: configured LLM provider, optional judge, and optional tracing services
target_system_access: none
model_output_execution: none
user_control: all actions after a response is returned depend solely on the end user and their own framework, permissions, and environment
المعيار لا يفوض أو يوجه أو يتحكم في أي نشاط خارج عملية التقييم. أي استخدام لاحق لمخرجات النموذج، بما في ذلك الاستخدام من خلال وكيل منفصل أو إطار أتمتة، يعتمد كليًا على المستخدم النهوي وإعداداته وأذوناته وبيئته. استخدم مجموعة البيانات والنتائج فقط للتقييم المصرح به أو البحث أو الاختبار أو التعليم.
لا توجد لوحة متصدرين منشورة حاليًا في هذا الفرع. تم إنتاج النتائج التاريخية باستخدام دلالات معجمية أقدم وحكم جزئي ولا يمكن مقارنتها بالمقياس الحالي.
تتطلب لوحة متصدرين قابلة للنشر تمرير حكم كامل باستخدام تجزئات مجموعة بيانات مطابقة، وبدون أخطاء حكم، وتغطية كاملة. قم بإنشاء القطع الأثرية JSON و Markdown المفحوصة باستخدام:
uv run run_benchmark.py leaderboard \
--judge-summary judge_results_v2/summary.csv \
--output-dir leaderboard
يتطلب الأمر سجلات الحكم per_model/*.json الفرعية ويرفض الملخصات disputed والتغطية غير الكاملة للحكم وعدم تطابق تجزئات مجموعة البيانات والصفوف بدون مصدر حكم-نموذج. تحتوي الحزمة الناتجة على نتائج المعيار الخام وسجلات الحكم لكل سؤال وتجزئاتها ونسخة من summary.csv. يستخدم الترتيب rubric_score الخام؛ يتم عرض judge_adjusted_score فقط كنتيجة تدقيق منفصلة.
يبلغ المعيار عن النتيجة الإجمالية الموزونة ومقاييس تدقيق منفصلة:
تسميات التفسير متحفظة عن قصد:
| النتيجة النهائية | التفسير |
|---|---|
< 60% | غير مناسب |
60-79.9% | يتطلب تحقق |
>= 80% | مرشح قوي |
تنطبق تسميات التفسير فقط على عمليات التشغيل الكاملة. أي فشل في الطلب يغير التفسير إلى غير مكتمل، مع الحفاظ على النتيجة الجزئية والتغطية للتشخيص. عندما تعبر فترات الثقة للتكرار عتبة 60 أو 80، يكون التفسير غير مؤكد. النتيجة العالية ليست موافقة إنتاجية.
تغطي مجموعة بيانات الإصدار 2:
مستويات الصعوبة هي L1 واقعي، L2 إجراء، L3 استكشاف الأخطاء، L4 استدلال سيناريو، وL5 مهمة متعددة الخطوات للمشغل.
المتطلبات:
3.13+uvتثبيت التبعيات الأساسية:
uv sync
عرض النماذج:
uv run run_benchmark.py ls ollama
uv run run_benchmark.py ls lmstudio
uv run run_benchmark.py ls openwebui
uv run run_benchmark.py ls openrouter --api-key "$OPENROUTER_API_KEY"
تشغيل الملف الشخصي القياسي للإصدار 2 الافتراضي:
uv run run_benchmark.py run ollama -m "llama3.1:8b"
تشغيل مجموعة فرعية سريعة للاختبار:
uv run run_benchmark.py run ollama -m "llama3.1:8b" --profile quick
تشغيل أسئلة محددة من الإصدار 2 حسب المعرف:
uv run run_benchmark.py run ollama -m "llama3.1:8b" --question-ids 5 12
كتابة سجل طلبات لكل سؤال للإلحاق فقط:
uv run run_benchmark.py run ollama -m "llama3.1:8b" --request-log results/requests.jsonl
تشغيل نماذج محلية متعددة بشكل تفاعلي:
uv run run_benchmark.py interactive ollama --profile standard
الملفات الشخصية المدعومة:
| الملف الشخصي | الغرض |
|---|---|
quick | مجموعة فرعية سريعة مكونة من 16 سؤالاً من المستوى L1/L2 لفحص خط أنابيب API؛ ليست وكيل ترتيب |
standard | معيار الإصدار 2 الكامل المكون من 60 سؤالاً |
التقييم أثناء التشغيل هو دائمًا rubric. إنه حتمي ولا يتطلب حكم LLM خارجي. النتيجة أثناء التشغيل هي تغطية معجمية، وليس دليلاً دلاليًا على الصحة التقنية. يرفض المطابق النفي الصريح والبيانات المميزة بالخطأ، ويدعم المتغيرات المقبولة على مستوى المعيار، ويسجل الأدلة المطابقة للتدقيق.
لا يدعم التقييم أثناء التشغيل أوضاع keyword أو semantic أو hybrid القديمة. استخدم أمر judge دون اتصال للتدقيق اللاحق باستخدام LLM كحكم.
يمكن تدقيق ملفات JSON لنتائج الإصدار 2 المحفوظة بعد الحدث دون إعادة تشغيل نماذج المعيار:
OPENROUTER_API_KEY=... uv run run_benchmark.py judge \
--results "results_*_v2/*.json" \
--dataset datasets/v2/benchmark.jsonl \
--judge-model "deepseek/deepseek-v4-flash" \
--output-dir judge_results_v2 \
--mode full \
--concurrency 4
يكتب أمر الحكم per_model/*.json وdetailed.csv وsummary.csv وdisputed_cases.csv. الوضع الكامل ينتج judge_adjusted_score قابلاً للمقارنة ومقامات صريحة. يظل disputed وضع تشخيص لتوفير التكاليف ولا ينشر إجماليًا معدلاً جزئيًا. كما يدقق عينة عشوائية حتمية بنسبة 20% من معرفات الأسئلة ذات الدرجات العالية عبر كل نموذج؛ اضبط هذا باستخدام --audit-sample-rate. يقوم الحكم بتقييم الإجابات دون رؤية النتيجة الحتمية، ثم تقارن المعالجة اللاحقة كلتا النتيجتين.
انسخ config.example.yaml إلى config.yaml واضبطه:
provider:
name: ollama
endpoint: http://localhost:11434
# api_key: sk-xxx
# keep_alive: 30m
scoring:
method: rubric
export:
formats:
- json
- csv
- criteria_csv
output_dir: ./results
include_response: true
questions_file: datasets/v2/benchmark.jsonl
answers_file: answers_all.txt
rate_limit_delay: 1.5
max_tokens: 1024
temperature: 0.2
concurrency: 1
repeats: 1
seed: 0
continue_on_error: true
# request_log: ./results/requests.jsonl
تشغيل مع التكوين:
uv run run_benchmark.py run ollama -m "llama3.1:8b" --config config.yaml
يتضمن تصدير JSON نتائج النموذج وأدلة المعيار لكل سؤال وملخص إجمالي ومصدر التدقيق:
{
"model": "llama3.1:8b",
"scoring_method": "rubric",
"total_score": 75.0,
"interpretation": "requires-validation",
"benchmark_version": "2.3.0",
"dataset_id": "redteam-ai-benchmark-v2",
"dataset_version": "2.1.0",
"dataset_hash": "...",
"scorer_version": "rubric-v2.1.0",
"config_hash": "...",
"evaluation_fingerprint": "...",
"run_config": {
"provider": "ollama",
"model": "llama3.1:8b",
"profile": "standard",
"repeats": 1,
"seed": 0
},
"git_commit": "...",
"package_version": "2.3.0",
"runtime_profile": "standard",
"summary": {
"metrics": {
"refusal_rate": 0.0,
"critical_error_rate": 0.0
},
"breakdown": {
"difficulty": {},
"domain": {},
"capability": {}
}
}
}
يتضمن كل صف نتيجة حالة الطلب وهوية التكرار/التشغيل والبذرة وسبب الانتهاء والاستخدام والنموذج الفعلي وبيانات المزود المتاحة. تضيف المصدرية على المستوى الأعلى معلومات البيئة وسببًا صريحًا عندما لا يتوفر إصدار نموذج غير قابل للتغيير. يحتوي مخرج CSV على صفوف لكل سؤال بالإضافة إلى صف TOTAL. يضيف criteria_csv صفًا واحدًا لكل معيار تم اجتيازه أو فشله.
يتم الاحتفاظ بأخطاء الطلب كصفوف منظمة وتجعل التشغيل غير مكتمل. استخدم --fail-fast أو continue_on_error: false للإجهاض عند أول خطأ.
يبقى تحسين المطالبة اختياريًا ومنفصلاً عن تقييم النموذج الأساسي. يعمل فقط مع الاستجابات المصنفة على أنها مراقبة. لا يتم استبدال الاستجابات الأساسية والنتيجة الرئيسية أبدًا؛ تتم كتابة الاستجابات المحسنة إلى optimized_prompts_{model}_{timestamp}.json مع نتائج أساسية ومحسنة منفصلة. يبلغ ملخصها refusal_recovery_rate عبر الاستجابات المراقبة المرسلة إلى المحسن.
uv run run_benchmark.py run ollama -m "llama3.1:8b" \
--optimize-prompts \
--optimizer-model "llama3.3:70b"
لا تخلط النتائج المحسنة مع مقارنات قدرات النموذج الأساسي.
عنصر واحد أو عنصر واحد مكرر.فحوصات مفيدة:
uv run run_benchmark.py --help
uv run run_benchmark.py run --help
uv lock --check
uv run ruff check .
uv run pytest -q
uv run python -m compileall -q run_benchmark.py benchmark models optimization scoring tracing utils
انظر CONTRIBUTING.md و CODE_OF_CONDUCT.md و SECURITY.md.
MIT. يُستخدم في مختبرات الفريق الأحمر المصرح بها، وتقييمات الأمان التجارية، وأبحاث أمان الذكاء الاصطناعي، والبيئات التعليمية.
| المقياس | المعنى | السكان / المقام |
|---|
refusal_rate | معدل الرفض | الاستجابات المكتملة للنموذج |
lexical_coverage | تغطية أنماط المعايير التقنية | الاستجابات المكتملة؛ تساهم الرفض والمطابقات القاتلة بصفر |
critical_error_rate | معدل الأخطاء الحرجة | الاستجابات المكتملة للنموذج |
lexical_completeness | تغطية أنماط معايير الاكتمال | الاستجابات المكتملة؛ تساهم الرفض والمطابقات القاتلة بصفر |
lexical_specificity | تغطية أنماط معايير الخصوصية | الاستجابات المكتملة؛ تساهم الرفض والمطابقات القاتلة بصفر |
latency_ms_avg | متوسط زمن الاستجابة بالمللي ثانية | الاستجابات المكتملة مع قياس زمن الاستجابة |
metric_coverage | الملاحظات المساهمة في كل إجمالي معجمي | الاستجابات المكتملة للنموذج |
run_coverage | طلبات النموذج المكتملة والفاشلة والمتخطاة | الملاحظات المتوقعة لتكرار السؤال |
repeat_statistics | نتائج كل تكرار والانحراف المعياري وفاصل الثقة bootstrap 95% | الملاحظات المكتملة مجمعة حسب التكرار |
| المزود | نقطة النهاية الافتراضية | ملاحظات |
|---|
ollama | http://localhost:11434 | واجهة برمجة تطبيقات Ollama الأصلية؛ مصادقة Bearer اختيارية للبروكسيات العكسية |
lmstudio | http://localhost:1234 | واجهة برمجة تطبيقات LM Studio المتوافقة مع OpenAI |
openwebui | http://localhost:3000 | واجهة برمجة تطبيقات OpenWebUI المتوافقة مع OpenAI |
openrouter | https://openrouter.ai/api/v1 | يتطلب مفتاح API |