Автоматизация юридической рутины с помощью AI и Python

Для юриста критически важно следить за изменениями в законодательстве и судебной практике. Это то, что позволяет поддерживать квалификацию и вовремя информировать клиентов о рисках, которые могут повлиять на их бизнес. В юридических командах, будь то юрфирма или департамент, мониторинг таких изменений часто становится «горячей картошкой»: сегодня делает один юрист, завтра другой, а потом ответственный уехал в отпуск или загружен на сделке и ему некогда.

Я решил проверить, можно ли оптимизировать процесс подготовки юридических алертов с помощью современных AI-инструментов, и разработал полностью автономную систему. Рассказываю, как она создавалась и как устроена.

Будни младшего юриста (да и вообще любого юриста)

Поиск аналогов

Прежде чем что-то создавать, я решил изучить рынок. Я начал искать Telegram-каналы по юридической тематике, которые бы уже велись нейросетью, чтобы не изобретать велосипед. К моему удивлению, я ничего не нашел .

Конечно, есть отличные, популярные ресурсы вроде канала «Корпоративные споры», которые, судя по всему, ведут вручную целые команды специалистов. Они дают глубокую авторскую экспертизу, но это другой формат. Моя же цель была в другом — создать полностью автоматизированный и беспристрастный инструмент для быстрого мониторинга, который бы закрывал рутинную задачу отсева информационного шума. Оказалось, что таких ресурсов в Телеграме нет. Это меня немного насторожило, т.к. либо я плохо искал, либо такие инструменты никому не нужны. Тем не менее, было принято решение действовать.

Постановка задачи: от идеи до реализации

Идея заключалась в автоматизации отслеживания новостей об изменении законодательства и судебной практики в заданной отрасли права (с учетом моей специализации - корпоративное право, M&A) и их публикации в Telegram-канале на автопилоте, без вмешательства человека.

В качестве отправной точки я попробовал собрать прототип новостного агрегатора на n8n, связав RSS-ленты с GPT. Предполагалось, что low-code платформа делала бы всю работу по сбору и отправке данных. Но я быстро уперся в потолок: кастомизировать логику отбора, внедрить сложную дедупликацию и управлять цепочкой вызовов к разным моделям оказалось очень сложно. Стало очевидно, что для этого нужен полноценный скрипт.

Кроме того, мне хотелось создать действительно полезный инструмент, который не просто собирает новости, но и анализирует их на достаточно высоком уровне (не хуже младшего юриста).

В итоге я выделил следующие ключевые направления для решения поставленной задачи:

  • Выбор нейросети. Я начал с GPT-4o и его mini-версии, но качество аналитики для юридической тематики меня не устроило - выводы были слишком общими. После нескольких тестов я остановился на Gemini 2.5 Pro. Эта модель показала себя значительно лучше в понимании контекста и формулировании точных, содержательных выводов, что очень важно для меня и коллег.

  • Источники новостей. Для простоты обработки я выбрал наиболее надежные и проверенные новостные сайты с RSS-лентами - pravo.ru и ao-journal.ru.
  • Частота проверки новостных лент. Четыре проверки в день: 12:00, 15:00, 18:00, 21:00. Такой график учитывает задержку в обновлении лент и охватывает весь рабочий день.
  • Количество постов. Максимум четыре публикации в сутки, чтобы лента оставалась ценной, а не превращалась в поток ссылок.
  • Фильтры. Каждая новость проходит двойную проверку: релевантность для корпоративного юриста и важность по шкале 1-10. В публикацию попадают лидеры.
  • Формат поста. Заголовок, резюме, три аналитических вывода (почему эта новость важна для практики), автоматически сгенерированные хэштеги и эмодзи. Хэштеги приводятся к единому стилю и подбираются в зависимости от содержания новости.

Архитектура: что внутри

На первый взгляд это просто бот для Telegram. Но под капотом - набор инструментов, которые обычно используют разработчики в проектах data engineering.

1. Планировщик и сбор данных (RSS)

Система работает по заданному расписанию. За это отвечает библиотека APScheduler. В файле настроены четыре ежедневных «слота» для проверки новостей: в 12:00, 15:00, 18:00 и 21:00. Когда наступает время, скрипт с помощью библиотеки Httpx обращается к RSS-лентам и загружает последние статьи.

2. Сбор данных

Новости тянутся через HTTP-клиент, результаты сохраняются в кэше с «временем жизни». На этом этапе система чистит тексты от HTML-разметки, рекламы и анонсов.

3. Аналитика на базе ИИ

Здесь используется связка моделей:

  • быстрая (с минимальными затратами) оценивает релевантность пачкой - сразу 10–20 новостей;
  • более мощная делает глубокий анализ: выставляет оценку важности и формулирует три практических вывода.

Чтобы сократить расходы и ускорить работу, анализ идёт батчами (пакетами), а не по одной новости. Если основная модель недоступна, система автоматически переключается на резервную.

4. Дедупликация

Одна новость может появиться на разных сайтах под разными заголовками. Чтобы не постить одно и то же, работает многоуровневая проверка:

  • сначала сравнение текстов по хэшам;
  • потом алгоритмы MinHash и LSH (они оценивают похожесть текста по структуре слов);
  • в случае сомнений — семантическая сверка через нейросеть: действительно ли это одно событие.

5. Ограничения и ранжирование

Даже если день богат на события, публикаций будет максимум четыре. Система берёт только те, где произведение «важность × релевантность» выше всего.

6. Публикация

Финальный пост формируется автоматически с помощью HTML-разметки (заголовок, резюме, выводы, хэштеги, эмодзи) и отправляется через API Telegram. Система сохраняет «отпечатки» опубликованных материалов, чтобы завтра не повторяться.

7. Контроль качества

Каждый шаг логируется: можно в любой момент увидеть, сколько новостей пришло, сколько отсеялось, почему конкретная статья не попала в канал. Это важно для формирования доверия: автоматизация не превращается в «чёрный ящик».

Проблемы и решения: «галлюцинации», ошибки API и настройка Ubuntu

Весь процесс создания был большим экспериментом, и я столкнулся с рядом проблем, которые пришлось решать на ходу.

Проблема №1: LLM путает версии кода и теряет контекст

Поначалу я правил код в простом блокноте, но, когда он перевалил за 1000 строк, пришлось осваивать Visual Studio Code. Однако и это не спасло от главной проблемы: любая LLM при работе со скриптом в 2500-4000 строк начинает галлюцинировать. Она постоянно забывает куски кода, путает разные версии файлов и предлагает правки к уже удаленным фрагментам.

Когда попросил нейронку немного подправить функцию

Решение: погрузиться в промпт-инжиниринг. Я стал использовать разные модели для разных задач: основной кодинг - в GPT-5 или Grok, а для отладки и рефакторинга очень помог встроенный в IDE плагин Codex. Задачи по аналитике и сложному промпт-инжинирингу я оставил для Gemini. Главным открытием стало то, что не нужно просить модель «исправить весь скрипт», а стоит давать ей точечные, атомарные задачи с четкими инструкциями. Вот пара промптов, которые помогали мне получить нужный результат:

«Проверь эту версию скрипта, определи, какие фрагменты кода можно безопасно удалить. Игнорируй все предыдущие версии скрипта».

«Перепиши эту функцию целиком, приведи полный текст функции с учетом предложенных изменений».

Проблема №2: Нестабильность API и оптимизация затрат

В процессе работы я столкнулся с постоянными ошибками API, особенно с ошибками 500 (Internal Server Error) у Gemini. Кроме того, отправлять каждую новость на анализ по отдельности - долго и неэффективно с точки зрения расходования токенов.

Решение:

Отказоустойчивость. В скрипт была встроена логика автоматического переключения на резервную модель (gemini-2.5-flash) в случае сбоя основной, что не раз спасало ситуацию.

Батчинг. Вместо одиночных запросов я сгруппировал их. Теперь новости отправляются на оценку релевантности и проверку на дубликаты пачками (батчами), что значительно экономит время и токены.

Чтение документации. Чтобы минимизировать количество ошибок API я попросил нейросеть обратиться к документации, размещенной на сайте https://ai.google.dev/gemini-api/docs/structured-output?authuser=1 , и оптимизировать генерацию нужных мне данных в соответствии со стандартами и рекомендациями гугла.

Проблема №3: Запуск скрипта на сервере

Написать скрипт - это полдела. Его нужно где-то запустить, чтобы он работал 24/7. Это стало для меня отдельным квестом. Я арендовал VPS-сервер и впервые в жизни столкнулся с Ubuntu. Настройка окружения, установка зависимостей, проксирование, работа с командной строкой и отладка проблем с доступом к файлам отняли не меньше времени, чем написание самого кода.

Примерно так выглядел деплой 

Решение: терпение, поиск инфы на форумах разработчиков и, опять же, помощь нейросетей, которые выступали в роли переводчика с «гуманитарного» на компьютерный.

Результат и выводы

Мой эксперимент показал, что ИИ может стать надежной опорой для юриста. Даже если вы не владеете навыками разработки ПО, с помощью вайбкодинга можно создать помощника, который заберет на себя рутинную, но очень важную задачу, гарантируя, что вы всегда будете в курсе событий.

Результаты работы моего AI-ассистента общедоступны. Все посты автоматически публикуются в Telegram-канале «AI Alert: Корпоративное право».

Пример поста 
Пример поста 

Если Вам тоже знакома боль отслеживания изменений законодательства и судебной практики, возможно, этот инструмент будет Вам полезен. Ссылка: https://t.me/aialertcorp .

Также буду признателен за участие в небольшом опросе, который займет не более 2 минут https://forms.gle/WkZrhbVqTXApkA6D8. Это поможет сделать ИИ-ассистента более эффективным и учесть Ваши пожелания.

Спасибо за внимание!

ИИ осознает себя
3
2 комментария