Agent: text / field layout -> dashboard in selected BI on top of DWH DM layer
Project description
Auto_BI
Агент «запрос → дашборд» поверх DM-слоя DWH. Принимает запрос текстом, drag&drop-раскладкой полей витрин или авто-обзором витрины (детерминированный курируемый дашборд без LLM), уточняет детали только при реальных расхождениях с данными, честно предупреждает о не предусмотренных витриной паттернах (engine-aware Feasibility Advisor — вплоть до «это запрос на новую витрину»), строит дашборд в выбранной BI и возвращает ссылку.
Скоуп v1 (RU-рынок): ClickHouse (DM) + Apache Superset (BI). v2: Greengage/Greenplum + Yandex DataLens (self-hosted OSS-стенд). Универсальность — в швах (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 и панелью наблюдаемости. Остаток — owner/стенд-зависимый (адаптеры Visiology/Luxms). История фаз и план — в docs/PLAN.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.
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 по каждому чарту → вердикт 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) + глобальный контекст |
Суть архитектуры в одном абзаце
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) — не статичное число. Superset-контрактный сьют (tests/test_superset_contract.py) + живой auto_bi build --auto дополнительно гоняются в CI отдельным job'ом (integration) на одноразовом docker-compose стенде ClickHouse+Superset; DataLens-сьют (tests/test_datalens_contract.py) остаётся Mac-only (self-hosted стенд, не докеризован). Job docker собирает образ на каждый PR (только сборка, ловит дрейф Dockerfile); на тег vX.Y.Z — .github/workflows/release.yml публикует образ в GHCR (ghcr.io/brownjuly2003-code/auto_bi) и создаёт GitHub Release из CHANGELOG.md.
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
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.3.1.tar.gz.
File metadata
- Download URL: autobi_agent-0.3.1.tar.gz
- Upload date:
- Size: 4.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a18f03203361d34a7e8435af1fba8e26c70201d0688208acb326ef7093f29ae
|
|
| MD5 |
9bb7ae0bf389d9ab56caab28ec5fec59
|
|
| BLAKE2b-256 |
9cdf5a02b979f8f223ac45a45cc800cedf074beba4663377f0e6b100eed9e26e
|
Provenance
The following attestation bundles were made for autobi_agent-0.3.1.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.3.1.tar.gz -
Subject digest:
5a18f03203361d34a7e8435af1fba8e26c70201d0688208acb326ef7093f29ae - Sigstore transparency entry: 2138373957
- Sigstore integration time:
-
Permalink:
brownjuly2003-code/Auto_BI@f4b72a273462b0646f1a342276eacb9fd50c570b -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/brownjuly2003-code
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f4b72a273462b0646f1a342276eacb9fd50c570b -
Trigger Event:
push
-
Statement type:
File details
Details for the file autobi_agent-0.3.1-py3-none-any.whl.
File metadata
- Download URL: autobi_agent-0.3.1-py3-none-any.whl
- Upload date:
- Size: 241.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b48718e14ae64c73782d071f57ab562f0fbc63b9ebda2b88d498e1f656eb2b5
|
|
| MD5 |
0335e6be508b323a7aaa4b15755182c1
|
|
| BLAKE2b-256 |
92af44da9d42f926059712b95eb129ebda734e0f0614996800921cb6de3e9f99
|
Provenance
The following attestation bundles were made for autobi_agent-0.3.1-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.3.1-py3-none-any.whl -
Subject digest:
6b48718e14ae64c73782d071f57ab562f0fbc63b9ebda2b88d498e1f656eb2b5 - Sigstore transparency entry: 2138373975
- Sigstore integration time:
-
Permalink:
brownjuly2003-code/Auto_BI@f4b72a273462b0646f1a342276eacb9fd50c570b -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/brownjuly2003-code
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f4b72a273462b0646f1a342276eacb9fd50c570b -
Trigger Event:
push
-
Statement type: