Как я построил модульную систему промптов для YandexGPT, почему GPT из коробки галлюцинирует на юридических документах, и что из этого получилось.
Предыстория
Год назад я чуть не потерял 200 тысяч на аренде офиса. Договор выглядел стандартно, но в п. 5.3 мелким шрифтом было написано: «Депозит не возвращается при расторжении по инициативе Арендатора». Заметил случайно, когда перечитывал в третий раз.
После этого я стал параноиком: читал каждую запятую, гуглил каждый пункт. А потом подумал — почему бы не автоматизировать эту паранойю?
Проблема: GPT из коробки не работает
Первая попытка была наивной: закинул договор в YandexGPT с промптом «найди риски в этом договоре».
Результат:
Галлюцинации: модель «находила» риски, которых в тексте не было
Пропуски: очевидные ловушки (пеня 1% в день = 365% годовых) игнорировались
Общие фразы: «рекомендуется проконсультироваться с юристом» — спасибо, кэп
Главная проблема — контекст. Договор франшизы и договор аренды — это разные вселенные. Риски разные, нормы рынка разные, даже терминология разная. Один промпт на всё не работает.
Решение: модульная архитектура промптов
Я разбил систему на три слоя:
┌─────────────────────────────────────────────┐
│ Финальный промпт (~10KB) │
├─────────────────────────────────────────────┤
│ Base Prompt │ ~3KB │ Методология │
│ Common Traps │ ~4KB │ Универсальные │
│ Theme Prompt │ ~3KB │ Специфичные │
└─────────────────────────────────────────────┘
1. Base Prompt — методология анализа
Это ядро системы. Здесь я описываю:
Роль модели («независимый судебный эксперт»)
Принцип нейтральности (PARTY1/PARTY2 вместо «вы» и «они»)
Калибровку по рынку (что нормально, что нет)
Формат вывода (строгий JSON)
Фрагмент:
РОЛЬ: Независимый судебный эксперт по договорному праву РФ
с 20-летним опытом.
ЗАДАЧА: Проанализируй договор, определи РЕАЛЬНЫЕ асимметричные
условия. НЕ ФЛАГОВАТЬ сбалансированные условия.
ПРИНЦИП НЕЙТРАЛЬНОСТИ:
- Констатируй факты, не защищай ни одну сторону
- PARTY1 = первая сторона в преамбуле договора
- PARTY2 = вторая сторона в преамбуле договора
- Указывай КТО в зоне риска (affectedParty)
2. Детекторы конкретных паттернов
Главный инсайт: GPT нужны конкретные инструкции, а не общие пожелания.
Вместо «найди асимметричные условия» я пишу детектор:
═══════════════════════════════════════════════════════════════
ДЕТЕКТОР АСИММЕТРИИ ПЕНЕЙ/НЕУСТОЕК
ОБЯЗАТЕЛЬНО сравни пени/неустойки для КАЖДОЙ стороны:
1. Найди все упоминания пени/неустойки
2. Запиши: Пеня PARTY1 = X%, Пеня PARTY2 = Y%
3. Вычисли соотношение X/Y или Y/X
⚠️ ВАЖНО: СРАВНИВАЙ ТОЛЬКО ОДНОТИПНЫЕ САНКЦИИ!
• НЕУСТОЙКА/ПЕНЯ = конкретный % за каждый день просрочки
• ОТВЕТСТВЕННОСТЬ ЗА УБЫТКИ = ограничение суммы
• ШТРАФ = фиксированная сумма
НЕ СРАВНИВАТЬ:
✗ Пеню 0,1%/день vs Ответственность "в пределах стоимости"
→ Это РАЗНЫЕ категории санкций, не "асимметрия"
ПРАВИЛА АСИММЕТРИИ:
• Если соотношение > 5:1 → CRITICAL
• Если соотношение 3:1 - 5:1 → HIGH
• Если соотношение < 3:1 → НЕ флаговать
═══════════════════════════════════════════════════════════════
Такие детекторы я написал для:
Асимметрии пеней
Размытых условий («ориентировочно», «по факту»)
Авто-приёмки («молчание = согласие»)
Vendor lock-in
KPI без гарантий поддержки
И ещё ~15 паттернов
3. Тематические промпты
Для каждого типа договора — свой набор специфичных рисков.
Пример: франшиза
═══════════════════════════════════════════════════════════════
ОБЯЗАТЕЛЬНЫЙ ДЕТЕКТОР #1: "ЛИЦЕНЗИЯ" ВМЕСТО "КОММЕРЧЕСКОЙ КОНЦЕССИИ"
!!! ГЛАВНАЯ ЛОВУШКА ВО ФРАНШИЗЕ !!!
Если договор по сути — франшиза, но назван "лицензионным",
покупатель ЛИШАЕТСЯ важных прав из Главы 54 ГК РФ:
• Субсидиарная ответственность правообладателя (ст. 1034 ГК)
• Преимущественное право на новый договор (ст. 1035 ГК)
ЧЕКЛИСТ — 4 ПРИЗНАКА КОНЦЕССИИ:
1. Товарный знак передаётся?
2. Есть бизнес-система/модель?
3. Комплексное использование?
4. Коммерческая цель?
ЕСЛИ 3+ признака = ДА, но договор назван "лицензионный" → CRITICAL
═══════════════════════════════════════════════════════════════
На данный момент у меня 31 тематический промпт:
Категория |
Темы |
|---|---|
Купля-продажа |
Авто, недвижимость, поставка |
Аренда |
Жилая, коммерческая, лизинг |
Услуги |
IT, медицина, образование, ремонт техники |
Подряд |
Строительство, бытовой подряд |
Финансы |
Кредит, страхование, банковские услуги |
Франшиза |
Лицензия, коммерческая концессия |
Трудовые |
Трудовой договор, NDA |
Прочее |
Агентский, хранение, перевозка, госзакупки... |
Классификатор темы
Перед анализом нужно понять, какой это договор. Я использую keyword-based классификатор:
export function detectThemeFromKeywords(contractText: string): {
theme: ContractTheme;
confidence: number;
} {
// Ищем ключевые слова и считаем веса
// "франчайзи", "паушальный", "роялти" → franchise
// "арендодатель", "арендная плата" → rental
// ...
}
Простой подход, но работает для 90%+ договоров. Если уверенность низкая — использую general тему.
Формат вывода
Модель возвращает структурированный JSON:
{
"redFlags": [
{
"flag": "Асимметрия пеней 10:1 в пользу Подрядчика",
"danger": "CRITICAL",
"affectedParty": "PARTY1",
"favoredParty": "PARTY2",
"location": "п. 7.2",
"quote": "Заказчик уплачивает пени 1% в день...",
"legalReference": "ст. 333 ГК РФ",
"suggestion": "Требуйте симметричных условий"
}
],
"overallRisk": "CRITICAL",
"classification": {
"contractType": "B2B",
"party1Type": "LEGAL_ENTITY",
"party2Type": "INDIVIDUAL_ENTREPRENEUR"
},
"extractedPenalties": [...]
}
Это позволяет:
Показывать риски в UI с цветовой кодировкой
Фильтровать по уровню опасности
Ссылаться на конкретные пункты договора
Тестирование
Формального бенчмарка с размеченным датасетом у меня нет — для этого нужна разметка от юристов с ground truth рисками.
Но я прогнал через систему ~100 реальных договоров: свои, друзей, из открытых источников. Разные типы: аренда, подряд, франшизы, IT-услуги, поставка. На каждом итеративно правил промпты — убирал ложные срабатывания, добавлял пропущенные паттерны.
Валидация на кейсах с реальными потерями
Отдельно взял 5 историй с VC и Т-Ж, где люди реально потеряли деньги — чтобы проверить, нашла бы система те риски, которые стоили им денег:
Я воссоздал похожие договоры по описаниям из статей и прогнал через систему.
Результаты
Кейс 1: Хостел (франшиза)
Проблемы из статьи:
Лицензионный договор вместо концессии
Невозвратный паушальный взнос
Роялти от выручки
Что нашла система: 9 рисков, 7 критических
✅ Лицензия вместо концессии — нашла
✅ Невозвратный взнос — нашла
✅ Роялти от выручки — нашла
✅ Роялти при форс-мажоре — нашла (бонус)
Кейс 4: Лестница (подряд)
Главная проблема из статьи — скрытая асимметрия штрафов.
Что нашла система:
Пеня за просрочку заказчика: 1% в день
Пеня за просрочку подрядчика: 0.1% в день
→ Соотношение 10:1 → CRITICAL
Именно это стоило заказчику денег.
Сводка
Кейс |
Задокументированных проблем |
Найдено системой |
|---|---|---|
Хостел |
3 |
9 (включая 3 из статьи) |
IT-школа |
4 |
7 (включая 4 из статьи) |
Аренда |
7 |
9 (включая 6 из статьи) |
Лестница |
2 |
7 (включая 2 из статьи) |
Барбершоп |
3 |
8 (включая 3 из статьи) |
Система нашла все задокументированные проблемы из статей + дополнительные риски, которые авторы не упоминали.
Важно: ~100 договоров — это итеративная разработка, не формальный бенчмарк. Для честной оценки precision/recall нужен размеченный датасет с участием юристов. Пока его нет.
Грабли, на которые я наступил
1. Ложные срабатывания на симметричных условиях
Первые версии флаговали «Неустойка 0.1% в день» как риск. Но если это условие для ОБЕИХ сторон — это баланс, не риск.
Решение: добавил проверку симметричности перед флагом.
2. Сравнение разных типов санкций
Модель сравнивала «пеню 0.1%/день» с «ответственностью в пределах стоимости договора» и кричала «асимметрия!». Но это разные категории.
Решение: явно прописал в промпте, что сравнивать можно только однотипные санкции.
3. Галлюцинации на редких типах договоров
Для договора ренты с пожизненным содержанием модель выдумывала риски из договоров аренды.
Решение: добавил больше тематических промптов. Сейчас их 31.
4. Калибровка по рынку
«Предоплата 50%» — это риск или норма? «Пеня 0.1% в день» — кабальное условие или стандарт?
Без калибровки система флагует всё подряд.
Решение: добавил пороговые значения на основе ГК РФ и общепринятой практики:
ст. 333 ГК РФ — суды регулярно снижают неустойки выше 0.3-0.5% в день
ст. 395 ГК РФ — ключевая ставка ЦБ как ориентир «нормальной» пени
ст. 314 ГК РФ — «разумный срок» = 7 дней
Например, пеня 0.1% в день для B2B — это стандарт рынка, не риск. А 1% в день (365% годовых) — суды признают кабальным.
Технические детали
Модель: YandexGPT (yandexgpt-32k для длинных договоров)
Температура: 0.1 (минимум креативности, максимум точности)
Размер промпта: ~10KB (base + common + theme)
Контекст с договором: ~25KB = ~8-10K токенов
Время анализа: 15-30 секунд
Архитектура:
Upload → Classify Theme → Build Prompt → YandexGPT → Parse JSON → Store
Обработка асинхронная через BullMQ — договор может быть большим, таймауты API не резиновые.
Что дальше
Собрать датасет — нужна разметка от юристов для честного бенчмарка
Fine-tuning — возможно, дообучение на юридических текстах улучшит качество
Больше тем — есть ещё типы договоров, которые я не покрыл
Выводы
GPT из коробки не работает для специализированных задач. Нужны детальные инструкции.
Модульная архитектура — ключ к масштабированию. Base + Theme промпты позволяют добавлять новые типы договоров без переписывания всего.
Детекторы > общие инструкции. «Найди асимметрию» не работает. «Сравни пени для каждой стороны, вычисли соотношение, если >5:1 — флаг» — работает.
Калибровка по рынку критична. Без неё будет море ложных срабатываний.
Качественная проверка лучше, чем ничего. Пока нет формального бенчмарка, реальные кейсы — хороший способ валидации.
Если интересно попробовать — сервис доступен на legalparser.ru. 2 бесплатных анализа при регистрации.
Вопросы и критика — в комментариях. Особенно интересно мнение тех, кто работал с LLM для анализа документов.
Комментарии (7)

Gold141
20.01.2026 17:32Просто используй умные модели, например gpt 5.2. и конектста там больше чем на 5 строк договора

alterpub Автор
20.01.2026 17:32В этом случае я бы взял opus 4.5, но дело в том, что я сделал российский сервис, на российских технологиях и если нас настигнет Чебурнет, то в моем кейсе ничего не загнётся. Дальше, это вопрос доверия клиента, мало бизнеса в РФ, который готов сливать свои договора вне РФ. Ну и в любом случае, что с доступом к openai, что claude, нужно уже сейчас проксировать трафик, а это не то, чего я хотел. Можно и за cf убрать, а потом с РКН бодаться, как бы обойти, этакий Дон Кихот и ветряные мельницы.

aborouhin
20.01.2026 17:32мало бизнеса в РФ, который готов сливать свои договора вне РФ
Вы не поверите - если мы не про госсектор, то мало бизнеса в РФ, который готов сливать свои договора российским сервисам. С зарубежными как раз рисков для бизнеса нет. Есть только регуляторные риски про хранение / трансграничную передачу перс. данных и т.п.

aborouhin
20.01.2026 17:32Так, если автор всё же прочитает комментарии к своей статье :) - то у меня есть что сказать. Так совпало, что сразу после прочтения этой статьи у меня возникла практическая задачка организовать проверку договоров для одного заказчика (глянуть самому и выстроить процесс для юристов на будущее). Ну вот, думаю, как раз и проверю, на что нынче способен ИИ в этом вопросе, а на что нет.
Договор для теста элементарный - поставка самовывозом, наш клиент покупатель, договор составлял поставщик. Никакой особой специфики, даже те самые интервью у заказчика, про которые я писал выше, особо не надо брать - так, пару моментов уточнить. Договор скорее безграмотный (не в плане грамматики, а в плане юр. техники), чем умышленно кабальный, хотя в сторону интересов поставщика, само собой, подкручен.
На арене
цирказа звание лучшего ИИ-анализатора договоров на данном простом примере сразились:5 российских коммерческих продуктов, имеющих бесплатное демо, доступное онлайн (а не через "свяжитесь с нами"): "Нейроюрист" от Яндекса, legalparser.ru из этой статьи, Noroots, gptlegal.pro, ru_legal_bot (к ним надо бы добавить Докзиллу, но демо нет, а минимальные 6000₽ за 5 проверок договора в месяц откровенно дорого для теста);
3 топовых зарубежных LLM с простым промптом (GPT-5.2, Gemini 3 Pro, Claude Opus 4.5);
ну и вне конкурса - мой собственный естественный интеллект, основанный на 25 годах юридического стажа, из которых немало было проведено именно в ведении и выстраивании договорной работы :)
Руками я в тестовом договоре нашёл 20 рисков, которые стóит оформить в замечания (к грамматике, просто кривым формулировкам, ненужным повторам закона и пр. не придирался, только то, что может иметь реальные последствия). Из них 6 штук можно назвать критичными (т.е. если их не поправить - то толкованием текста и прочими соображениями общего характера в случае спора не отобьёмся). 4 штуки - это прямые логические противоречия между разными пунктами договора. Заняло это у меня в режиме "выписать на листочек" минут 15, оформить в режим правки с комментариями по каждому пункту займёт ещё полчаса.
Из этого списка лучше всего, внезапно, отработала GPT-5.2, увидевшая аж 6 рисков (2 критичных, 1 противоречие) из моего списка и добавившая ещё 4 нюанса (некритичных, но по делу), которые я пропустил.
У Noroots самый продуманный интерфейс и набор возможностей. Там как раз есть то, про что я писал в комменте выше - настраиваемые пользователем инструкции (плейбуки в их терминологии) для конкретного типа договоров. Наверное, если их использовать, можно сильно улучшить результат, но пока что они практически ничего по делу не поймали, зато добавили кучу виртуальных "рисков", которые рисками не являются (либо из договора таки достаточно ясно следует то, что Noroots посчитал неопределённым, либо отсутствие в договоре того, что он предложил добавить, ничего не способно поменять на практике).
Остальное (включая обсуждаемый в статье сервис) - грусть и печаль. У legalparser.ru самый минималистичный вывод, выбранный автором подход на практике сработал не в плюс, а в минус - тот единственный риск, который связан с неустойкой, был подсвечен, всё остальное просто проигнорировано.
По оформлению анализа - LLM общего назначения, само собой, выдают простыню, которую в пригодный для дальнейшей работы формат надо ещё отдельно преобразовывать (либо колдовать над промптом изначально). Внезапно лучше всего делает ru_legal_bot - правки в режиме рецензирования плюс пояснения в комментариях (ещё бы он не только грамматические ошибки находил, а по делу...)
Общий вывод - в лучшем случае нужны детальные промпты не просто по каждому типу договоров, но и по каждой организации с учётом её специфики работы и договорной практики. Формировать их надо долго, упорно и последовательно, результат не гарантирован. В худшем случае, всё это пока что довольно опасная игрушка, либо подменяющая нормальную проверку договора иллюзией проверки, если слепо полагаться на ИИ, либо отбирающая у юриста время, за которое он проанализировал бы договор и по старинке, если ИИ использовать только в качестве помощника.
P.S. Договор, мои замечания к нему и результаты проверки во всех упомянутых инструментах выложить не могу по соображениям конфиденциальности, но если автору интересно - могу поделиться в личке. Ну или если найду время - повторю этот же опыт с каким-нибудь договором, выложенным в открытом доступе.
aborouhin
Подход с инструкциями-чеклистами по типам договоров интересный и перспективный. Иначе действительно получается очень поверхностный анализ (я пробовал много чего). Но сразу несколько критических замечаний (как юристу и без критики :) :
Это наверняка будет прекрасно работать, когда инструкции для конкретного типа договоров составляются или хотя бы корректируются индивидуально под каждого заказчика. У всех своя специфика работы и свои требования. Кто-то ограничен рамками закона (закупки, монополии, публичные договоры, иные обязательные требования), кто-то внутренними стандартами. Ещё важнее - отрасль и сложившаяся практика работы. Если взять всё это и применить Ваш подход - получится прекрасное подспорье инхаус юристу, закрывающее серьёзную часть работы по проверке договора.
Но предлагать преднастроенные на основании Вашего опыта и нередактируемые инструкции в публичном сервисе для всех? Ох, сомневаюсь.
Вторая претензия не к сервису, а к его позиционированию. Писать, что Ваш сервис заменит анализ живым юристом - мягко говоря, введение в заблуждение. Помимо условий формальных (те самые неустойки и пр., которые у Вас есть в примерах), любой адекватный юрист проверяет договор на полноту, непротиворечивость и соответствие интересам заказчика заложенного в него алгоритма взаимодействия сторон. И такая проверка в принципе не может быть осуществлена только на основании текста.
Любой уважающий себя юрист, получив новый для себя договор, сначала задаёт вопросы тому, кто будет исполнением этого договора заниматься. Даже для простой поставки: Что товар из себя представляет, какие могут быть типичные недостатки? Где его принимают, кто и на чём привозит, с какими документами? Кто там сидит и в чём можно на них положиться, а в чём нет? Какой график работы, какие средства связи, какие способы проверки? Как что фиксируется? От какой суммы проблемы надо эскалировать на уровень выше и куда именно? Как формируется и проходит заявка на оплату? и т.п. И на основании этого интервью (а в основном - нескольких, т.к. один человек всего не знает) договор уже проверяется на предмет "А все ли возможные развилки учтены в сценарии выявления некачественного товара на приёмке? Отвечает это нашим интересам? Сможем мы фактически выполнять то, что там написано?" Иногда эта работа требует выезда на объект (из своей практики - чтобы детально понять порядок приёмки угля на ТЭЦ и корректно описать его в договоре, потребовалась командировка на пару дней на другой конец страны).
В общем, подобные сервисы - это подспорье для юриста, чтобы он не отвлекался на тривиальные штуки типа неустойки, разрешения споров и форс-мажора и мог уделить больше внимания содержательной части.
Насколько такое подспорье несёт ценность - вопрос сложный. По мне, так всё, что может выявить нейросеть, опытный юрист и так увидит за пару минут, в бодром темпе пролистав договор по диагонали. Конечно, чтобы соблюдать единые стандарты проверки и перекладывать часть работы на не столь опытных юристов, а то и вообще на исполнителей по договорам до передачи их юристам, - наверное, не помешает. Но тут вступает в игру человеческий фактор. Человек ленив. И если нейросеть за него "проверила" договор, что-то убедительное написала - высок соблазн этим и ограничиться, пропустив тем самым то, что нейросеть найти не могла по определению...