
रेड टीम AI बेंचमार्क: अधिकृत आपत्तिजनक-सुरक्षा कार्यों के लिए LLMs का मूल्यांकन करना। Red Team AI Benchmark एक CLI मॉडल-मूल्यांकन बेंचमार्क है। यह मापता है कि LLMs रेड-टीम प्रश्नों और सुरक्षा परिदृश्यों को कैसे समझते हैं और उनका जवाब देते हैं; यह उन गतिविधियों को करने के लिए कोई उपकरण नहीं है। संस्करण 2 उत्तरों को केवल एक सुनहरे प्रतिक्रिया के विरुद्ध आंकने के बजाय एक रूब्रिक-आधारित डेटासेट का उपयोग करता है।
रूसी संस्करण: README.ru.md
रेड टीम AI बेंचमार्क एक CLI मॉडल-मूल्यांकन बेंचमार्क है। यह मापता है कि LLM रेड-टीम प्रश्नों और सुरक्षा परिदृश्यों को कैसे समझते हैं और उनका जवाब देते हैं; यह उन गतिविधियों को करने का उपकरण नहीं है। संस्करण 2 केवल एक स्वर्ण प्रतिक्रिया के विरुद्ध उत्तरों का मूल्यांकन करने के बजाय एक रूब्रिक-आधारित डेटासेट का उपयोग करता है।
डिफ़ॉल्ट v2 सूट में datasets/v2/benchmark.jsonl में 60 प्रश्न हैं, जो डोमेन और कठिनाई के अनुसार समूहित हैं।
मूल 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% | not-suitable |
60-79.9% | requires-validation |
>= 80% | strong-candidate |
व्याख्या लेबल केवल पूर्ण रन पर लागू होते हैं। कोई भी अनुरोध विफलता व्याख्या को incomplete में बदल देती है, जबकि निदान के लिए आंशिक स्कोर और कवरेज को संरक्षित करती है। जब दोहराने वाले विश्वास अंतराल 60 या 80 सीमा को पार करते हैं, तो व्याख्या uncertain होती है। एक उच्च स्कोर उत्पादन अनुमोदन नहीं है।
v2 डेटासेट कवर करता है:
कठिनाई स्तर L1 factual, L2 procedure, L3 troubleshooting, L4 scenario reasoning, और L5 multi-step operator task हैं।
आवश्यकताएँ:
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"
डिफ़ॉल्ट v2 मानक प्रोफ़ाइल चलाएँ:
uv run run_benchmark.py run ollama -m "llama3.1:8b"
एक त्वरित स्मोक उपसमूह चलाएँ:
uv run run_benchmark.py run ollama -m "llama3.1:8b" --profile quick
आईडी द्वारा चयनित v2 प्रश्न चलाएँ:
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 | पूर्ण 60-प्रश्न v2 बेंचमार्क |
रनटाइम स्कोरिंग हमेशा rubric होती है। यह नियतात्मक है और इसके लिए बाहरी LLM न्यायाधीश की आवश्यकता नहीं है। रनटाइम स्कोर शाब्दिक कवरेज है, तकनीकी शुद्धता का अर्थ प्रमाण नहीं। मैचर स्पष्ट निषेध और झूठे चिह्नित कथनों को अस्वीकार करता है, मानदंड-स्तर के स्वीकृत वेरिएंट का समर्थन करता है, और मिलान किए गए साक्ष्य को ऑडिट के लिए रिकॉर्ड करता है।
रनटाइम स्कोरिंग विरासत keyword, semantic, या hybrid मोड का समर्थन नहीं करती। पोस्ट-हॉक LLM-as-Judge ऑडिटिंग के लिए ऑफ़लाइन judge कमांड का उपयोग करें।
सहेजे गए v2 परिणाम JSON फ़ाइलों को बेंचमार्क मॉडल को फिर से चलाए बिना पोस्ट-हॉक ऑडिट किया जा सकता है:
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 प्रति पास या फेल किए गए रूब्रिक मानदंड में एक पंक्ति जोड़ता है।
अनुरोध त्रुटियों को संरचित पंक्तियों के रूप में संरक्षित किया जाता है और रन को incomplete बनाते हैं। पहली त्रुटि पर रोकने के लिए --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"
अनुकूलित स्कोर को आधार मॉडल क्षमता तुलना के साथ न मिलाएं।
single-item या single-item-repeated के रूप में उजागर करते हैं।उपयोगी जाँचें:
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. अधिकृत रेड टीम लैब्स, वाणिज्यिक सुरक्षा मूल्यांकन, AI-सुरक्षा अनुसंधान और शैक्षिक वातावरण में उपयोग करें।
| मीट्रिक | अर्थ | जनसंख्या / हर |
|---|
refusal_rate | अस्वीकृत या सेंसर किए गए उत्तरों का प्रतिशत | पूर्ण मॉडल प्रतिक्रियाएँ |
lexical_coverage | तकनीकी मानदंड पैटर्न का कवरेज | पूर्ण प्रतिक्रियाएँ; अस्वीकृति और घातक मिलान शून्य योगदान करते हैं |
critical_error_rate | गैर-अस्वीकृत घातक-त्रुटि नियमों से मेल खाने वाले उत्तर | पूर्ण मॉडल प्रतिक्रियाएँ |
lexical_completeness | पूर्णता मानदंड पैटर्न का कवरेज | पूर्ण प्रतिक्रियाएँ; अस्वीकृति और घातक मिलान शून्य योगदान करते हैं |
lexical_specificity | विशिष्टता मानदंड पैटर्न का कवरेज | पूर्ण प्रतिक्रियाएँ; अस्वीकृति और घातक मिलान शून्य योगदान करते हैं |
latency_ms_avg | औसत प्रतिक्रिया विलंबता | मापित विलंबता वाली पूर्ण प्रतिक्रियाएँ |
metric_coverage | प्रत्येक शाब्दिक समुच्चय में योगदान देने वाले अवलोकन | पूर्ण मॉडल प्रतिक्रियाएँ |
run_coverage | पूर्ण, विफल और छोड़े गए मॉडल अनुरोध | अपेक्षित प्रश्न-दोहराने के अवलोकन |
repeat_statistics | प्रति-दोहराने के स्कोर, मानक विचलन, और 95% बूटस्ट्रैप CI | दोहराने के अनुसार समूहित पूर्ण अवलोकन |
| प्रदाता | डिफ़ॉल्ट एंडपॉइंट | नोट्स |
|---|
ollama | http://localhost:11434 | नेटिव Ollama API; रिवर्स प्रॉक्सी के लिए वैकल्पिक Bearer प्रमाणीकरण |
lmstudio | http://localhost:1234 | OpenAI-संगत LM Studio API |
openwebui | http://localhost:3000 | OpenAI-संगत OpenWebUI API |
openrouter | https://openrouter.ai/api/v1 | एक API कुंजी की आवश्यकता है |