
LLM-संचालित एजेंटिक समूह शिलिंग हमला ढांचा जो अनुकूली बहु-भूमिका रणनीतियों का उपयोग करके ब्लैक-बॉक्स सहयोगी-फ़िल्टरिंग सिफ़ारिश रैंकिंग में हेरफेर करता है और साथ ही पकड़ में आने से बचता है।
यह पेपर "An Efficient and Effective Agentic Group Shilling Attack on Recommender Systems" के लिए आधिकारिक कोड है। यह पेपर AGAS प्रस्तुत करता है, जो ब्लैक-बॉक्स कोलैबोरेटिव-फ़िल्टरिंग रिकमेंडर्स के विरुद्ध एक LLM-संचालित शिलिंग अटैक है। एक Coordinator कई राउंड के अनुक्रम में नकली-उपयोगकर्ता workers के एक पूल को ऑर्केस्ट्रेट करता है। प्रत्येक राउंड में, Coordinator आठ रणनीतियों में से एक चुनता है और प्रत्येक worker को एक भूमिका सौंपता है। इसके बाद Workers अपने स्वयं के ReAct-शैली तर्क लूप का उपयोग करके यह तय करते हैं कि किन आइटम्स को रेट करना है।
agent_attack_rs/
bash/ # Reviewer-friendly shell scripts (RQ1–RQ5)
prompts/ # Coordinator + per-role prompt templates
scripts/run_agas.py # Single entry point (--dataset --victim ...)
src/agas/
roles.py # Role enum {PR, SN, CA, IN} (paper symbols)
signals.py # WorkerSignals (τ, γ, φ) + EnvSignals (ρ, Δρ, η, ξ, a)
strategies.py # 8-strategy enum
agents/ # Coordinator + Worker policies
simulation/ # Episode runner (= AGAS algorithm outer loop)
llm/ # OpenAI / Ollama
recsys/ # Surrogate + 11-victim backends
data/ # Dataset loaders + preprocessing pipeline
tests/ # Pytest suite
AGAS चार वर्कर भूमिकाओं को तत्काल सक्रिय करता है (roles.py में पेपर प्रतीक):
| प्रतीक | पूरा नाम | यह क्या करता है |
|---|---|---|
PR | Profiler | प्लेटफ़ॉर्म की जाँच करने और ब्रिज पूल बनाने के लिए सुरक्षित फ़िलर-आइटम रेटिंग। |
SN | Sniper | पेलोड भूमिका; सीधा लक्ष्य पुश या ब्रिज-आइटम प्रमोशन। |
CA | Camouflageur | स्टील्थ भूमिका; सौम्य दिखने वाली गतिविधि से विश्वास पुनः स्थापित करता है। |
IN | Inactive | इस राउंड में कोई कार्रवाई नहीं (कूल-डाउन या क्वारंटीन)। |
प्रत्येक राउंड में Coordinator strategies.py से आठ रणनीतियों में से ठीक एक चुनता है
(method_strategies.tex देखें):
S1_VICTIM_PROBE)S2_BRIDGE_BUILDING, केवल ग्राफ़ शिकार)S3_WARM_UP)S4_FIRST_PUSH)S5_SILENT_SLOWDOWN)S6_PROFILE_CLEANUP)S7_SAFE_REPLACEMENT)S8_MAIN_ATTACK)Coordinator इन निर्णयों को दो सिग्नल समूहों (signals.py) से संचालित करता है:
τ_{t,w}, γ_{t,w}, φ_{t,w} — विश्वास, जोखिम, और एक
संरचनात्मक सत्यापनकर्ता। अद्यतन समीकरण method_coordinator.tex से
बिल्कुल मेल खाते हैं (eq:trust_update, eq:risk_update, eq:risk_decay,
eq:profile_validator)।ρ^{(t)}, Δρ^{(t)}, η_t, ξ_t = (q_t, s_t), a_t —
रैंक, रैंक-संचलन, स्वीकृति दर, दमन सिग्नल, अलर्ट फ़्लैग। संदेह स्कोर
q_t पाँच सामान्यीकृत पदों (d̂_t, δ̂_t, m̂_t, ŝ_t, g_t) का 0.2-भारित योग है
जो eq:round_suppression_terms और eq:round_suppression_score से लिया गया है। ┌─────────────────────────────────────────────────┐
t=0…T-1 ──► │ 1. Observe ρ^{(t)}, update memory m_t │
│ 2. Update τ, γ, φ, η, ξ, a │
│ 3. Coordinator picks Strategy ∈ {S1…S8} │
│ and assigns Role ∈ {PR, SN, CA, IN} per worker│
│ 4. Workers act (filler / bridge / target items) │
│ 5. Validate + accept actions → ΔR̃^{(t+1)} │
│ 6. Refit / query victim → ρ^{(t+1)} │
└─────────────────────────────────────────────────┘
│
▼
t* = argmin_t ρ^{(t)}, return R* = [R ; R̃^{(≤t*)}]
The outer loop is implemented in src/agas/simulation/episode.py and mirrors
algorithms/agas_end_to_end.tex.
| Component | Requirement | Tested with |
|---|---|---|
| Python | ≥ 3.10 | 3.13.5 |
| PyTorch | ≥ 2.1 (targets only) | 2.11.0+cu128 |
| CUDA | optional | 12.8 |
| NumPy | ≥ 1.24 | 2.4.2 |
| Pandas | ≥ 2.0 | 3.0.1 |
| SciPy | ≥ 1.10 | 1.17.0 |
| scikit-learn | ≥ 1.3 | 1.8.0 |
| openai SDK | ≥ 1.12 | 2.21.0 |
PyTorch और CUDA केवल डीप-लर्निंग विक्टिम मॉडल ([targets] extra) के लिए आवश्यक हैं। मुख्य AGAS लूप और नियम-आधारित / सरोगेट पथ बिना किसी GPU निर्भरता के CPU पर चलते हैं।
pip install -e .
# If you want to use the deep-learning victim models (LightGCN, NeuMF, …)
pip install -e '.[targets]'
आवश्यक environment variables:
| Variable | उद्देश्य | डिफ़ॉल्ट |
|---|---|---|
OPENAI_API_KEY | Coordinator / worker LLMs के लिए OpenAI Responses API key. | (unset → fallback) |
OPENAI_MODEL | OpenAI को पास किया गया model name. | gpt-5.1 |
यह पेपर छह सार्वजनिक CF benchmarks पर मूल्यांकन करता है (देखें experiment.tex):
| Short name | स्रोत | Users | Items | Interactions | डाउनलोड | raw files यहाँ रखें |
|---|---|---|---|---|---|---|
| ML-100K | MovieLens 100K | 943 | 1,682 | 100,000 | GroupLens | data/ml-100k/ |
| ML-1M | MovieLens 1M | 6,040 | 3,706 | 1,000,209 | GroupLens | data/ml-1m/ |
| Genome 2021 | MovieLens Tag Genome 2021 | 37,941 | 84,661 | 2,000,000 (capped) | GroupLens | data/genome2021/ |
| Netflix | Netflix Prize | 342,445 | 17,434 | 2,000,000 (capped) | Kaggle | data/netflix/ |
| Douban | Douban Movie | 28,057 | 49,176 | 8,085,679 | HKUST | data/douban/ |
| Amazon | Amazon Reviews 2018 | 998,653 | 30,964 | 2,000,000 (capped) | UCSD | data/amazon/ |