Автоматизация юридической рутины с помощью 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. Это поможет сделать ИИ-ассистента более эффективным и учесть Ваши пожелания.
Спасибо за внимание!