
Code, abgeleitete Daten und Ergebnisse für: Bewertung von Baseline-Detektoren für gekaperte LLM-Agenten unter seltenen Angriffen und Verteilungsverschiebung
Code, abgeleitete Daten, Ergebnisdateien und jeder Monitor-Aufruf für das Paper von Mahmoud Abbasi (Universität Salamanca), Juan M. Núñez V. (AIR Institute, Salamanca) und Amin Shahraki (Universität Oslo).
Das Paper evaluiert Detektoren, die gekaperte LLM-Agenten anhand ihrer Tool-Call-Traces erkennen: logistische Regression auf verhaltensbasierten und kombinierten Merkmalen (LR-B, LR-C), ein GRU-Sequenzmodell, einen Transformer über eingefrorene Step-Embeddings (SE), eine TF-IDF-Inhaltsreferenz und den veröffentlichten AlignmentCheck-Action-Monitor mit zwei Backbones (MON-L, Llama 3.3 70B w4a16; MON-A, Claude Sonnet 5.5). Die Evaluation läuft bei kontrollierter Angriffsprävalenz, unter abgestufter Tool-Abdeckung und unter Welt-, Aufgaben-, Domänen- und Cross-Benchmark-Verschiebungen auf AgentDrift und AgentDojo.
EXTENDED_REPORT.pdf ist der erweiterte Bericht, der im Paper zitiert wird. Er ist die Langfassung dieser Arbeit (38 Seiten, Haupttext
und Supplement), verfasst bevor der dritte Autor hinzukam, und enthält jede im Paper zusammengefasste Analyse, jeden
Analyseplan mit seinen Abweichungen sowie alle ergänzenden Tabellen.
| Pfad | Inhalt |
|---|---|
EXTENDED_REPORT.pdf | Der erweiterte Bericht (siehe oben) |
featurise.py, evalkit.py, gru_detector.py, baseline_drift.py | Gemeinsame Module: Merkmale, Metriken und Bootstrap, das GRU, die Markov- und Isolation-Forest-Referenzen |
agentdojo_extract.py | Extrahiert AgentDojo-Traces mit positionsbasierter Paarung von Tool-Aufrufen und Beobachtungen |
agentdojo_traces.jsonl, agentdojo_failed.jsonl | Extrahierte AgentDojo-Traces (Grundgesamtheit P0, 392 benigne und 2.294 kompromittierte) und die 4.987 erfolglosen Angriffe |
rerun_r1r3.py, ablation.py, world_disjoint_r1.py, r4_control.py, gru_ladder.py, gru_r3_diagnostic.py, pre_ablation_audit.py | Experiment-Skripte aus der ersten Version, erneut ausgeführt auf der korrigierten Extraktion, mit ihren Ergebnisdateien (*.json) |
R4_CONTROL.md, PRE_ABLATION_DESIGN.md, GRU_PREREGISTRATION.md, REVISION_ANALYSIS_PLAN.md | Die vier internen Analysepläne der ersten Studien |
SENCODER_PREREGISTRATION.md, revision/sencoder_run/SENCODER_PREREGISTRATION.amendment*.md, SENCODER_RESULTS.md | Plan, Änderungen und Ergebnisse der SE-Studie |
MONITOR_PREREGISTRATION.md, revision/monitor_run/MONITOR_PREREGISTRATION.*.md | Plan der Monitor-Studie, ihre erste Version und die Änderungen 1 bis 4 |
revision/ | Erzeuger der Vorhersage-Caches, die Analyseströme, ihre Ergebnisdateien und Zusammenfassungen, DEVIATIONS.md, RESULTS_SUMMARY.md, PLAN_MANIFEST.txt (ein zeitgestempeltes Protokoll mit dem SHA-256 jedes Plans und Ergebnisses) und der Reproduzierbarkeitsleitfaden REPRODUCIBILITY.md |
revision/sencoder_*.py, revision/sencoder_results.json, revision/sencoder_summary.md, revision/sencoder_run/ | SE: Einbettungs-, Trainings- und Analyseskipte, Ergebnisse, Cluster-Logs und Manifeste |
revision/monitor_render.py, monitor_score_vllm.py, monitor_score_api.py, monitor_detector.py, monitor_tables.py | Monitor-Studie: ein AlignmentCheck-Aufruf pro Agent-Schritt, Bewertung mit vLLM (MON-L) und mit der Batch-Schnittstelle des Anbieters (MON-A), die eingefrorene Analyse und ihre Tabellen |
revision/monitor_results.json, revision/monitor_summary.md | Ergebnisse der eingefrorenen Monitor-Analyse |
revision/monitor_run/ | Jeder Monitor-Aufruf und jede rohe Monitor-Ausgabe mit ihrer Bewertung (siehe revision/monitor_run/README.md) |
revision/cache/ | Validierungs- und Zusammenfassungsdateien der Vorhersage-Caches. Die zwischengespeicherten Vorhersagen und Einbettungen selbst (etwa 800 MB) sind nicht enthalten und werden von den Skripten neu erzeugt |
paper/ | Skripte, die jede Tabelle aus den Ergebnisdateien erzeugen, mit ihren Ausgaben: tables/ (erste Studien), tables_sencoder/ (ergänzt SE) und tables_monitor/ (ergänzt den Monitor; dies sind die Tabellen des Papers und des erweiterten Berichts) |
paper_v06/make_figures_v06.py, paper_v06/fig_v06_* | Die Abbildungen des Papers |
MANUSCRIPT_SOURCE.*.md, SUPPLEMENT_SOURCE.*.md | Quellen des erweiterten Berichts, in die paper/build_sencoder.py und paper/build_monitor.py die erzeugten Tabellen einfügen |
archive_v0.3/ | Ergebnisse und die frühere AgentDojo-Extraktion der ersten Version, aufbewahrt für die Vergleiche im erweiterten Bericht |
tests/ | Unit-Test der AgentDojo-Extraktion |
THIRD_PARTY/ | Lizenzen von AgentDojo und des eingebundenen AlignmentCheck-Scanners (LlamaFirewall) |
Die Detektor-Ergebnisse wurden mit CPython 3.10.4 auf einer CPU berechnet. SE lief auf einem Knoten eines Slurm-Clusters und MON-L
auf einer NVIDIA H100 80GB HBM3 mit vLLM 0.29.0 (Versionen in revision/monitor_run/mon_l/env.json).
pip install -r revision/requirements-lock.txt --extra-index-url https://download.pytorch.org/whl/cpu
Skripte, die die ursprünglichen Benchmarks lesen, erwarten zwei Umgebungsvariablen, die auf lokale Klone verweisen.
git clone https://github.com/Asif-0209/AgentDrift && git -C AgentDrift checkout 014a514f
git clone https://github.com/ethz-spylab/agentdojo && git -C agentdojo checkout 089ed468
export AGENTDRIFT=$PWD/AgentDrift
export AGENTDOJO=$PWD/agentdojo
Die Tabellen und Abbildungen werden aus den Ergebnisdateien in diesem Repository neu erzeugt. build_monitor.py importiert das
Monitor-Analysemodul, das beim Import AGENTDRIFT liest, daher muss diese Variable gesetzt sein.
cd paper
python gen_tables_v04.py # paper/tables/
python build_sencoder.py # paper/tables_sencoder/
python build_monitor.py # paper/tables_monitor/, the tables of the paper
cd ../paper_v06
python make_figures_v06.py # paper_v06/fig_v06_*.pdf and .png
Die beiden Build-Skripte setzen außerdem das LaTeX des erweiterten Berichts aus MANUSCRIPT_SOURCE.*.md und
SUPPLEMENT_SOURCE.*.md zusammen.
Das erneute Ausführen der Experimente aus den Benchmarks folgt revision/REPRODUCIBILITY.md für die Detektoren, dem SE-Plan
mit revision/sencoder_run/ für SE und dem Monitor-Plan mit revision/monitor_run/README.md für den Monitor.
<repo>,
$AGENTDRIFT, $AGENTDOJO oder <local> ersetzt. Kein numerisches Ergebnis wurde geändert. SHA-256-Werte in PLAN_MANIFEST.txt und
repro_checks.json beziehen sich auf die Dateien, wie sie auf der Analysemaschine vorlagen, sodass sie nicht mit den Dateien übereinstimmen,
in denen ein Pfad ersetzt wurde. revision/offline_driver.sh wurde ebenfalls portabel gemacht. Kein Python-Skript wurde geändert, daher
behalten einige Skripte einen lokalen Standardpfad bei, den die Umgebungsvariablen überschreiben.*.jsonl.gz) mit unverändertem Inhalt,
sodass die SHA-256-Werte in den Aufruf-Manifesten für die dekomprimierten Dateien gelten.