
कस्टम LLM अनुप्रयोगों के लिए एक सुरक्षा स्कैनर
_________ __O __O o_.-._
Humans, Do Not Resist! \|/ ,-'-.____() / /\_, / /\_|_.-._|
_____ / --O-- (____.--""" ___/\ ___/\ |
( o.o ) / Utku Sen's /|\ -'--'_ /_ /__|_
| - | / _ __ _ _ ___ _ __ _ __| |_ _ __ __ _ _ __|___ \
/| | | '_ \ '_/ _ \ ' \| '_ \ _| ' \/ _` | '_ \ ___) |
/ | | | .__/_| \___/_|_|_| .__/\__|_|_|_\__,_| .__// __/
/ |-----| |_| |_| |_| |_____|
promptmap2 कस्टम LLM अनुप्रयोगों के लिए एक स्वचालित प्रॉम्प्ट इंजेक्शन स्कैनर है। यह दो परीक्षण मोड का समर्थन करता है:
व्हाइट-बॉक्स परीक्षण: अपने सिस्टम प्रॉम्प्ट और मॉडल जानकारी प्रदान करें। promptmap2 स्वयं लक्ष्य LLM चलाता है और उसका परीक्षण करता है।
ब्लैक-बॉक्स परीक्षण: promptmap2 को किसी बाहरी HTTP एंडपॉइंट पर इंगित करें। यह HTTP पर अटैक प्रॉम्प्ट भेजता है और लौटाए गए आउटपुट का निरीक्षण करता है।
यह एक दोहरी-LLM आर्किटेक्चर का उपयोग करके संचालित होता है:
यह उपकरण आपके लक्ष्य LLM पर अटैक प्रॉम्प्ट भेजता है और पूर्वनिर्धारित शर्तों के आधार पर यह मूल्यांकन करने के लिए नियंत्रक LLM का उपयोग करता है कि हमला सफल हुआ या नहीं।
इसमें प्रॉम्प्ट चोरी, जेलब्रेक, हानिकारक सामग्री निर्माण, पूर्वाग्रह परीक्षण और अधिक सहित कई श्रेणियों में व्यापक परीक्षण नियम शामिल हैं।
[!IMPORTANT]
promptmap को मूल रूप से 2023 में जारी किया गया था, लेकिन 2025 में पूरी तरह से फिर से लिखा गया।
📖 अपने LLM ऐप्स को सुरक्षित करना चाहते हैं? आप मेरी ई-बुक खरीद सकते हैं

git clone https://github.com/utkusen/promptmap.git
cd promptmap
pip install -r requirements.txt
अपने चुने हुए प्रदाता के लिए उपयुक्त API कुंजी सेट करें।
export OPENAI_API_KEY="your-openai-key"
अन्य समर्थित प्रदाता ANTHROPIC_API_KEY, GOOGLE_API_KEY, और XAI_API_KEY का उपयोग करते हैं।
यदि आप स्थानीय मॉडल का उपयोग करना चाहते हैं, तो आपको Ollama स्थापित करने की आवश्यकता है।
Ollama के डाउनलोड पृष्ठ पर जाएँ और स्थापना निर्देशों का पालन करें।
आपको अपनी सिस्टम प्रॉम्प्ट फ़ाइल प्रदान करने की आवश्यकता है। डिफ़ॉल्ट फ़ाइल system-prompts.txt है। आप --prompts फ़्लैग के साथ अपनी स्वयं की फ़ाइल निर्दिष्ट कर सकते हैं। रिपॉजिटरी में एक उदाहरण फ़ाइल प्रदान की गई है।
python3 promptmap2.py --target-model gpt-3.5-turbo --target-model-type openai
Anthropic, Google, और XAI प्रदाता समान पैटर्न का पालन करते हैं: सही मॉडल नाम चुनें और --target-model-type को anthropic, google, या xai पर सेट करें।
python3 promptmap2.py --target-model "llama2:7b" --target-model-type ollama
# यदि मॉडल स्थापित नहीं है, तो promptmap आपसे इसे डाउनलोड करने के लिए कहेगा। यदि आप इसे स्वचालित रूप से डाउनलोड करना चाहते हैं, तो आप `-y` फ़्लैग का उपयोग कर सकते हैं।
# डिफ़ॉल्ट रूप से, promptmap2 http://localhost:11434 पर Ollama से जुड़ता है
# यदि आपका Ollama सर्वर कहीं और चल रहा है तो आप एक कस्टम URL निर्दिष्ट कर सकते हैं
python3 promptmap2.py --target-model "llama2:7b" --target-model-type ollama --ollama-url http://192.168.1.100:11434
डिफ़ॉल्ट रूप से, समान मॉडल का उपयोग लक्ष्य और नियंत्रक दोनों के रूप में किया जाता है।
[!IMPORTANT]
नियंत्रक मॉडल के लिए, सटीक मूल्यांकन के लिए इन शक्तिशाली मॉडलों में से एक का उपयोग करने की अत्यधिक अनुशंसा की जाती है:
- OpenAI GPT-5
- Google Gemini 2.5 Pro
- Anthropic Claude 4 Sonnet
- gpt-oss:20b (Ollama के माध्यम से)
कमजोर मॉडल परिणामों का सटीक विश्लेषण नहीं कर पाएंगे और गलत सकारात्मक या नकारात्मक परिणाम दे सकते हैं।
# GPT-3.5 लक्ष्य के परीक्षण के लिए नियंत्रक के रूप में GPT-4o का उपयोग करें
python3 promptmap2.py --target-model gpt-3.5-turbo --target-model-type openai \
--controller-model gpt-4o --controller-model-type openai
# स्थानीय Llama मॉडल के परीक्षण के लिए नियंत्रक के रूप में Claude 4 Opus का उपयोग करें
python3 promptmap2.py --target-model llama2:7b --target-model-type ollama \
--controller-model claude-4-opus-20240229 --controller-model-type anthropic
यदि आप लक्ष्य LLM के सिस्टम प्रॉम्प्ट को नियंत्रित नहीं करते हैं, तो भी आप HTTP अनुरोध स्कीमा प्रदान करके उस पर हमला कर सकते हैं। --target-model-type http सेट करें और --http-config प्रदान करें जो प्रत्येक पेलोड भेजने के तरीके का वर्णन करने वाली YAML फ़ाइल की ओर इंगित करता है। मुख्य फ़ील्ड:
url: अनुरोध का गंतव्य। उदाहरण के लिए: https://assistant.example.com/chatmethod: HTTP क्रिया, डिफ़ॉल्ट POST है।headers: आप कोई भी हेडर जोड़ सकते हैं। उदाहरण के लिए: Content-Type: application/json, Authorization: Bearer <token>payload_placeholder: अटैक प्रॉम्प्ट यहाँ डाला जाएगा (एकाधिक स्थान समर्थित हैं): "{PAYLOAD_POSITION}"payload_encoding: पेलोड को सम्मिलित करने से पहले एन्कोड करने के तरीके को नियंत्रित करने के लिए none, url, या form हो सकता है।json या body: अनुरोध पेलोड को परिभाषित करें।verify_ssl: TLS सत्यापन सक्षम करने के लिए true पर सेट करें (ट्रैफ़िक को इंटरसेप्ट करते समय सुविधा के लिए डिफ़ॉल्ट रूप से अक्षम)।proxy: वैकल्पिक प्रॉक्सी कॉन्फ़िगरेशन (scheme, host, port, और वैकल्पिक क्रेडेंशियल्स) जो HTTP/HTTPS दोनों ट्रैफ़िक के लिए उपयोग किया जाता है।answer_focus_hint: वैकल्पिक स्ट्रिंग स्निपेट जो शोरगुल वाले HTTP प्रतिक्रियाओं के अंदर सहायक के उत्तर को इंगित करता है।JSON अनुरोध उदाहरण (http-examples/http-config-example.yaml देखें):
name: Example External Chat Endpoint
method: POST
url: https://chat.example.com/v1/messages
headers:
Content-Type: application/json
json:
messages:
- role: user
content: "{PAYLOAD_POSITION}"
answer_focus_hint: '"content": "{ANSWER_POSITION}"'
proxy:
scheme: https
host: 127.0.0.1
port: 8080
पेलोड एन्कोडिंग के साथ क्लासिक POST अनुरोध उदाहरण (http-examples/http-config-form.yaml):
name: Form Endpoint
method: POST
url: https://legacy.example.com/api/submit
headers:
Content-Type: application/x-www-form-urlencoded
payload_encoding: form
body: "username=qa_tester&payload={PAYLOAD_POSITION}&mode=probe"
answer_focus_hint: '"message={ANSWER_POSITION}"'
promptmap2 प्रत्येक {PAYLOAD_POSITION} प्रविष्टि को वर्तमान अटैक प्रॉम्प्ट से बदलता है, HTTP अनुरोध जारी करता है, और प्रतिक्रिया निकाय को मूल्यांकन के लिए वापस नियंत्रक LLM को फीड करता है। जब answer_focus_hint प्रदान किया जाता है, तो मूल्यांकक LLM को प्रतिक्रिया के उस भाग पर ध्यान केंद्रित करने का निर्देश दिया जाता है।
python3 promptmap2.py --target-model external --target-model-type http \
--http-config http-examples/http-config-example.yaml \
--controller-model gpt-4 --controller-model-type openai
python3 promptmap2.py --target-model gpt-4 --target-model-type openai --output results.json