
إسناد السياق السببي ودفاع LLM عبر مراقب قائم على القواعد ضد حقن التعليمات غير المباشر في وكلاء LLM، مع تحقيق أداء في المستوى الأحدث على AgentDyn ومعايير القياس الأخرى.
AgentWatcher هو دفاع قائم على الكشف ضد حقن التعليمات غير المباشر في وكلاء نماذج اللغة الكبيرة (LLM). يقوم أولاً بتشغيل إسناد السياق السببي على السياقات غير الموثوقة للعثور على السياقات الأكثر تأثيراً، ثم يطبّق نموذج مراقب LLM الذي يصنّف تلك السياقات وفق قواعد صريحة وقابلة للتخصيص. مقارنةً بالكواشف ذات الصندوق الأسود بالكامل، فإن هذه الخطوة أسهل في التفسير: حيث يُظهر الإسناد أين تركّز النموذج، ويعتمد حكم نموذج المراقب على استدلال قائم على القواعد. مثال على مخرجات نموذج المراقب موضّح أدناه:
يمكن لهذا الكشف القائم على القواعد الاستفادة من قدرة الاستدلال لنموذج المراقب لتحقيق مفاضلة أفضل بين الفائدة والمتانة. يحقق AgentWatcher أداءً في طليعة الأداء على معايير وكلاء LLM مثل AgentDyn:
هذا المستودع مخصص لإعادة إنتاج التجارب الرئيسية من الورقة البحثية.
pip install -r requirements.txt
huggingface-cli login # if needed for gated models
نموذج المراقب المدرب هو محوّل LoRA (PEFT). بشكل افتراضي، يقوم main.py تلقائياً بتحميل نقطة التحقق من Hub SecureLLMSys/AgentWatcher-Qwen3-4B-Instruct-2507 على SecureLLMSys (يمكن تجاوز ذلك باستخدام --monitor_llm).
جميع المشغِّلات موجودة في scripts/. وهي تفترض أنك تعمل من جذر مستودع AgentWatcher (أو الانتقال إليه أولاً عبر cd). يرجى أولاً تعيين مفتاح OpenAI باستخدام export OPENAI_API_KEY=<YOUR_KEY>. عدّل مشغِّلات Python (all_datasets، all_defenses، gpus، name، النماذج، إلخ) لتتناسب مع مسار التجارب قبل التشغيل.
main.py)مهام مجمّعة (وحدات GPU محلية أو Slurm):
python scripts/run_long_context.py
هذا يشغّل main.py مع vLLM (--use_vllm) ويكتب السجلات تحت logs/main_logs/<name>/.... في حال عدم وجود GPU محلي، يقوم بإرسال مهام Slurm عبر scripts/main.sh.
تشغيل لمرة واحدة بدون المشغِّل:
python main.py \
--dataset lcc_long \
--attack combined \
--defense agentwatcher \
--backend_llm Qwen/Qwen3-4B-Instruct-2507 \
--monitor_llm SecureLLMSys/AgentWatcher-Qwen3-4B-Instruct-2507 \
--use_vllm \
--name my_run
تجاوزات اختيارية للإسناد على main.py: --w_s، --w_l، --w_r، --K، --attribution_model.
لتشغيل AgentDojo/AgentDyn، يرجى أولاً إعداد البيئة باتباع PIArena (https://github.com/sleeepeer/PIArena):
cd agents/agentdojo && pip install -e . && cd ../..
ثم قم بتشغيل:
python scripts/run_agentdojo.py
هذا يستدعي main_agentdojo.py ويكتب السجلات تحت logs/agentdojo_logs/.... في حال عدم وجود GPU محلي، يستخدم scripts/main_agentdojo.sh لـ Slurm. لتشغيل يدوي واحد يمكنك استدعاء python main_agentdojo.py --model ... --defense agentwatcher --monitor_llm ... من جذر المستودع؛ اضبط PIARENA_DEFENSE / PIARENA_MONITOR_LLM إذا كان الغلاف الخاص بك يتوقعها. يستخدم الدفاع agentwatcher فئة PIMonitorLLMDefenseAdapter.
./scripts/run_agentdyn.sh
اختياري: ./scripts/run_agentdyn.sh --model gpt-4o-2024-08-06 لتشغيل agentwatcher مع gpt-4o كنموذج LLM أساسي. يقوم السكربت بتفعيل بيئة conda الخاصة بـ agentdojo، ويشغّل من agents/agentdyn/src. نوصي باستخدام tmux لمنع انقطاع التشغيل.
python scripts/run_injecagent.py
هذا يشغّل main_injecagent.py ويُسجّل تحت logs/main_logs/.... نقطة دخول Slurm: scripts/main_injecagent.sh.
استدعاء مباشر بدون المشغِّل:
python main_injecagent.py \
--model meta-llama/Llama-3.1-8B-Instruct \
--defense agentwatcher \
--monitor_llm SecureLLMSys/AgentWatcher-Qwen3-4B-Instruct-2507 \
--name my_injecagent_run
إذا استخدمت هذا الكود، يرجى الاستشهاد بورقة AgentWatcher البحثية (عند توفّرها).