
StealthRL: RL framework for adversarially paraphrasing AI text to stress-test detector robustness.
पेपर (arXiv)
डेमो
मॉडल (Hugging Face)
बेंचमार्क डेटासेट (Hugging Face)

एआई-टेक्स्ट डिटेक्टरों का उपयोग उच्च-जोखिम वाले परिवेशों में तेजी से बढ़ रहा है, फिर भी अर्थ-संरक्षक प्रतिकूल पुनर्लेखन के प्रति उनकी मजबूती अनिश्चित बनी हुई है। हम StealthRL प्रस्तुत करते हैं, जो अनुकूली पैराफ्रेज़ अटैक के साथ एआई-टेक्स्ट डिटेक्टरों के स्ट्रेस-टेस्टिंग के लिए एक रीइन्फोर्समेंट लर्निंग ढांचा है। StealthRL सिमेंटिक सामग्री को संरक्षित रखते हुए एक डिटेक्टर एन्सेम्बल के विरुद्ध एक पैराफ्रेज़ पॉलिसी को प्रशिक्षित करता है, फिर होल्ड-आउट डिटेक्टर परिवारों में स्थानांतरण का मूल्यांकन करता है। पूर्ण फ़िल्टर किए गए MAGE परीक्षण पूल (15,310 मानव / 14,656 AI) पर, StealthRL औसत AUROC को 0.79 से घटाकर 0.43 कर देता है और RoBERTa, Fast-DetectGPT, Binoculars और MAGE में 0.024 औसत TPR@1%FPR प्राप्त करता है। यह अटैक प्रशिक्षण के दौरान उपयोग नहीं किए गए दो डिटेक्टरों में स्थानांतरित हो जाता है, जो एकल-डिटेक्टर विफलता के बजाय साझा कमजोरियों को उजागर करता है। हम आगे डिटेक्टर स्कोर वितरण का विश्लेषण करते हैं और E5, BERTScore तथा LLM-आधारित Likert रेटिंग के साथ गुणवत्ता का मूल्यांकन करते हैं। हमारे परिणाम दिखाते हैं कि वर्तमान एआई-टेक्स्ट डिटेक्टर यथार्थवादी पैराफ्रेज़िंग दबाव के तहत भंगुर बने हुए हैं, और प्रतिकूल मजबूती मूल्यांकन के लिए एक पुनरुत्पादनीय प्रोटोकॉल प्रदान करते हैं।
यह रिपॉजिटरी StealthRL के पीछे की शोध और इंजीनियरिंग कोडबेस है। इसमें शामिल हैं:
यह रिपॉजिटरी उन शोधकर्ताओं के लिए एक उपयोगी प्रारंभिक बिंदु है जो चाहते हैं:
stealthrl/: प्रशिक्षण कोड, डिटेक्टर रैपर, रिवॉर्ड, डेटा उपयोगिताएँ और मूल StealthBench पैकेजeval/: पेपर परिणामों के लिए उपयोग किया जाने वाला शोध-स्तरीय मूल्यांकन हार्नेसscripts/: प्रशिक्षण, मूल्यांकन, ऑर्केस्ट्रेशन, प्लॉटिंग और उपयोगिताओं के लिए चलाने योग्य एंट्री पॉइंटconfigs/: प्रशिक्षण, मूल्यांकन और एब्लेशन के लिए YAML कॉन्फ़िगfigures/: पाइपलाइन आरेख और स्थिर संपत्तियाँtests/: एकीकरण और सैनिटी जाँचanalysis/: तदर्थ विश्लेषण सहायक और एक-बार उपयोगिताएँpython -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
आप प्रोजेक्ट के किन हिस्सों को चलाना चाहते हैं, उसके आधार पर आपको ये भी चाहिए हो सकते हैं:
pip install tinker
pip install openai
pip install vllm
नोट:
M2 द्वारा उपयोग किए जाने वाले क्लाउड-समर्थित StealthRL चेकपॉइंट इन्फेरेंस पथ के लिए tinker आवश्यक है।openai केवल GPT/Likert गुणवत्ता मूल्यांकन चरण के लिए आवश्यक है।vllm पेपर बेसलाइन में तेज़ स्थानीय जनरेशन के लिए अनुशंसित है।रिपॉजिटरी द्वारा उपयोग किए जाने वाले विशिष्ट पर्यावरण चर:
export HF_HOME=$HOME/.cache/huggingface
export TRANSFORMERS_CACHE=$HF_HOME
export OPENAI_API_KEY=...
export TINKER_API_KEY=...
चरणबद्ध पेपर मूल्यांकन पाइपलाइन के लिए, हमने एक env फ़ाइल के साथ एक चेकपॉइंट डिस्क्रिप्टर JSON का उपयोग किया। सार्वजनिक स्क्रिप्ट आपको दोनों पथों को स्पष्ट रूप से ओवरराइड करने देती हैं:
python scripts/run_full_mage_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json
python scripts/run_eval.py --quick
python scripts/run_stealthbench.py --config configs/stealthbench.yaml
यह अब कॉन्फ़िगर की गई टेक्स्ट फ़ाइलों को लोड करता है, कॉन्फ़िगर किए गए डिटेक्टरों को चलाता है, CSV आउटपुट सहेजता है और तुलना प्लॉट उत्पन्न करता है। पुराना केवल-TODO स्टब हटा दिया गया है।
python scripts/run_full_mage_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json \
--run-root outputs/eval_runs/full_mage_public \
--gpus 0 1 2 3
रिपॉजिटरी में demo/ के अंतर्गत एक FastAPI-समर्थित डेमो वेबसाइट शामिल है। यह एक सुव्यवस्थित स्थैतिक UI प्रदान करती है और API-कुंजी समर्थन के साथ POST /api/paraphrase उजागर करती है, साथ ही बिना प्रमाणीकरण वाले उपयोगकर्ताओं के लिए 20/दिन की सार्वजनिक कोटा भी।
pip install -r demo/requirements.txt
uvicorn demo.stealthrl_demo.app:app --reload --port 8080
डिफ़ॉल्ट रूप से डेमो UI परीक्षण के लिए शून्य-लागत mock मोड में चलता है। वास्तविक StealthRL सैम्पलर का उपयोग करने के लिए, STEALTHRL_DEMO_INFERENCE_BACKEND=tinker, STEALTHRL_DEMO_CHECKPOINT_JSON और TINKER_API_KEY सेट करें। API-कुंजी, कोटा, Docker और AWS डिप्लॉयमेंट नोट्स के लिए demo/README.md देखें।
पेपर पूर्ण फ़िल्टर किए गए MAGE मूल्यांकन पूल पर परिणाम रिपोर्ट करता है:
शोध-स्तरीय मूल्यांकन पाइपलाइन eval/ मॉड्यूल के साथ-साथ scripts/ के अंतर्गत चरणबद्ध स्क्रिप्ट में कार्यान्वित की गई है।
क्रेडेंशियल और चेकपॉइंट मेटाडेटा तैयार करें।
OPENAI_API_KEY और TINKER_API_KEY युक्त एक env फ़ाइल बनाएं, और StealthRL Tinker सैम्पलर पथ का वर्णन करने वाला एक चेकपॉइंट JSON बनाएं।
प्रीफ्लाइट चलाएँ।
python scripts/preflight_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json
python scripts/run_full_mage_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json \
--run-root outputs/eval_runs/full_mage_repro \
--gpus 0 1 2 3
चुनी गई रन निर्देशिका के अंतर्गत उत्पन्न विधि आउटपुट, डिटेक्टर स्कोर, मेट्रिक्स और प्लॉट का निरीक्षण करें।
यदि आपको केवल कैश किए गए आउटपुट पर GPT-आधारित गुणवत्ता निर्णय को फिर से चलाने की आवश्यकता है:
python scripts/run_gpt_quality_only.py \
--run-root outputs/eval_runs/full_mage_repro \
--env-file ~/.config/stealthrl/eval.env
python scripts/compute_bertscore_for_run.py \
--run-dir outputs/eval_runs/full_mage_repro/assembled \
--device cuda:0 \
--batch-size 16 \
--chunk-size 512
BERTScore स्क्रिप्ट प्रत्येक चंक के बाद quality.parquet और quality.csv को उसी स्थान पर अपडेट करती है, इसलिए बाधित रन को पूर्ण पंक्तियों की पुनर्गणना किए बिना फिर से शुरू किया जा सकता है। छोटे स्मोक टेस्ट के लिए --limit-per-method का उपयोग करें और --force का उपयोग केवल तभी करें जब जानबूझकर मौजूदा BERTScore कॉलम की पुनर्गणना कर रहे हों।
चरणबद्ध रन उत्पन्न करता है:
method_runs/: प्रति-विधि उत्पन्न आउटपुटdetector_scores/: प्रति-डिटेक्टर parquet स्कोर फ़ाइलेंassembled/metrics.json: समग्र डिटेक्टर मेट्रिक्सassembled/thresholds.json: कैलिब्रेटेड डिटेक्टर थ्रेसहोल्डassembled/quality.parquet: स्वचालित गुणवत्ता मेट्रिक्सassembled/quality_gpt.parquet: GPT/Likert गुणवत्ता रेटिंगassembled/figures/: पेपर-तैयार प्लॉटप्राथमिक पेपर चेकपॉइंट विहित प्रशिक्षण कॉन्फ़िगरेशन के रूप में configs/tinker_mage_10k.yaml का उपयोग करता है: LoRA रैंक 32 के साथ Qwen3-4B-Instruct, GRPO समूह आकार 8, 10,000 MAGE प्रशिक्षण नमूने, तीन एपोक, सीखने की दर 2.8e-4, KL गुणांक 0.05, तापमान 1.0, top-p 0.9, और 0.6 RoBERTa / 0.4 Fast-DetectGPT भारित दो-डिटेक्टर रिवॉर्ड एन्सेम्बल। configs/ में अन्य कॉन्फ़िग लीगेसी उदाहरणों, स्मोक-टेस्ट सेटिंग्स या एब्लेशन टेम्पलेट के रूप में रखे गए हैं और जब तक स्पष्ट रूप से प्रलेखित न हों, उन्हें पेपर-आधिकारिक नहीं माना जाना चाहिए।
StealthRL एक डिटेक्टर के बजाय एक पैराफ्रेज़ पॉलिसी को प्रशिक्षित करता है। मूल विचार एक ऐसे मॉडल को अनुकूलित करना है जो AI-जनित टेक्स्ट को इस प्रकार पुनर्लेखित करता है कि वह सिमेंटिक रूप से वफादार बना रहे जबकि डिटेक्टर का विश्वास कम हो जाए।
Qwen/Qwen3-4B-Instruct-2507रिवॉर्ड बहु-उद्देश्यीय है और संतुलित करता है:
कार्यान्वयन मुख्य रूप से इनमें है:
stealthrl/tinker/train.pystealthrl/rewards/configs/पेपर का StealthRL अटैक परीक्षण समय पर सिंगल-शॉट है:
डिटेक्टर एक्सेस का उपयोग ऑफ़लाइन RL प्रशिक्षण के दौरान और बाहरी मूल्यांकन के लिए किया जाता है, न कि M2 में अनुकूली क्वेरी-समय खोज के लिए।
पेपर मूल्यांकन पुराने stealthrl/evaluation/ हार्नेस के बजाय नए eval/ स्टैक में कार्यान्वित किया गया है।
M0: कोई अटैक नहींM1: सरल पैराफ्रेज़ बेसलाइनM2: StealthRLM3: डिटेक्टर-निर्देशित प्रतिकूल पैराफ्रेज़िंग बेसलाइनM4: AuthorMist बेसलाइनM5: कैरेक्टर-स्तरीय अस्पष्टीकरण बेसलाइनप्रासंगिक कोड:
eval/methods/scripts/generate_method_outputs.pyमुख्य पेपर डिटेक्टर पैनल उपयोग करता है:
roberta: openai-community/roberta-large-openai-detectorfast_detectgptbinocularsmage: yaful/MAGEरिपॉजिटरी लीगेसी/संगतता प्रयोगों के लिए ghostbuster समर्थन भी बनाए रखती है, लेकिन Ghostbuster अंतिम चार-डिटेक्टर पेपर पैनल का हिस्सा नहीं है।
प्रासंगिक कोड:
eval/detectors.pyscripts/score_detector_outputs.pyeval/runner.pyसार्वजनिक मूल्यांकन कोड निम्न की गणना करता है:
प्रासंगिक कोड:
eval/metrics.pyeval/plots.pyeval/quality_judge.pyscripts/finalize_eval_run.pyवर्तमान मूल्यांकन कोड उच्च-थ्रूपुट बेसलाइन मूल्यांकन के लिए vLLM-समर्थित स्थानीय जनरेशन का समर्थन करता है। यह इसमें कार्यान्वित है:
eval/methods/vllm_backend.pyStealthRL M2 विधि एक चेकपॉइंट डिस्क्रिप्टर JSON के माध्यम से Tinker-समर्थित सैम्पलिंग का समर्थन करती है। यह पथ इसमें कार्यान्वित है:
eval/methods/stealthrl.pyपूर्ण-MAGE पाइपलाइन जानबूझकर चरणबद्ध है:
यह लंबे मल्टी-GPU रन को अधिक मजबूत और डीबग करने में आसान बनाता है।
eval/methods/ के अंतर्गत एक क्लास जोड़ेंBaseAttackMethod इंटरफ़ेस कार्यान्वित करेंeval/methods/__init__.py में विधि पंजीकृत करेंeval/runner.py द्वारा उपयोग किए जाने वाले डिटेक्टर रजिस्ट्री में पंजीकृत करेंयह रिपॉजिटरी एआई-टेक्स्ट डिटेक्टर मजबूती, प्रतिकूल मूल्यांकन और रक्षात्मक बेंचमार्किंग पर शोध के लिए जारी की गई है। यह धोखाधड़ी, साहित्यिक चोरी, या वैध सुरक्षा और अखंडता प्रणालियों से बचने का समर्थन करने के लिए नहीं है।
यदि आप इस कार्य पर आधारित कुछ निर्माण करते हैं, तो कृपया इसका उपयोग डिटेक्टर मजबूती, कैलिब्रेशन, स्थानांतरण मूल्यांकन और तैनाती सीमाओं के संबंध में पारदर्शिता में सुधार के लिए करें।
यदि आप इस रिपॉजिटरी का उपयोग करते हैं, तो कृपया पेपर को उद्धृत करें:
@article{ranganath2026stealthrl,
title={StealthRL: Reinforcement Learning Paraphrase Attacks for Multi-Detector Evasion of AI-Text Detectors},
author={Ranganath, Suraj and others},
journal={arXiv preprint arXiv:2602.08934},
year={2026}
}