मी एक AI सुरक्षा स्कॅनर तयार केला — आणि मग माझ्या स्वतःच्या डिटेक्टरमध्ये एक बग शोधला

प्रॉम्प्ट इंजेक्शन (Prompt injection) हे LLM ॲप्लिकेशन्ससाठी एक प्रमुख सुरक्षा धोका आहे. तुम्ही मॉडेलला असा मजकूर देता जो त्याला त्याच्या मूळ सूचनांकडे दुर्लक्ष करण्यास सांगतो. कधीकधी, मॉडेल ते ऐकते.

हे तपासण्यासाठी मी AgentProbe तयार केले. ते jailbreaks आणि data extraction सारख्या ८ श्रेणींमध्ये ४९ अटॅक प्रॉम्प्ट्स पाठवते. मॉडेल किती वेळा अपयशी ठरते, याचा अहवाल ते देते.

खरा धडा स्कॅनरबद्दल नव्हता. तो माझ्या डिटेक्शन कोडमधील एका बगबद्दल होता.

कठीण भाग हल्ला करणे नाही. कठीण भाग डिटेक्शन (शोधणे) आहे.

मॉडेलने खरोखरच हल्ल्याचे पालन केले आहे की नाही हे तुम्हाला कसे कळेल? कीवर्ड मॅचिंग (Keyword matching) हा सोपा मार्ग आहे. तुम्ही "I cannot help" सारखे नकार देणारे शब्द किंवा "developer mode" सारखे पालनाचे शब्द शोधता.

परंतु मॉडेल्स "hedge-then-comply" (आधी नकार देणे आणि मग पालन करणे) पद्धत वापरतात. ते म्हणतात "I cannot help with that," पण तरीही ते प्रतिबंधित माहिती देतात. येथे कीवर्ड मॅचिंग अपयशी ठरते कारण नकार देणारा शब्द तिथे उपस्थित असतो.

हे सुधारण्यासाठी, मी "LLM-as-judge" सिस्टम वापरली. लक्ष्य मॉडेलने खरोखरच पालन केले आहे की नाही हे ठरवण्यासाठी मी तो संवाद एका अधिक शक्तिशाली मॉडेलकडे पाठवला. माझी योजना प्रथम स्वस्त कीवर्ड चेक वापरण्याची आणि जेव्हा कीवर्ड चेक अनिश्चित असेल तेव्हाच महागड्या जजचा वापर करण्याची होती.

मग मला माझा बग सापडला.

जेव्हा माझ्या कीवर्ड डिटेक्टरला "hedge-then-comply" पॅटर्न सापडला, तेव्हा त्याने १ चा कॉन्फिडन्स स्कोअर (confidence score) दिला. मात्र, माझा कोड कीवर्ड स्टेजवर तेव्हाच विश्वास ठेवत असे जेव्हा कॉन्फिडन्स २ किंवा त्यापेक्षा जास्त असेल.

याचा अर्थ असा की माझ्या "स्वस्त" डिटेक्टरने कधीच प्रत्यक्षात कोणताही निर्णय घेतला नाही. प्रत्येक केस महागड्या जजकडे पाठवली जात होती. माझे मोफत टूल ज्या गोष्टी हाताळू शकले असते, त्या प्रत्येक गोष्टीसाठी मी जजला पैसे मोजत होतो.

या चुकीने मला इतर LLMs चे मूल्यमापन करण्यासाठी LLMs वापरण्याबाबत तीन धडे दिले:

  • जज हा लक्ष्यापेक्षा (target) अधिक हुशार असला पाहिजे. जर जज आणि लक्ष्य एकाच आकाराचे असतील, तर त्यांच्यामध्ये सारख्याच त्रुटी (blind spots) असतील.
  • अचूकता खोटे बोलू शकते. जर बहुतेक मॉडेल्स नकार देत असतील, तर नेहमी "refused" म्हणणारा जज अचूक वाटू शकतो, पण तो काहीही शिकत नाही. नशिबाचा (luck) विचार करण्यासाठी Cohen's kappa सारखी मेट्रिक्स वापरा.
  • जज स्थिर असला पाहिजे. तोच टेस्ट पाच वेळा चालवून पहा. जर जजने आपला निर्णय बदलला, तर निकाल संदिग्ध असतो आणि त्यासाठी मानवी निरीक्षणाची गरज असते.

जर तुम्ही LLMs वापरून काही तयार करत असाल, तर या गोष्टी लक्षात ठेवा:

  • पालनाचे (compliance) कारण निर्माण करण्यापेक्षा ते शोधणे अधिक कठीण आहे.
  • अशा मॉडेल्सवर लक्ष ठेवा जे पहिल्या वाक्यात नकार देतात पण दुसऱ्या वाक्यात पालन करतात.
  • LLM जजवर आंधळेपणाने विश्वास ठेवू नका. त्याची विश्वासार्हता मोजा.
  • तुमचे बग शेअर करा. स्वतःची त्रुटी शोधल्यामुळे मला एका परिपूर्ण लाँचपेक्षा जास्त शिकायला मिळाले.

Source: https://dev.to/nar1frames/i-built-an-ai-security-scanner-then-found-a-bug-in-my-own-detector-140a

Optional learning community: https://t.me/GyaanSetuAi