Skip to content

Praxis

Русский · English · Документация

CI CodeQL Лицензия: Apache-2.0 Python 3.12

Юридический ассистент по российскому праву. Отвечает на вопрос и приводит ссылки на конкретные нормы, каждую из которых отдельно проверяет модель. Если подтверждения в законе нет, то сообщает об этом.

dff68b0c159aa1d94c4ec3732c9dae44 image image

Запуск

git clone https://github.com/DrobyshevDev/praxis.git
cd praxis
docker compose up app

Открыть http://localhost:8077. Ни ключей, ни GPU, ни сети: образ ставит extra api, поднимает PRAXIS_OFFLINE=1 и несёт корпус внутри себя, поэтому детерминированные компоненты работают без единого обращения наружу, а ответ по умолчанию экстрактивный — дословный текст норм.

Это срез «скачал и запустил», а не продовое качество. Плотный поиск, реранкер и NLI-проверка цитат требуют extra ml и предпочитают GPU — как их поднять, написано в docs/DEVELOPMENT.md. Синтезирующий режим подключается через ANTHROPIC_API_KEY и остаётся необязательным: поиск работает без него.

HTTP-API и Python-клиент — docs/API.md.

Проблематика

У юристов сейчас три варианта, и каждый неудобен по-своему.

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

КонсультантПлюс и Гарант дают поиск по документам, а не ответ. Сопоставление норм и вывод юрист делает сам, подписка стоит дорого.

Поисковики отдают форумы, устаревшие редакции и SEO-мусор.

Между этими вариантами пусто. Нет инструмента, который отвечает на вопрос достаточно быстро или со скоростью модели, но со ссылками, которые можно открыть и проверить. Это место проект Praxis и занимает.

Для кого предназначается

Юристы и юрисконсульты малого и среднего бизнеса без доступа к дорогим справочным системам. Бухгалтеры и кадровики с вопросами по НК, ТК и КоАП. ИП и основатели. Физлица с бытовыми спорами.

На первом этапе выбран российский рынок: по нормативке доступны данные, более понятна целевая аудитория и насущные проблемы. Ту же архитектуру можно перенести на право ЕС и США, где открытых данных ещё больше (EUR-Lex, CourtListener, Caselaw Access Project).

Как работает

Вопрос идёт через агента, который планирует поиск. Дальше гибридный поиск по корпусу норм (BM25 + плотные эмбеддинги), реранкер отбирает лучшее, связанные по ссылкам нормы дотягиваются через граф «статья → статья». Генератор собирает ответ, где каждое утверждение привязано к норме, и Citation Verifier проверяет каждую привязку.

Что отличает Praxis от обёртки над «chat-with-PDF»:

Citation Verifier. Каждую ссылку отдельная NLI-модель проверяет на entailment: подтверждает ли текст нормы конкретный тезис. Неподтверждённое не подаётся как факт.

Agentic self-RAG. Сложный вопрос агент разбивает на под-запросы, до-ищет и переформулирует, пока не наберёт оснований. Ход рассуждения виден в ответе.

GraphRAG. Нормы ссылаются друг на друга («в соответствии со статьёй 15»). Это готовый граф: вопрос про убытки поднимает ст. 393, а граф дотягивает упомянутую в ней ст. 15.

Экстрактивный режим по умолчанию. Без ключа к LLM Praxis не сочиняет текст, а дословно приводит применимые нормы со ссылками — такой ответ не может галлюцинировать. Синтез через Claude включается ключом и проходит ту же проверку цитат по каждому предложению.

Оценка качества. Метрики (recall@k, MRR, citation precision) считаются на golden set, а не оцениваются на глаз.

Юридические инструменты

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

  • Слой доверия. У каждой нормы ссылка «сверить с действующей редакцией» (zakonrf.info) и реквизиты акта (номер ФЗ и дата). При низкой уверенности — честное «прямого ответа не нашлось» вместо натянутого ответа.
  • Претензия и исковое заявление (/v1/claim, /v1/lawsuit). Правовое обоснование собирается из процитированных норм, требования, подсудность и госпошлина — статутные блоки, факты дела — плейсхолдеры.
  • Калькуляторы со ссылкой на норму (/v1/penalty, /v1/fee, /v1/interest): неустойка потребителю (ст. 23 / 28 ЗоЗПП), госпошлина в суд (ст. 333.19 / 333.36 НК), проценты по ст. 395 ГК.
  • Чек-лист договора (/v1/contract) — прозрачная проверка существенных условий и рискованных пунктов по нормам: не «ИИ-анализ», а явные правила, каждый пункт со ссылкой.

В корпус добавлен Закон о защите прав потребителей (corpus/zozpp.json) — ключевой закон для потребительских споров, на который опираются эти задачи.

Калькуляторы и чек-лист работают полностью в браузере — попробовать без установки можно на демке: drobyshevdev.github.io/praxis/try. Эндпоинты и примеры — docs/API.md.

Данные

Нормативные данные доступны. Кодексы и федеральные законы есть в машиночитаемом виде на pravo.gov.ru. На этом построен основной сценарий: в репозитории лежит парсер официального текста (statute_parser) и образец корпуса ГК; полный корпус подключается тем же путём.

В репозитории лежат шесть кодексов, подключаются через PRAXIS_CORPUS_DIR:

Файл Кодекс
corpus/gk-rf.json Гражданский — 1712 статей, 4717 норм, все четыре части
corpus/nk-rf.json Налоговый
corpus/koap-rf.json Об административных правонарушениях
corpus/uk-rf.json Уголовный
corpus/tk-rf.json Трудовой
corpus/zhk-rf.json Жилищный

Все шесть — транскрипции с Викитеки, о чём говорит поле edition в каждом файле. Актуальность редакции нужно сверять с pravo.gov.ru: это то, для чего в репозитории лежит парсер официального текста.

Тексты кодексов — официальные документы, и по п. 6 ст. 1259 ГК РФ объектами авторских прав не являются. Apache-2.0 в этом репозитории покрывает код, парсер, граф перекрёстных ссылок и разметку корпуса, а не сами тексты законов.

Судебная практика сложнее. Открытого структурированного корпуса уровня Caselaw Access для России нет, kad.arbitr и ГАС «Правосудие» отдают данные тяжело. Это следующий этап, отдельным пайплайном.

Качество

Прогон eval-харнесса по golden set (12 вопросов, praxis-eval):

Метрика Реальные модели (RTX 4060) Офлайн-fallback
recall@5 1.00 1.00
MRR 1.00 0.90
hit-rate 1.00 1.00
mean confidence 0.88 0.63
citation precision 0.29 0.40

Реальные модели: BGE-M3 (эмбеддинги), bge-reranker-v2-m3 (реранк), rubert-NLI (проверка цитат), всё на GPU. Нужная норма всегда попадает в топ выдачи. Citation precision занижен потому, что в golden по одной эталонной статье на вопрос, а система приводит и смежные релевантные нормы. Это чинится разметкой с несколькими верными статьями на вопрос.

На полном корпусе ГК (4717 норм, golden из 18 вопросов) реальные модели держат recall@5 0.92, MRR 0.94, hit-rate 1.0, уверенность 0.80. Офлайн-fallback на таком объёме падает до recall 0.64 — на реальных данных без настоящих моделей не обойтись.

Дорожная карта проекта

  • v0. Скелет, доменные модели, легал-aware чанкинг, baseline BM25. Готово.
  • v1. Гибридный поиск и реранк, Citation Verifier, self-RAG, eval, FastAPI и веб-UI. Готово. Каждый ML-компонент имеет реальную реализацию на GPU или через Claude и детерминированный офлайн-fallback.
  • v2. Реальная ингестия официального текста, GraphRAG по перекрёстным ссылкам, прогон на GPU. Готово.
  • v3. Полный корпус кодексов и ФЗ с pravo.gov.ru, судебная практика и граф «норма ↔ дела», span-level подсветка цитат в UI, расширенный golden set.
  • v4. Полный ГК выгружен и лежит в репозитории, открытый API (/v1) с CORS и Python-клиентом, конкурентный анализ. Desktop и mobile на том же API — следующий шаг.

Как запускать — docs/DEVELOPMENT.md.

Стек и экосистема

Python 3.12, FastAPI, Postgres с pgvector, Docker. Поиск: BM25 и плотные эмбеддинги BGE-M3, реранкер bge-reranker-v2-m3. Проверка цитат: NLI на GPU. LLM подключается через провайдера: Claude для синтеза, RU-провайдеры (GigaChat, YandexGPT) для сценариев с требованием резидентности.

Проект использует две библиотеки той же организации: glia — агентный цикл в LLM-режиме (поиск оформлен как glia-инструмент, трейс из trajectory); mlango — трекаемый golden-eval через его подсистему evals (integrations/mlango_eval, manage.py evaluate).

Архитектура — ARCHITECTURE.md.

Открытость и клиенты

Всё открыто (Apache-2.0) и работает локально без сторонних токенов. Базовый функционал — поиск, проверка цитат, ответы — не требует ни ключей, ни платных сервисов: локальные модели скачиваются с HuggingFace бесплатно, ответ по умолчанию экстрактивный (дословный текст норм). Claude — необязательная опция для синтеза, а не условие работы. Платные фичи и подписка — на будущее.

Одно API-ядро (/v1) обслуживает все клиенты: веб-UI сейчас, desktop и mobile как тонкие клиенты на том же API дальше. Для ML-специалистов открытый API с CORS, OpenAPI-схемой и Python-клиентом — docs/API.md.

Конкурентный анализ и плюсы проекта — docs/COMPETITIVE.md.


Это не юридическая консультация. Praxis находит нормы и проверяет, что цитата подтверждает утверждение. Он не оценивает вашу ситуацию, не учитывает процессуальный контекст и не заменяет юриста.

About

A legal assistant for Russian law whose citations are checked, not asserted — hybrid retrieval, cross-encoder reranking, NLI citation verification, self-RAG, evals, FastAPI.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages