
إطار عمل Defender لأمن وكلاء LLM يقوم بتجميع عقود المهام، والتحقق من بيانات القدرات، وفحص التأثيرات عبر فحوصات إثبات PLANT/WRAP مقابل حالات هجوم معيارية.
كود مصاحب لتقديم ورقة بحثية مجهولة الهوية. يفصل المستودع بين مدافع APEX، وتطبيع بيانات المعايير، وبيانات القدرات الموثوقة، وتكاملات طرق المقارنة بحيث يمكن فحص كل طبقة بشكل مستقل.
python -m venv .venv
source .venv/bin/activate
pip install -e '.[test]'
export PYTHONPATH="$PWD/src:$PWD"
تقرأ المكونات المعتمدة على النماذج OPENAI_API_KEY و
OPENAI_BASE_URL الاختياري من البيئة. انسخ .env.example كمرجع فقط؛
لا يقرأ الكود ملفات بيانات الاعتماد المحلية.
| المسار | المسؤولية |
|---|---|
src/apex/defender/ | عقود مهام APEX، والارتباطات المكتوبة، والإيصالات، وفحوصات الإثبات، وPLANT، وWRAP، ومعالجة الاستمرارية |
src/apex/core/ | البروتوكول المشترك، وأنواع النتائج، والتجميع، وحدود النموذج المحايدة تجاه المزود |
benchmark/adapter/ | تحويل للقراءة فقط لإصدارات المعايير إلى واجهة BenchmarkCase واحدة |
benchmark/registry/ | تسجيل القدرات الموثوقة وبيانات خاصة بكل معيار |
baseline/<name>/ | تنفيذ واحد أو تكامل وقت تشغيل لكل طريقة مقارنة |
tests/ | ثوابت المستودع وفحوصات الوحدات السريعة |
راجع STRUCTURE.md لتدفق المكونات ونقاط التوسعة.
توجد واصفات حالات مضغوطة ومجمّدة لجميع المعايير الستة تحت
benchmark/data/. لا يتم تضمين المستودعات المصدرية الكاملة وبيئات التشغيل المعزولة.
تمرير None يحدد البيانات المعبأة؛ لا يزال بإمكان data_root الصريح
تجاوزها.
from benchmark.adapter import adapter_for
adapter = adapter_for("scr", None)
attack_cases = list(adapter.cases("attack"))
يمتلك المحوّل معرّفات الحالات، وتسميات التقسيم، وتسميات المجموعة، والأهلية، والحمولة المقدمة إلى وقت تشغيل المعيار. لا يغيّر محتوى المعيار ولا يسجّل صلاحية الأداة.
from benchmark.registry import module_for
registry = module_for("mcptox")
environment_plan = registry.load("12306-mcp")
يتم إبقاء بيانات القدرات منفصلة عن محوّلات مجموعات البيانات لأن نص المعيار مدخل حلقة غير موثوق، بينما تصف البيانات حدود التنفيذ المملوكة للمشغّل المتاحة قبل الحلقة.
كل benchmark/registry/data/<benchmark>/manifest.json هو قطعة أثرية نهائية للسجل
تستخدم apex-benchmark-registry-v2. تخزّن الحزمة capability_units منزوعة التكرار،
وبيئات قابلة لإعادة الاستخدام، وارتباطات حالات صريحة. وبالتالي فإن معيارًا
يحتوي على مئات الحالات لا يكرر بيانات أداة متطابقة
مئات المرات. تحتفظ كل وحدة بالمخطط الدقيق للمدخلات/المخرجات، وeffect،
وobservation، وeffect_return، ودور الإيصال، والتعليقات المكتوبة. تسجّل كل
بيئة بشكل منفصل المصادر، والمهارات، وagent_visible_surface.
يتم الاحتفاظ بمدخلات المصدر المدققة الدقيقة من تنفيذ التجربة
تحت benchmark/registry/source/. تقوم خطوة البناء بتطبيع وإزالة تكرار
تلك التسجيلات الموجودة؛ ولا تستنتج دلالات قدرات جديدة من
مطالبات المعيار. أعد توليد جميع القطع الأثرية النهائية باستخدام:
pip install -e '.[registry]'
python scripts/build_registry_manifests.py
python scripts/audit_registry_coverage.py
لتحديث واصفات الحالات المعبأة من نسخ المصدر المحلية، شغّل:
python scripts/import_benchmark_data.py \
--research-root <research-checkout> \
--scr-root <SCR_Bench-checkout>
يتحقق مستورد SCR من الالتزام المثبّت قبل اشتقاق فهرس تعرض الحالات/المهارات المضغوط الخاص به.
TaskContractor بتجميع طلب المستخدم الموثوق إلى عقد مهمة.تظل الفحوصات الحتمية مستقلة عن النموذج الهدف. تقدم الأدوار المعتمدة على النماذج مرشحين مكتوبين يجب أن يجتازوا نفس حدود التحقق.
يعرّف baseline/registry.py طرق المقارنة الـ 13. لكل طريقة
مجلد مخصص يحمل اسم الطريقة ونقطة دخول implementation.py.
يتم استيراد التبعيات التي لها وقت تشغيل خاص بها بشكل كسول بحيث يمكن اختبار
نواة APEX ومحوّلات البيانات دون تثبيت جميع بيئات المعايير.
python -m compileall -q src benchmark baseline tests
pytest
قبل الإصدار، شغّل أيضًا فحوصات إخفاء الهوية في ANONYMITY.md. لا ينبغي إضافة أي بيانات اعتماد، أو ملفات نتائج، أو مسارات خاصة بالجهاز، أو مراجع Git بعيدة، أو بيانات وصفية للمؤلف إلى التقديم.