هذه هي قاعدة التعليمات البرمجية لـ imprompter
. وهو يوفر مكونات أساسية لإعادة إنتاج واختبار الهجوم المقدم في الورقة. يمكنك إنشاء هجومك الخاص فوقه أيضًا.
تسجيل رقمي للشاشة يوضح كيف يمكن للمهاجم استخراج معلومات تحديد الهوية الشخصية (PII) الخاصة بالمستخدم في منتج LLM في العالم الحقيقي (Mistral LeChat) من خلال موجه الخصومة الخاص بنا:
يمكن العثور على المزيد من عروض الفيديو على موقعنا. وفي الوقت نفسه، شكرًا جزيلًا لمات بورجيس من WIRED وSimon Willison لكتابة قصص رائعة (WIRED، Simon's Blog) تغطي هذا المشروع!
إعداد بيئة بايثون مع pip install .
أو pdm install
(PDM). نوصي باستخدام البيئة الافتراضية (مثل conda
مع pdm venv
).
بالنسبة إلى GLM4-9b
و Mistral-Nemo-12B
يلزم وجود وحدة معالجة رسومات VRAM بسعة 48 جيجابايت. بالنسبة إلى Llama3.1-70b
يلزم وجود 3x 80 جيجابايت من VRAM.
هناك ملفان للتكوين يحتاجان إلى اهتمام محتمل قبل تشغيل الخوارزمية
يحدد ./configs/model_path_config.json
مسار نموذج Huggingface على نظامك. ستحتاج على الأرجح إلى تعديل هذا وفقًا لذلك.
يقوم ./configs/device_map_config.json
بتكوين تعيين الطبقة لتحميل النماذج على وحدات معالجة الرسومات المتعددة. نعرض حالة التكوين الخاص بنا لتحميل LLama-3.1-70B على وحدات معالجة الرسومات 3x Nvidia A100 80G. قد تحتاج إلى ضبط هذا وفقًا لبيئاتك الحسابية.
اتبع أمثلة البرامج النصية للتنفيذ، على سبيل المثال ./scripts/T*.sh
. يمكن العثور على شرح كل حجة في القسم 4 من ورقتنا.
سيقوم برنامج التحسين بإنشاء نتائج في ملفات .pkl
وسجلات في المجلد ./results
. يقوم ملف المخلل بتحديث كل خطوة أثناء التنفيذ ويخزن دائمًا أفضل 100 مطالبة عدائية (بأقل خسارة). تم تصميمه على شكل كومة دقيقة، حيث يكون الجزء العلوي منه هو الموجه بأقل خسارة. كل عنصر من عناصر الكومة عبارة عن مجموعة من (<loss>, <adversarial prompt in string>, <optimization iteration>, <adversarial prompt in tokens>)
. يمكنك دائمًا إعادة التشغيل من ملف اختيار موجود عن طريق إضافة وسيطات --start_from_file <path_to_pickle>
إلى نص التنفيذ الأصلي الخاص به.
يتم التقييم من خلال evaluation.ipynb
. اتبع التعليمات التفصيلية هناك للأجيال مقابل اختبار مجموعة البيانات، وحساب المقاييس، وما إلى ذلك.
إحدى الحالات الخاصة هي مقاييس تحديد الهوية الشخصية (PII) قبل/استدعاء. ويتم حسابها بشكل مستقل باستخدام pii_metric.py
. لاحظ أن --verbose
يوفر تفاصيل PII الكاملة لكل إدخال محادثة لتصحيح الأخطاء ويجب إضافة --web
عند الحصول على النتائج من منتجات حقيقية على الويب.
مثال للاستخدام (نتيجة غير ويب، أي اختبار محلي):
python pii_metric.py --data_path datasets/testing/pii_conversations_rest25_gt.json --pred_path evaluations/local_evaluations/T11.json
مثال للاستخدام (نتيجة الويب، أي اختبار المنتج الحقيقي):
python pii_metric.py --data_path datasets/testing/pii_conversations_rest25_gt.json --pred_path evaluations/product_evaluations/N6_lechat.json --web --verbose
نحن نستخدم السيلينيوم لأتمتة عملية الاختبار على المنتجات الحقيقية (Mistral LeChat وChatGLM). نحن نقدم الكود في دليل browser_automation
. لاحظ أننا اختبرنا هذا فقط على بيئة سطح المكتب التي تعمل بنظامي التشغيل Windows 10 و11. ومن المفترض أن يعمل أيضًا على Linux/MacOS ولكنه غير مضمون. قد تحتاج إلى بعض التعديلات الصغيرة.
مثال للاستخدام: python browser_automation/main.py --target chatglm --browser chrome --output_dir test --dataset datasets/pii_conversations_rest25_gt.json --prompt_pkl results/T12.pkl --prompt_idx 1
--target
يحدد المنتج، ونحن الآن ندعم خيارين chatglm
و mistral
.
--browser
يحدد المتصفح الذي ستستخدمه، ويجب عليك إما استخدام chrome
أو edge
.
--dataset
يشير إلى مجموعة بيانات المحادثة للاختبار بها
--prompt_pkl
يشير إلى ملف pkl لقراءة المطالبة منه ويحدد --prompt_idx
الفهرس المرتب للموجه المراد استخدامه من pkl. وبدلاً من ذلك، يمكن تحديد الموجه في main.py
مباشرةً وعدم توفير هذين الخيارين.
نحن نقدم جميع البرامج النصية ( ./scripts
) ومجموعات البيانات ( ./datasets
) للحصول على المطالبات (T1-T12) التي نقدمها في الورقة. علاوة على ذلك، فإننا نوفر أيضًا ملف نتائج pkl ( ./results
) لكل موجه طالما أننا لا نزال نحتفظ بنسخة منه ونتيجة التقييم الخاصة بهم ( ./evaluations
) التي تم الحصول عليها من خلال evaluation.ipynb
. لاحظ أنه بالنسبة لهجوم استخراج معلومات تحديد الهوية الشخصية (PII)، تحتوي مجموعات بيانات التدريب والاختبار على معلومات تحديد الهوية الشخصية (PII) في العالم الحقيقي. على الرغم من أنه تم الحصول عليها من WildChat Dataset العامة، فقد قررنا عدم نشرها بشكل مباشر لأسباب تتعلق بالخصوصية. نحن نقدم مجموعة فرعية إدخال واحدة من مجموعات البيانات هذه على ./datasets/testing/pii_conversations_rest25_gt_example.json
للرجوع إليها. يرجى الاتصال بنا لطلب النسخة الكاملة من مجموعتي البيانات هاتين.
لقد بدأنا الإفصاح لفريق Mistral وChatGLM في 9 سبتمبر 2024 و18 سبتمبر 2024 على التوالي. استجاب أعضاء فريق ميسترال الأمني على الفور واعترفوا بالثغرة الأمنية باعتبارها مشكلة متوسطة الخطورة . لقد قاموا بإصلاح عملية استخراج البيانات عن طريق تعطيل عرض تخفيض السعر للصور الخارجية في 13 سبتمبر 2024 (ابحث عن الإقرار في سجل تغييرات ميسترال). لقد أكدنا أن الإصلاح يعمل. رد فريق ChatGLM علينا في 18 أكتوبر 2024 بعد محاولات اتصال متعددة عبر قنوات مختلفة وذكروا أنهم بدأوا العمل عليها.
يرجى النظر في الاستشهاد بمقالتنا إذا وجدت هذا العمل ذا قيمة.
@misc{fu2024impromptertrickingllmagents، title={المرتجل: خداع وكلاء LLM لاستخدام أداة غير مناسبة}، المؤلف={شياوهان فو وشوهينج لي وزيهان وانج ويهاو ليو وراجيش ك.جوبتا وتايلور بيرج-كيركباتريك وإيرلانس فرنانديز}، العام={2024}, طبعة = {2410.14923}، أرشيفبريفيكس = {arXiv}، الفئة الأساسية = {cs.CR}، URL={https://arxiv.org/abs/2410.14923}, }