Skip to content

Latest commit

 

History

448 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AuditLens — платформа исследований для внутреннего аудита. Вопрос на русском превращается в отчёт, где каждое число привязано к дословной цитате из первоисточника.

AuditLens

Платформа исследований для внутреннего аудита банковских продуктов. Вопрос на русском — аналитический отчёт со ссылками на первоисточники, графиками и PDF за 1–3 минуты. Каждое число привязано к дословной цитате со страницы, которую система действительно прочитала.

License: MIT Python 3.11+ Postgres 17 + pgvector

Быстрый старт · Онбординг разработчика · Документация · Архитектура · Troubleshooting

AuditLens — Обзор

Утренний выпуск: передовица, «пульс дня» из шести детерминированных метрик, риск-карточки с кнопками «Разобраться» и «Спросить ИИ», лента новостей для аудитора.


🎯 Для кого

Аналитики и аудиторы банковского сектора, которым нужно регулярно сравнивать продукты разных банков, искать данные по ставкам/тарифам/жалобам клиентов и готовить отчёты для руководства. AuditLens заменяет ручной обзвон 5–10 сайтов банков, копирование цифр в Excel и склеивание в Word — на один запрос на русском языке.

Принцип, на котором построена система: числа считает детерминированный код, LLM только формулирует. Всё, что модель могла бы выдумать, сверяется с фактами — а графики и сравнительные таблицы строятся вообще без LLM.


⚡ Что умеет

📰 Обзор — ежедневный брифинг. Утренний выпуск для аудитора: передовица, «пульс дня» из шести метрик, риск-карточки с механикой «Разобраться» и «Спросить ИИ». Все числа — детерминированный SQL; модель зовётся трижды в сутки на всех, дальше день живёт из кэша.

🔬 Deep Research. Кондуктор разбирает вопрос — интент, субъекты, что считать раскрытым, — дальше движок ведёт прогон: подзапросы, поиск, чтение страниц, сжатие, отчёт. В отчёт попадает не свободный текст, а типизированные факты с дословной цитатой. Типичное время 1–3 минуты, первые строки появляются через пару секунд.

🛡 Проверка утверждений. Числа берутся только из прочитанной страницы, не из сниппетов выдачи. Каждый факт несёт дословную цитату, а критик работает в два слоя: дешёвый подтверждает точное совпадение и снимать не вправе, остаток судит модель — пересказ синонимами не делает цитату ложной. Утверждения без опоры на источник из отчёта убираются.

📚 Цитаты и доверие к источнику. Каждое утверждение несёт ссылку [N] на цитату. Вес источника задаёт домен: регуляторы (cbr.ru, pravo.gov.ru) — 0.98, порталы gov.ru — 0.95, официальные сайты банков — 0.92, агрегаторы — 0.7, деловые СМИ — 0.6, отзовики — 0.5, площадки пользовательских блогов — 0.35. Ссылки проверяются на доступность, у источника видна дата публикации, а не дата сбора.

💬 Отзывы — риск-радар. Единый корпус 181 тыс. отзывов из четырёх источников (banki.ru, финуслуги, сравни.ру, bankiros). Темы выводит модель из самого корпуса — 26 тем, привязка отзыва к теме векторная, списка регулярок в коде нет. Всплески ловятся по медиане и MAD, устойчиво к самому пику; есть гео-аномалии на 100 тыс. населения и сравнение с рынком.

🕳 Лазейки. Отдельный агент ищет схемы, которыми клиенты и ИП обходят комиссии и лимиты. Персональные данные маскируются до отправки в модель, находки складываются в таблицу с дедупом и вердиктом.

📊 Графики и PDF. Числовые сравнения визуализируются автоматически. PDF собирается через Playwright Chromium: A4, встроенные шрифты, графики, список источников.

🧠 Любой продукт без хардкода. Тему, синонимы, субъектов и потребность в источниках регулятора определяет кондуктор. Списков слов в парсере и индексаторе нет — это условие, а не пожелание.


🏗 Архитектура

Пять шагов прогона: кондуктор строит план вопроса, поиск читает страницы, из прочитанного извлекаются факты с дословными цитатами, критик из двух слоёв снимает неподтверждённое, отчёт собирается со сквозными ссылками. Графики, таблицы и PDF считаются кодом, без участия модели.

Шаг Что делает Модуль
01 · Кондуктор Разбирает вопрос: интент, субъекты, что считать раскрытым research/v2/conductor.py
02 · Поиск Подзапросы → метапоиск → чтение страницы: кэш, затем HTTP, затем браузер. Отличает «не смогли прочитать» от «банк не раскрывает» research/gptr/{planner,retriever,scraper}.py
03 · Факты Типизированные факты с дословной цитатой и стороной свидетельства: заявлено организацией, наблюдается в жалобах, установлено регулятором research/gptr/facts.py
04 · Критик Дешёвый слой подтверждает дословное совпадение и снимать не вправе; остаток судит модель research/gptr/critic.py
05 · Отчёт Сквозные [N], ведущие на цитату; графики и таблицы считаются отдельно, кодом research/gptr/{citations,stream}.py

Поисковое ядро — движок gpt-researcher с нашими адаптерами: свой метапоиск, свой скрапер с эскалацией до браузера, свой планировщик подзапросов. Слой фактов, критик и цитирование — наши.

Полное описание — docs/ARCHITECTURE.md: тиры моделей, бюджеты времени, анти-галлюцинации, специфика Cloud.ru.

Стек:

  • Python 3.11+, FastAPI, SQLAlchemy 2, asyncio, SSE
  • PostgreSQL 17 + pgvector — гибридный поиск: вектор (1024d, BGE-M3, HNSW) и русский полнотекст, слияние по RRF. Порога по косинусу нет намеренно: в этом проекте абсолютный порог по векторному сходству трижды оказался неработоспособен — честный сигнал даёт словесная нога
  • React 18 без бандлера — Babel-standalone компилирует JSX в браузере, ни npm, ни webpack
  • Playwright Chromium — скрейп за антиботами и PDF-экспорт
  • LLM — любой OpenAI-совместимый эндпоинт. В проде — Foundation Models Cloud.ru; пять тиров моделей (fast / smart / reasoning / analyst / insight) с деградационной цепочкой
  • Web search — SearXNG. Набор движков подбирался замером: bing пришлось отключить — он деградировал до случайного шума на банковских запросах, dogpile держит 88% годных результатов

Модели (прод):

Тир Модель Где
fast / smart deepseek-ai/DeepSeek-V4-Flash навигация по выдаче, извлечение фактов, критик
reasoning / analyst anthropic/claude-opus-4.8 план вопроса, нарратив отчёта
insight anthropic/claude-sonnet-4.6 «Обзор», «Отзывы» (3 вызова в сутки)
фолбэк deepseek-ai/DeepSeek-V4-Pro когда основной тир недоступен

Рассуждение (reasoning_effort) на горячем пути выключено намеренно: на планировании оно стоило 315 с против 24 с, на извлечении фактов — 204 с против 50 с, а качество плана не менялось.


🚀 Быстрый старт (5 минут)

Что нужно

Где взять
Python 3.11+ brew install python@3.12 (mac) · sudo apt install python3.12 (Linux/WSL)
Docker Desktop Mac (Apple Silicon) · Mac (Intel) · Windows · Linux
Git brew install git (mac) · sudo apt install git (Linux/WSL)
Ключ к LLM любой OpenAI-совместимый эндпоинт. Для локального старта проще всего fireworks.ai (бесплатные $15). В проде — Foundation Models Cloud.ru

Шаги (TL;DR)

# 1. Скачать
git clone https://github.com/SashaEee/auditLens.git
cd auditLens

# 2. Один скрипт = всё установлено (Docker, БД, Python deps, миграции)
bash scripts/setup.sh

# 3. Впиши ключ и эндпоинт в .env
open -e .env       # mac (откроет TextEdit)
# или: nano .env   # любая ОС (Ctrl+X для выхода)
#   LLM_BASE_URL=...   LLM_API_KEY=...   LLM_MODEL_NAME=...

# 4. Запусти сервер
source .venv/bin/activate
uvicorn bank_audit.web.app:app --host 127.0.0.1 --port 8000

Открой http://127.0.0.1:8000 → введи вопрос → готово.

📖 Не уверен в командах?docs/SETUP.md — пошаговый гайд с разделением по mac/Windows/Linux 🔑 Где взять API-ключ?docs/API_KEYS.md ☁️ Развернуть в облаке Cloud.ru?docs/DEPLOY_UVA.md


💬 Примеры вопросов

Полный гайд с десятками примеров → docs/USAGE.md

Сравнительные исследования (включи 🔬 Deep Research):

Семейная ипотека: ставки, первый взнос, требования к доходу
в Сбер, ВТБ, Альфа-банк, ДомРФ
Сравни премиальные дебетовые карты Сбер Прайм, Тинькофф Premium,
Альфа Wealth по комиссиям, кешбэку, привилегиям
РКО для ИП с оборотом до 10 млн/год: тарифы, эквайринг, бесплатные
операции — Сбер, Тинькофф, Точка, Модульбанк

Быстрые запросы (без Deep Research):

Топ-10 жалоб клиентов Тинькофф за последний месяц
Покажи актуальные ставки по вкладам от 1 млн руб на 12 мес

🖼 Скриншоты

05 · ИИ-аналитик

ИИ-аналитик Чат с Deep Research: живой прогресс по стадиям, ход мысли модели, план отчёта, источники с trust-индикаторами.

02–04 · Аналитические вкладки

Рынок Рынок: офферы из v_offer_current с фильтрами по категории, «vs лидер».

Сбер / Рынок Позиция Сбера против медианы рынка по категориям.

Отзывы Риск-радар: темы с классами риска, спайк-детект, гео-аномалии.

База знаний База знаний: покрытие по банкам, live-поиск по pgvector (BGE-M3 1024d).

07 · Лазейки

Лазейки Агент ищет схемы обхода комиссий и лимитов; найденное с вердиктом и trust-score попадает в таблицу.

08–10 · Данные

Банки Банки.

Источники Источники с trust-индикаторами.

Качество Флаги качества данных.


📦 Структура репозитория

auditlens/
├── README.md                        ← ты здесь
├── LICENSE                          ← MIT
├── assets/readme/                   ← иллюстрации этого файла (SVG)
├── pyproject.toml                   ← зависимости
├── .env.example / .env.prod.example ← шаблоны конфига
├── docker-compose.yml               ← Postgres + SearXNG
├── Dockerfile                       ← прод-образ (+ Playwright)
├── docs/
│   ├── SETUP.md                     ← детальная установка
│   ├── ONBOARDING.md                ← онбординг разработчика
│   ├── API_KEYS.md                  ← где брать ключи
│   ├── USAGE.md                     ← примеры вопросов
│   ├── ARCHITECTURE.md              ← как устроена система
│   ├── DEPLOY_UVA.md                ← развёртывание в облаке
│   ├── TROUBLESHOOTING.md           ← типовые проблемы
│   └── img/                         ← скриншоты для README
├── migrations/                      ← SQL миграции (001–062 + ensure_vector)
├── config/
│   ├── sources.yaml                 ← реестр источников (10 источников)
│   └── ca_bundle_combined.pem       ← certifi + Russian Trusted Root
└── src/bank_audit/
    ├── ai/                          ← LLM-утилиты, тиры моделей, clarify
    ├── research/gptr/               ← движок: поиск, факты, критик, цитаты
    ├── research/v2/                 ← кондуктор и оценка доверия к источникам
    ├── rag/                         ← embedder, retriever, отзывы, trust
    ├── digest/                      ← «Обзор» — ежедневный брифинг
    ├── loophole/                    ← «Лазейки» — nanobot-агент
    ├── sources/ collectors/         ← адаптеры источников, Playwright
    ├── normalizer/ quality/         ← нормализация (SCD2), контроль качества
    └── web/                         ← FastAPI + React UI + PDF export

🛣 Roadmap

  • Deep Research — кондуктор, движок поиска, слой фактов с дословными цитатами
  • Критик из двух слоёв: дешёвая проверка подтверждает, модель судит остаток
  • Universal product support (любой банковский продукт без хардкода)
  • PDF export с графиками
  • «Обзор» — ежедневный брифинг с детерминированным пульсом
  • «Лазейки» — агент поиска схем обхода
  • Гибридный поиск (вектор + русский полнотекст) во всех вкладках
  • Проверка доступности ссылок и дата публикации источника
  • Развёртывание в облаке + Foundation Models
  • Загрузка собственных PDF из UI
  • Excel-экспорт сравнительных таблиц
  • Snapshot-based diff («что изменилось в условиях по вкладам за месяц»)
  • Telegram/Slack бот-интерфейс

🤝 Контрибьюции

PR'ы welcome. Перед отправкой:

  1. pip install -e ".[dev]" — поставит pytest + ruff
  2. ruff check src/ — линтер
  3. pytest tests/ — тесты (если есть для твоей области)
  4. Опиши зачем изменение, не только что сделано

📜 Лицензия

MIT — свободное использование с указанием авторства.

🙏 Acknowledgments

  • gpt-researcher — каркас движка исследования
  • pgvector — векторный поиск в Postgres
  • SearXNG — open-source мета-поисковик
  • BGE-M3 — multilingual embeddings
  • nanobot-ai — harness агента «Лазеек»
  • Chart.js — графики в UI и PDF

Сделано для аудиторов, которые хотят тратить время на анализ, а не на сбор данных.

About

Deep-research LLM agent + RAG platform for internal bank-product audit — cited reports, PDF export, pgvector

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages