Демо: Physics Assistant
Полностью воспроизводимый end-to-end workflow, который демонстрирует NextStat как AI-оракул: чтение гистограмм из .root, построение HistFactory workspace, запуск скана аномалий, расчет discovery p-значений и верхних пределов, экспорт артефактов для построения графиков.
Что делает
- Читает .root-гистограммы через нативный ROOT-ридер NextStat
- Строит HistFactory workspace из наблюдаемых данных и шаблонов сигнала/фона
- Предлагает скан аномалий по массовым окнам
- Считает discovery p-значения (p₀, Z₀) и верхние пределы CLs
- Экспортирует JSON-артефакты для графиков и опциональные PNG-рендеры
Режимы транспорта
| Режим | Описание | Требования |
|---|---|---|
| Локально | Все инструменты в одном процессе через Python-привязки | Установлен wheel NextStat |
| Сервер | Статистические инструменты по HTTP, чтение ROOT остается локальным | Запущен nextstat-server |
| Docker | Контейнер агента + nextstat-server через docker compose | Требуется Docker |
Запуск демо
Локальный режим
# из корня репозитория:
PYTHONPATH=bindings/ns-py/python python demos/physics_assistant/run_demo.py \
--transport local \
--out-dir demos/physics_assistant/out/local \
--renderСерверный режим
# Сначала запустите сервер:
nextstat serve --port 3742
# Затем запустите демо:
export NEXTSTAT_SERVER_URL=http://127.0.0.1:3742
PYTHONPATH=bindings/ns-py/python python demos/physics_assistant/run_demo.py \
--transport server \
--out-dir demos/physics_assistant/out/serverDocker-режим
docker compose -f demos/physics_assistant/env/docker/docker-compose.yml up --buildВывод пишется в demos/physics_assistant/env/docker/out/ на хост-машине.
Артефакты вывода
| Файл | Описание |
|---|---|
demo_result.json | Основной bundle результатов (валидируется по схеме) |
tool_calls.json | Упорядоченный лог вызовов tools (requests + конверты tool_result.v1) |
nominal_workspace.json | Номинальный workspace модели |
best_anomaly_workspace.json | Лучшее окно из скана аномалий |
anomaly_scan_plot_data.json | Массивы для построения графиков (JSON) |
plots/*.png | Опциональные PNG (если включен --render) |
Заметка по дизайну: почему чтение всегда локальное
Inference server намеренно не экспонирует nextstat_read_root_histogram потому что файловый I/O это поверхность атаки. Демо полностью упражняет серверный режим, отправляя на сервер только workspace_jsonдля инференс-вызовов.
