
Открытая платформа и эталон для ИИ в операциях по кибербезопасности.
Бенчмарк для проверки передовых рассуждающих LLM как агентов SOC на сырых данных NetFlow.
socbench тестирует передовые рассуждающие модели в качестве агентов SOC: каждая модель выполняет ограниченный многошаговый цикл агента над детерминированным, предварительно проиндексированным корпусом NetFlow, используя инструменты только для чтения, ограниченные по персоне, фиксированные долларовые лимиты на расследование и строгий контракт на вывод в формате JSON. Четыре персоны (SOC Analyst, Threat Analyst, Adversary Hunter, Detection Engineer) и три провайдера (OpenAI, Anthropic, Google) используют одни и те же единицы оценки, скоринговые объективы и поверхность для абляции, так что основные числа и дельты tools_off / playbooks_off напрямую сравнимы.
Репозиторий ориентирован на локальное использование. Ноутбука, трёх ключей API и образца parquet, добавленного в репозиторий, достаточно, чтобы воспроизвести smoke-тест в рамках бюджета в 10 долларов.
Альфа. Полный конвейер работает от начала до конца. Охваченные этапы разработки:
socbench build-index) с детерминированными индексами по содержимомуREPRODUCE.mdВы можете запустить полный smoke-тест уже сегодня без ключей API с помощью mock-провайдера (см. Quickstart, шаг 3, или notebooks/quickstart.ipynb).
socbench распространяется как стандартный проект PEP 621 / hatchling. Любой из путей установки подходит.
uv (рекомендуется для разработки)curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/DeepTempo/socbench.git
cd socbench
uv venv --python 3.11
source .venv/bin/activate
uv pip install -e ".[dev,providers]"
pipgit clone https://github.com/DeepTempo/socbench.git
cd socbench
python3.11 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,providers]"
В любом случае, socbench --help теперь должен показывать список доступных подкоманд.
config/benchmark_config.yaml содержит безопасные настройки по умолчанию: smoke cost_budget_usd: 10, полный cost_budget_usd: 900, фиксированный cost_usd_cap_per_rendering: 0.50. Пути внутри него, указывающие на соседние файлы конфигурации (schema_path, pricing_path), разрешаются относительно каталога самого YAML, поэтому переименование или перемещение config/ не требует изменений в коде.
socbench build-index \
--config config/benchmark_config.yaml \
--dataset sample
Это нормализует parquet в соответствии с config/schema.json, глобально сортирует по ts_start с детерминированным разрешением конфликтов, присваивает стабильные flow_id, извлекает оценочные единицы pair_timeline / host_egress, вычисляет сводки и записывает в indexes/<dataset_hash>/.
Повторный запуск команды на тех же данных не даёт эффекта. Укажите --rebuild, чтобы принудительно перестроить.
socbench tools-smoke \
--dataset-hash <dataset_hash> \
--persona soc_analyst
Это вызывает каждый инструмент из списка разрешённых для персоны против построенного индекса и выводит сводку без вызовов модели.
# Free, deterministic, no API keys (the mock provider):
socbench run --dataset-hash <dataset_hash> --providers mock --personas all
# Real models (after `pip install -e ".[providers]"` + exporting API keys):
socbench run --dataset-hash <dataset_hash> --providers all --personas all
Выбор единиц по умолчанию осуществляет стратифицированную выборку, детерминированную в (dataset_hash, sample_seed, mode). Каждый рендеринг (unit × persona × provider) выполняет ограниченный многошаговый цикл агента; результаты сохраняются в runs/<run_id>/ с summary.json (сводки по скорингу, стоимости и кешу), eval_units_summary.jsonl, predictions_raw.jsonl, renderings.jsonl, tool_calls.jsonl и prompts_used/.
socbench run --dataset-hash <dataset_hash> --ablation tools_off --providers mock --personas all
socbench aggregate --dataset-hash <dataset_hash>
# → ablations/<dataset_hash>/<seed>/ablation_summary.json (tools_off → main deltas)
notebooks/quickstart.ipynb выполняет весь цикл (он синтезирует образец набора данных, поэтому ему не нужны прикреплённые данные) и строит графики F1 по персонам. notebooks/results_explorer.ipynb загружает любой runs/<run_id>/ и разрезает результаты по страту, персоне и провайдеру. Установите с помощью pip install -e ".[notebooks]".
Каждый интерфейс, предназначенный для развития, — это реестр или ключ YAML:
src/socbench/tools/catalog/<name>.py с подклассом Tool, зарегистрируйте его в src/socbench/tools/catalog/__init__.py, добавив в ALL_TOOLS, затем добавьте его имя в соответствующие списки tools: персоны в config/benchmark_config.yaml. tools_manifest_sha изменяется автоматически. Имя файла, имя в YAML и запись в матрице соответствуют 1:1 по замыслу.src/socbench/index.py и соответствующий Literal к EvalUnitType в src/socbench/models.py.Adapter в новом файле , зарегистрируйте его в фабрике в и добавьте запись в раздел в . Цены указываются в . Импорты SDK остаются ленивыми, чтобы зависимость была опциональной.Полная методология (оценочные единицы, матрица персона × инструменты, цикл агента, скоринг, модель стоимости, политика восстановления, семплирование, абляции, артефакты запуска) реализована в модульных файлах на уровне src/socbench/ (каждый файл содержит сфокусированную документацию модуля).
Apache-2.0. См. LICENSE.
| Поверхность | По умолчанию | Расположение |
|---|
| Параметры бенчмарка по умолчанию (семплирование, бюджеты агентов, провайдеры, матрица персона × инструменты) | benchmark_config.yaml | config/ |
| Каноническая схема NetFlow + псевдонимы нормализации | schema.json | config/ |
| Снимок цен провайдеров (USD за 1M токенов) | pricing.yaml | config/ |
| Ключи API провайдеров | переменные окружения OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY | shell env |
src/socbench/providers/<name>_adapter.pybuild_adapterproviders/base.pyproviders:config/benchmark_config.yamlconfig/pricing.yamlagent.personas: в config/benchmark_config.yaml с её бюджетом и белым списком tools:.score_unit в src/socbench/scoring.py и соответствующее поле в EvalUnitSummary в models.py.Ablation в prompts.py / agent.py и список тегов в aggregate.py.