
garak v0.16.0
मॉड्यूलर LLM भेद्यता स्कैनर जो hallucination, data leakage, prompt injection, jailbreaks, और toxicity के लिए static, dynamic, और adaptive probes का उपयोग करके अनेक मॉडल प्रदाताओं पर जाँच करता है।
garak, LLM भेद्यता स्कैनर
जनरेटिव AI रेड-टीमिंग और मूल्यांकन किट
garak जाँचता है कि क्या किसी LLM को ऐसे तरीके से विफल कराया जा सकता है जो हम नहीं चाहते। garak भ्रम, डेटा लीकेज, प्रॉम्प्ट इंजेक्शन, गलत सूचना, विषाक्तता उत्पादन, जेलब्रेक और कई अन्य कमजोरियों की जाँच करता है। यदि आप nmap या msf / Metasploit Framework जानते हैं, तो garak उनके समान कुछ काम करता है, लेकिन LLMs के लिए।
garak LLM या संवाद प्रणाली को विफल करने के तरीकों पर ध्यान केंद्रित करता है। यह इसकी खोज के लिए स्थिर, गतिशील और अनुकूली प्रोब को जोड़ता है।
garak एक मुफ्त उपकरण है। हम इसे विकसित करना पसंद करते हैं और अनुप्रयोगों को समर्थन देने के लिए हमेशा कार्यक्षमता जोड़ने में रुचि रखते हैं।
शुरुआत करें
> हमारी उपयोगकर्ता मार्गदर्शिका देखें! docs.garak.ai
> हमारे Discord से जुड़ें!
> प्रोजेक्ट लिंक और होम: garak.ai
> ट्विटर: @garak_llm
> DEF CON स्लाइड्स!
LLM समर्थन
वर्तमान में समर्थित:
- hugging face hub जनरेटिव मॉडल
- replicate टेक्स्ट मॉडल
- openai api चैट और निरंतरता मॉडल
- aws bedrock फाउंडेशन मॉडल
- litellm
- REST के माध्यम से सुलभ लगभग कुछ भी
- gguf मॉडल जैसे llama.cpp संस्करण >= 1046
- .. और भी कई LLMs!
स्थापित करें:
garak एक कमांड-लाइन उपकरण है। इसे Linux और OSX पर विकसित किया गया है।
pip के साथ मानक स्थापना
बस इसे PyPI से प्राप्त करें और आप उपयोग के लिए तैयार हैं:``` python -m pip install -U garak
### `pip` के साथ डेवलपमेंट वर्जन इंस्टॉल करें
`garak` का मानक pip संस्करण समय-समय पर अपडेट किया जाता है। GitHub से एक नया संस्करण प्राप्त करने के लिए, प्रयास करें:```
python -m pip install -U git+https://github.com/NVIDIA/garak.git@main
स्रोत से क्लोन करें
garak की अपनी निर्भरताएँ हैं। आप garak को अपने स्वयं के Conda वातावरण में स्थापित कर सकते हैं:```
conda create --name garak "python>=3.10,<=3.12"
conda activate garak
gh repo clone NVIDIA/garak
cd garak
python -m pip install -e .
ठीक है, यदि यह ठीक रहा, तो आप शायद उपयोग के लिए तैयार हैं!
**नोट**: यदि आपने `NVIDIA` GitHub संगठन में स्थानांतरण से पहले क्लोन किया था, लेकिन आप इसे `github.com/NVIDIA` URI पर पढ़ रहे हैं, तो कृपया अपने remotes को निम्नानुसार अपडेट करें:```
git remote set-url origin https://github.com/NVIDIA/garak.git
शुरू करना
सामान्य वाक्यविन्यास है:
garak <options>
garak को यह जानने की आवश्यकता है कि किस मॉडल को स्कैन करना है, और डिफ़ॉल्ट रूप से, यह उस मॉडल पर उन सभी प्रोब्स को आज़माएगा जो इसे जानता है, प्रत्येक प्रोब द्वारा अनुशंसित भेद्यता डिटेक्टरों का उपयोग करके। आप इसका उपयोग करके प्रोब्स की सूची देख सकते हैं:
garak --list_probes
जनरेटर निर्दिष्ट करने के लिए, --target_type और, वैकल्पिक रूप से, --target_name विकल्पों का उपयोग करें। मॉडल प्रकार एक मॉडल परिवार/इंटरफ़ेस निर्दिष्ट करता है; मॉडल नाम उपयोग किए जाने वाले सटीक मॉडल को निर्दिष्ट करता है। नीचे "जनरेटर का परिचय" खंड कुछ समर्थित जनरेटरों का वर्णन करता है। एक सीधा जनरेटर परिवार हगिंग फेस मॉडल है; इनमें से एक को लोड करने के लिए, --target_type को huggingface और --target_name को हब पर मॉडल के नाम पर सेट करें (जैसे "RWKV/rwkv-4-169m-pile")। कुछ जनरेटरों को पर्यावरण चर के रूप में API कुंजी सेट करने की आवश्यकता हो सकती है, और यदि उन्हें इसकी आवश्यकता होगी तो वे आपको बताएंगे।
garak डिफ़ॉल्ट रूप से सभी प्रोब्स चलाता है, लेकिन आप इसके बारे में विशिष्ट भी हो सकते हैं। --probes promptinject केवल PromptInject फ्रेमवर्क के तरीकों का उपयोग करेगा, उदाहरण के लिए। आप . के बाद प्लगइन का नाम जोड़कर प्लगइन परिवार के बजाय एक विशिष्ट प्लगइन भी निर्दिष्ट कर सकते हैं; उदाहरण के लिए, --probes lmrc.SlurUsage लैंग्वेज मॉडल रिस्क कार्ड्स फ्रेमवर्क पर आधारित मॉडलों द्वारा अपशब्द उत्पन्न करने की जाँच के कार्यान्वयन का उपयोग करेगा।
सहायता और प्रेरणा के लिए, हमें Twitter या discord पर खोजें!
उदाहरण
एन्कोडिंग-आधारित प्रॉम्प्ट इंजेक्शन के लिए एक वाणिज्यिक मॉडल की जांच करें (OSX/*nix) (उदाहरण मान को वास्तविक OpenAI API कुंजी से बदलें)``` export OPENAI_API_KEY="sk-123XXXXXXXXXXXX" python3 -m garak --target_type openai --target_name gpt-5-nano --probes encoding
देखें कि GPT2 का Hugging Face संस्करण DAN 11.0 के प्रति संवेदनशील है या नहीं।```
python3 -m garak --target_type huggingface --target_name gpt2 --probes dan.Dan_11_0
परिणाम पढ़ना
हर लोड किए गए प्रोब के लिए, garak उत्पन्न होने पर एक प्रगति पट्टी प्रिंट करेगा। एक बार जनरेशन पूरा हो जाने पर, प्रत्येक डिटेक्टर पर उस प्रोब के परिणामों का मूल्यांकन करने वाली एक पंक्ति दी जाती है। यदि किसी भी प्रॉम्प्ट प्रयास ने अवांछित व्यवहार उत्पन्न किया, तो प्रतिक्रिया को FAIL के रूप में चिह्नित किया जाएगा, और विफलता दर दी जाएगी।
यहाँ GPT-3 वैरिएंट पर encoding मॉड्यूल के परिणाम दिए गए हैं:

और ChatGPT के लिए भी यही परिणाम:

हम देख सकते हैं कि नया मॉडल एन्कोडिंग-आधारित इंजेक्शन हमलों के प्रति अधिक संवेदनशील है, जबकि text-babbage-001 केवल quoted-printable और MIME एन्कोडिंग इंजेक्शन के लिए कमजोर पाया गया। प्रत्येक पंक्ति के अंत में दिए गए आंकड़े, जैसे 840/840, कुल टेक्स्ट जनरेशन की संख्या और फिर यह दर्शाते हैं कि इनमें से कितने ठीक लग रहे थे। यह आंकड़ा काफी अधिक हो सकता है क्योंकि प्रति प्रॉम्प्ट एक से अधिक जनरेशन की जाती है – डिफ़ॉल्ट रूप से, 10।
त्रुटियाँ garak.log में जाती हैं; रन का विवरण विश्लेषण की शुरुआत और अंत में निर्दिष्ट .jsonl फ़ाइल में लॉग किया जाता है। analyse/analyse_log.py में एक बुनियादी विश्लेषण स्क्रिप्ट है जो उन प्रोब्स और प्रॉम्प्ट्स को आउटपुट करेगी जिनसे सबसे अधिक हिट हुए।
PR भेजें और मुद्दे खोलें। शुभ शिकार!
जनरेटर का परिचय
Hugging Face
Pipeline API का उपयोग करते हुए:
--target_type huggingface(स्थानीय रूप से चलाने के लिए transformers मॉडल के लिए)--target_name- Hub से मॉडल का नाम उपयोग करें। केवल जनरेटिव मॉडल काम करेंगे। यदि यह विफल होता है और ऐसा नहीं होना चाहिए, तो कृपया एक मुद्दा खोलें और आपके द्वारा आज़माए गए कमांड + अपवाद को पेस्ट करें!