
ما وراء الموجّه: كسر حماية نماذج LLM التي تستدعي الدوال عبر آثار إشراف مُحاكاة
يحتوي هذا المستودع على التنفيذ الرسمي لورقتنا البحثية:
Beyond the Prompt: Jailbreaking Function-Calling LLMs via Simulated Moderation Traces
إذا وجدت هذا المستودع مفيدًا لبحثك، فيرجى التفكير في الاستشهاد بورقتنا البحثية. نرحب بالأسئلة وتقارير الأخطاء ومشكلات إعادة الإنتاج عبر GitHub Issues.

.
├── install.sh # Installation script for setting up the environment and dependencies
├── main.py # Main evaluation entry point
├── demo.ipynb # Minimal working example
├── requirements.txt # Python dependencies
├── data/
│ ├── SafeBench-Tiny.txt # Default benchmark
│ └── JailbreakBench.txt # Optional benchmark
├── figures/
│ ├── pipline.jpg # Framework overview
│ ├── main_res1.jpg # Main result figure
│ └── main_res2.jpg # Main result figure
├── utils/
│ ├── config.example.json # Example API configuration
│ ├── eval_h_cot.py # External evaluation utility
│ ├── fake_tool_call_noharmful.json
│ ├── moderation_generator.py
│ └── moderation_validator.py
└── output/ # Checkpoints and evaluation results
نوفر نص برمجي للتثبيت لإعداد بيئة Python تلقائيًا وتثبيت جميع التبعيات المطلوبة.
chmod +x install.sh
./install.sh
بعد اكتمال التثبيت، فعّل البيئة الافتراضية:
source .venv/bin/activate
بدلاً من ذلك، يمكنك إنشاء البيئة يدويًا باستخدام Conda:
conda create -n SMT python=3.12
conda activate SMT
pip install -r requirements.txt
أنشئ utils/config.json من الملف النموذجي:
cp utils/config.example.json utils/config.json
يجب أن يتبع ملف التكوين الأدنى هذا التنسيق:
{
"llm_api": {
"base_url": "https://your-api-endpoint/v1",
"api_key": "YOUR_API_KEY"
},
"local": {
"base_url": "http://localhost:1234/v1",
"api_key": "YOUR_LOCAL_API_KEY"
}
}
يتوافق هذان المُدخلان مع:
llm_api: نقطة نهاية API الافتراضية المتوافقة مع OpenAI للنماذج التجارية.local: نقطة نهاية استدلال محلية متوافقة مع OpenAI، تُستخدم لنماذج محلية مختارة.افتح main.py وعدّل إعدادات التجربة قرب بداية الملف:
DATA_FILE = "SafeBench-Tiny.txt"
# DATA_FILE = "JailbreakBench.txt"
TARGET_MODELS = [
"gpt-4o-2024-11-20",
# "gpt-5.4-2026-03-05",
# "qwen3-max-2026-01-23",
# "gemini-3-flash-preview",
# "deepseek-v4-flash",
# "claude-sonnet-4-5-20250929",
]
استخدم معرّفات النماذج الصالحة لنقطة نهاية API المُهيأة في utils/config.json.
تُعرَّف المعاملات الافتراضية في main.py:
MAX_THREADS = 1
MAX_ROUNDS = 3
TURNS_NUM = 3
RESET = False
معانيها هي:
| المعامل | الوصف |
|---|---|
MAX_THREADS | الحد الأقصى للعمال المتزامنين لكل نموذج هدف |
MAX_ROUNDS | الحد الأقصى لجولات إعادة المحاولة الخارجية |
TURNS_NUM | الحد الأقصى لمحاولات التفاعل متعدد الأدوار لكل عينة |
RESET | ما إذا كان سيتم تجاهل نقطة تحقق موجودة قبل التقييم |
عيّن:
RESET = True
لبدء تشغيل جديد للنموذج المحدد. اتركه على False للاستئناف من نقطة تحقق موجودة.
python main.py
لكل نموذج هدف، يقوم السكربت تلقائيًا بما يلي:
data/.تُحفظ النتائج تحت:
output/attack_checkpoint_<dataset>_<model>.json
على سبيل المثال:
output/attack_checkpoint_SafeBench-Tiny_gpt-4o-2024-11-20.json
يُخزَّن كل عنصر من عناصر الاختبار المعياري مع حقول مشابهة لـ:
{
"target_question": {
"success": true,
"queries": 3,
"payload": "...",
"score": 60
}
}
يُبلّغ السكربت عن المقاييس التالية:
| المقياس | الوصف |
|---|---|
| ASR | معدل نجاح الهجوم: النسبة المئوية للعينات التي يبلغ تقييمها العتبة المُهيّأة |
| Avg.Q | متوسط عدد استعلامات API المستخدمة لكل عينة |
| Avg.Score | متوسط تقييم التقييم الخارجي عبر جميع العينات |
تعتمد تجارب SMT الرئيسية على API ولا تتطلب وحدة معالجة رسومات (GPU) محلية.
MAX_ROUNDS = 3 وTURNS_NUM = 3، تستخدم SMT ما لا يزيد عن 9 استعلامات للنموذج المستهدف لكل عينة معيارية قبل الإيقاف المبكر.بالنسبة للنماذج المنشورة محليًا، تعتمد متطلبات GPU والذاكرة الإضافية على النموذج المختار وواجهة الاستدلال الخلفية.
يتم تحديث واجهات API لنماذج LLM التجارية باستمرار. حتى عند استخدام الاسم المستعار نفسه للنموذج، قد تختلف النتائج بسبب تحديثات النموذج من جانب المزوّد، أو سلوك التوجيه، أو تغييرات سياسة الأمان، أو إعدادات فك التشفير، أو أعطال API العابرة.
لتحسين قابلية إعادة الإنتاج:
أُجريت جميع التجارب المذكورة في هذا المستودع في يونيو 2026. ولأن آثار التحقق المحاكاة تتضمن عناصر عشوائية، فإن مخرجات النماذج عشوائية بطبيعتها، كما أن قدرات النماذج وآليات الكشف الخارجية تواصل التطور، لذا قد تختلف سجلات التفاعل الدقيقة والنتائج المُعاد إنتاجها عن تلك المذكورة هنا حتى في ظل الإعداد العام نفسه.


يقارن تقييمنا بين SMT ونماذج أساسية تمثيلية لكسر الحماية (jailbreak) عبر عدة نماذج LLM تجارية تدعم استدعاء الدوال ومعيارين للسلامة.
يُرجى الرجوع إلى الورقة البحثية للاطلاع على الإعدادات التجريبية الكاملة وتطبيقات النماذج الأساسية والتفاصيل الإحصائية وتحليل الدفاعات.
يدرس هذا المشروع أنماط الفشل في أنظمة LLM المتوافقة مع معايير السلامة والتي تدعم استدعاء الدوال. ويهدف الكود والمواد المرتبطة به إلى دعم: