Auto_BI
Агент «запрос → дашборд» поверх DM-слоя DWH. Принимает запрос текстом, drag&drop-раскладкой полей витрин или авто-обзором витрины (детерминированный курируемый дашборд без LLM), уточняет детали только при реальных расхождениях с данными, честно предупреждает о не предусмотренных витриной паттернах (engine-aware Feasibility Advisor — вплоть до «это запрос на новую витрину»), строит дашборд в выбранной BI и возвращает ссылку.
Скоуп v1 (RU-рынок, release-gated в CI): ClickHouse (DM) + Apache Superset (BI). v2 experimental: Greengage/Greenplum (offline advisor/golden в CI; live DWH — operator stand) + Yandex DataLens (unit compile offline; live contract Mac-only, не default release gate). Универсальность — в швах (IR, адаптеры), не в имплементации.
LLM: прямой Anthropic Messages API (по умолчанию — нужен только ANTHROPIC_API_KEY); локальный сервис GraceKelly — документированная опция (AUTO_BI_LLM_PROVIDER=gracekelly, см. USER_GUIDE §6).
Демо
Живое демо: https://juliome20-auto-bi-demo.hf.space — публичная песочница (Hugging Face Space, один контейнер ClickHouse + Superset + Auto_BI): выберите витрину, соберите авто-обзор и откройте готовый дашборд в Superset без логина. Работает детерминированный путь без LLM; полный текстовый цикл — на видео ниже. Данные синтетические, всё пересоздаётся при рестарте (холодный старт ~3 мин).
Живой цикл (сжаты только паузы ожидания LLM): запрос «средний чек по месяцам, Парето по магазинам, динамика количества» → агент уточняет неоднозначное «количество» (orders vs items) → превью спецификации с вердиктом Feasibility Advisor (CRITICAL: запрос сканирует 100% витрины в 20 млн строк — предложение сузить период) → сборка → готовый дашборд Superset на реальных данных ClickHouse: средний чек как производная метрика sum(revenue)/sum(orders) по месяцам, Парето — накопленная доля выручки по магазинам. Видео в лучшем качестве — docs/screenshots/demo.mp4.
| Веб-UI: запрос → спецификация + Feasibility Advisor | Собранный дашборд (Superset) |
|---|---|
Слева — естественно-языковой запрос, уточнения агента, превью спецификации (IR) и вердикты Feasibility Advisor (CRITICAL → заявка владельцу DM, WARN → правка спеки). Справа — собранный из той же спецификации дашборд Superset на реальных данных ClickHouse.
Статус
Phase 0–4 + бэклог адекватности дашбордов (B1–B4) закрыты. Работает end-to-end: текст/поля → spec → валидация → сборка дашборда. v1-стек (ClickHouse + Superset) и v2-стек (Greenplum/Greengage интроспекция + advisor; self-hosted DataLens-адаптер) live-проверены; web UI с двумя режимами ввода, итерациями, Feasibility Advisor, заявками владельцу DM и панелью наблюдаемости.
Актуальное состояние и residual roadmap — docs/CURRENT_STATE.md. История фаз — docs/PLAN.md. Полный env inventory (generated) — docs/ENV_REFERENCE.md.
Чем отличается
Зрелого бесплатного инструмента «диалог → целый дашборд поверх DWH с выбором BI» нет ни в России, ни глобально (обзор с проверкой первоисточников — docs/MARKET.md). Три отличия от существующих NL→chart-решений:
- Grounding по конкретному DM, а не свободный чат — уточнения только при реальных расхождениях запроса с витриной; однозначный запрос → ноль вопросов.
- Дашборд целиком из BI-агностичного IR (layout, фильтры, N чартов) — а не один чарт по готовому датасету (отличие от DataLens «Нейроаналитик»). Один spec → Superset и DataLens.
- Engine-aware Feasibility Advisor — детерминированно сверяет запрос с физикой витрины (ключи сортировки/партиции, EXPLAIN) и прямо говорит «такой дашборд витриной не предусмотрен, вот evidence и заявка владельцу DM». Этого нет ни у одного конкурента.
flowchart LR
Q["Запрос<br/>текст · поля"] --> G["GROUNDING<br/>по semantic model"]
G --> C{"уточнения?"}
C -->|да| G
C -->|нет| S["DashboardSpec<br/>IR · валидируется по модели"]
S --> SQL["SQL-guard<br/>sqlglot · EXPLAIN · LIMIT"]
S -.->|вердикты| ADV["Feasibility Advisor<br/>engine-aware"]
SQL --> A1["Superset adapter"]
SQL --> A2["DataLens adapter"]
A1 --> D[("Дашборд")]
A2 --> D
Как пользоваться
Установка, команды CLI, web UI, конфигурация — docs/USER_GUIDE.md. Подключение новой витрины DWH за ≤ 1 ч — docs/ONBOARDING_DWH.md.
Local-first — три ступени:
- Офлайн golden path — без DWH, BI, LLM и API-ключа:
uv run python scripts/demo_golden_path.py
-
HF Space — детерминированный auto-only, пользовательский ключ не нужен; текстовый режим там намеренно недоступен (см. «Демо» выше).
-
Полный локальный путь. Скопируйте
.env.exampleв.env(cp .env.example .env; PowerShell:Copy-Item .env.example .env). Задайте свойANTHROPIC_API_KEYилиAUTO_BI_LLM_PROVIDER=gracekellyиAUTO_BI_GRACEKELLY_URL. Для DWH/BI —AUTO_BI_CH_HOST,AUTO_BI_CH_PASSWORD,AUTO_BI_SUPERSET_URL,AUTO_BI_SUPERSET_PASSWORD(полный inventory — docs/ENV_REFERENCE.md).docker compose up -dподнимает только ClickHouse и Superset, не Auto_BI; агент локально:auto_bi serve→ http://127.0.0.1:8200.
pip install autobi-agent # или pip install -e . из корня репозитория
auto_bi introspect --output semantic/model.yaml # DWH -> черновик модели
auto_bi build "Выручка по магазинам за июнь 2026" # текст -> дашборд
auto_bi build --auto dm.sales_daily # витрина -> обзорный дашборд (без LLM)
auto_bi serve # web UI на http://127.0.0.1:8200
Хотите увидеть весь конвейер за минуту, без стенда и без LLM — на синтетической витрине из репозитория:
uv run python scripts/demo_golden_path.py
Скрипт прогоняет детерминированную часть end-to-end: семантическая модель → курируемый
обзорный дашборд → скомпилированные примеры SQL для KPI и разреза с JOIN → вердикт Feasibility Advisor
(включая dm_change_request — «витрина не предусматривает такой разрез, вот evidence»).
Живым остаётся только финальный BUILD (HTTP к Superset/DataLens + EXPLAIN на стенде).
Документация
| Файл | Что внутри |
|---|---|
| docs/USER_GUIDE.md | Руководство пользователя: установка, команды CLI, web UI, два режима ввода, advisor, наблюдаемость, конфигурация |
| docs/ONBOARDING_DWH.md | Подключение нового DWH за ≤ 1 ч: доступы, .env, интроспекция, обогащение, проверка (ClickHouse + Greenplum) |
| docs/ARCHITECTURE.md | Архитектура: скоуп, IR-first, семантическая модель с физическим слоем, агент, Feasibility Advisor, адаптеры, LLM-слой, решения D1–D10, риски |
| docs/DEPLOYMENT.md | Деплой в проде: workers=1, reverse-proxy/TLS, готовность, docker-compose, бэкап SQLite, ротация логов, чеклист секретов |
| CHANGELOG.md | История версий по Keep a Changelog — что вошло в каждый релиз |
| docs/PLAN.md | План: Phase 0–4, задачи, exit criteria; полезный продукт после Phase 2 (~2.5–3 мес FTE) |
| docs/MARKET.md | Рынок на 06.2026: RU (СУБД, BI, AI-фичи конкурентов, статус Superset) + глобальный контекст |
Ссылки вида internal/<дата>-<тема>.md в доках и докстрингах указывают на рабочие
runbook'и и дизайн-ноты, которые живут во внутреннем репозитории и не публикуются:
это разборы стендов, машин и ходов отладки. Всё, что имеет продуктовое значение,
перенесено в поддерживаемые доки из таблицы выше — ссылка оставлена как след
происхождения решения, а не как обязательное чтение.
Суть архитектуры в одном абзаце
LLM никогда не генерирует нативные форматы BI. Пайплайн: запрос (текст или раскладка полей) → grounding по семантической модели (model.yaml, включая физический слой движка) → уточнения при необходимости → DashboardSpec (BI-агностичный JSON, жёстко валидируется по модели) → SQL с проверкой (sqlglot/EXPLAIN/LIMIT) → детерминированный компилятор-адаптер строит дашборд через API выбранной BI. Параллельно детерминированный Feasibility Checker сверяет запрос с физикой витрины (ключи сортировки/партиции, размеры, EXPLAIN) — advisor прямо говорит, когда дашборд витриной не предусмотрен, и умеет оформить заявку владельцу DM. Один spec — N платформ.
Разработка
uv sync # окружение из uv.lock (вкл. dev-инструменты)
uv run ruff check . # линтер
uv run black --check auto_bi tests # формат
uv run --with duckdb pytest -q # тесты (integration-сьюты со стендом — deselected)
uv run --with duckdb --with pytest-cov pytest --cov=auto_bi --cov-report=term-missing # покрытие
uv run python scripts/verify_live_clickhouse.py # числа CH-путей на ЖИВОМ стенде (ratio/grain/yoy/compare-KPI/авто-обзор)
--with duckdb — эфемерная test-dep (проверяет numeric-корректность transform-SQL под postgres-семантикой окон; без неё те тесты importorskip). Те же шаги гоняет CI на push/PR (.github/workflows/ci.yml). Покрытие в бейдже выше генерируется самим CI на каждый push в main (.github/badges/coverage.json, из coverage report --format=total) — не статичное число.
Compatibility gates (plan_sol step 10): primary offline quality на Python 3.12; дополнительно job Lint & tests (Python latest) (3.13) и Windows package/CLI smoke. Dependency resolution matrix (locked / latest-compatible / lowest-direct) — step 6. Superset-контрактный сьют (tests/test_superset_contract.py) + живой auto_bi build --auto + browser E2E — job integration на docker-compose ClickHouse+Superset. Greenplum — offline advisor + golden replay в quality (live GP stand experimental). DataLens live contract (tests/test_datalens_contract.py) — Mac-only experimental, не в default CI. Матрица claims↔gates: tests/test_compatibility_matrix.py. Job docker собирает образ на каждый PR; на тег vX.Y.Z — .github/workflows/release.yml → GHCR + GitHub Release из CHANGELOG.md.
License
MIT. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file autobi_agent-0.5.0.tar.gz.
File metadata
- Download URL: autobi_agent-0.5.0.tar.gz
- Upload date:
- Size: 4.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd2d5583616580bfbc2a19afb03b12c7debbbd933ff9b7df01f8286d4a993ce0
|
|
| MD5 |
4750c8caf8879f6ea2546527b3528271
|
|
| BLAKE2b-256 |
1fe136659a8c86dc10abcfffad948be2e8e5e0f01e247f4a155a6694bd519dc3
|
Provenance
The following attestation bundles were made for autobi_agent-0.5.0.tar.gz:
Publisher:
release.yml on brownjuly2003-code/Auto_BI
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autobi_agent-0.5.0.tar.gz -
Subject digest:
cd2d5583616580bfbc2a19afb03b12c7debbbd933ff9b7df01f8286d4a993ce0 - Sigstore transparency entry: 2282660098
- Sigstore integration time:
-
Permalink:
brownjuly2003-code/Auto_BI@e78076d2d00ddc1748bf6e22f13cf7cb93fc6515 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/brownjuly2003-code
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e78076d2d00ddc1748bf6e22f13cf7cb93fc6515 -
Trigger Event:
push
-
Statement type:
File details
Details for the file autobi_agent-0.5.0-py3-none-any.whl.
File metadata
- Download URL: autobi_agent-0.5.0-py3-none-any.whl
- Upload date:
- Size: 338.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c18ff4d045e7cd5d7c4dd0e9351c95a5000684cf472cd65c5c142d30b2403f52
|
|
| MD5 |
6866911808effb9d06ac14505c30c261
|
|
| BLAKE2b-256 |
6c889cb5640d77dd86386f6dff003ca668c7f4812fb8bfae691035f45874259a
|
Provenance
The following attestation bundles were made for autobi_agent-0.5.0-py3-none-any.whl:
Publisher:
release.yml on brownjuly2003-code/Auto_BI
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autobi_agent-0.5.0-py3-none-any.whl -
Subject digest:
c18ff4d045e7cd5d7c4dd0e9351c95a5000684cf472cd65c5c142d30b2403f52 - Sigstore transparency entry: 2282660311
- Sigstore integration time:
-
Permalink:
brownjuly2003-code/Auto_BI@e78076d2d00ddc1748bf6e22f13cf7cb93fc6515 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/brownjuly2003-code
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e78076d2d00ddc1748bf6e22f13cf7cb93fc6515 -
Trigger Event:
push
-
Statement type: