Почему одной LLM недостаточно, как двухслойная валидация ловит ошибки модели, и сколько бизнес экономит на проверке договоров.
Что было в первой версии
Пару недель назад я рассказывал, как построил модульную систему промптов для YandexGPT. 32 тематических промпта, детекторы паттернов, калибровка по рынку. Система работала, находила риски, но вылезли проблемы:
Ложные срабатывания — LLM иногда «видела» асимметрию там, где её не было
Пропуски — некоторые паттерны (типа «1% в день за невывоз») проскакивали мимо
Нет второго мнения — одна модель, одна точка отказа
Пример ложного срабатывания:
{ "flag": "Асимметрия пеней: Покупатель 0.1%, Поставщик 0.1%", "danger": "HIGH" }
Подождите. 0.1% vs 0.1% — это симметрия, не асимметрия. LLM ошиблась.
Решение: два слоя детекции
┌─────────────────────────────────────────────────────────────────┐ │ ДВУХСЛОЙНАЯ ДЕТЕКЦИЯ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Слой 1: LLM-анализ (YandexGPT или Claude) │ │ ├─ 32 тематических промпта │ │ ├─ Возвращает: 8 блоков анализа + redFlags[] │ │ └─ Проблема: бывают false positives │ │ │ │ Слой 2: Текстовые детекторы (код) │ │ ├─ 25+ специализированных детекторов │ │ ├─ Численная валидация (ловит ошибки LLM) │ │ └─ Ссылки на нормы права (ГК РФ, ТК РФ) │ │ │ │ Результат: LLM-флаги + текстовые флаги → дедупликация │ │ │ └─────────────────────────────────────────────────────────────────┘
Как код ловит ошибки LLM
Текстовый детектор проверяет асимметрию численно:
function detectPenaltyAsymmetry(penalties): Flag | null { const party1Rate = parseFloat(penalties.party1?.rate || '0'); const party2Rate = parseFloat(penalties.party2?.rate || '0'); if (party1Rate === 0 || party2Rate === 0) return null; const ratio = Math.max(party1Rate, party2Rate) / Math.min(party1Rate, party2Rate); if (ratio < 3) return null; // Соотношение < 3:1 — не флагуем return { flag: `Асимметрия пеней ${ratio.toFixed(1)}:1`, danger: ratio >= 10 ? 'CRITICAL' : ratio >= 5 ? 'HIGH' : 'MEDIUM' }; }
Если LLM сказала «асимметрия», а код посчитал ratio < 3 — флаг LLM отбрасывается.
22 текстовых детектора
Детектор | Что ловит | Пример |
|---|---|---|
| Соотношение пеней ≥ 3:1 | 1% vs 0.1% = 10:1 |
| Пеня ≥ 1%/день (365%/год) | «1% за каждый день» |
| Противоречия между пунктами | «только самовывоз» vs «доставка» |
| Отсутствие обязательных условий | Нет срока гарантии |
| Асимметрия расторжения | Одна сторона — в любой момент |
| Размытые формулировки | «по согласованию сторон» |
| Молчание = согласие | «при отсутствии возражений...» |
| Сокращённые сроки претензий | 3 дня вместо 30 |
Почему добавил Claude
YandexGPT хорош, но у Claude оказался лучше «юридический reasoning». Прогнал один и тот же договор поставки через обе модели:
Метрика | YandexGPT | Claude |
|---|---|---|
Найдено рисков | 11 | 27 |
CRITICAL | 2 | 5 |
HIGH | 4 | 12 |
MEDIUM | 5 | 10 |
Claude нашёл в 2.5 раза больше рисков на том же договоре.
Что нашёл Claude, а YandexGPT пропустил
1. Неустойка 1%/день за невывоз товара
В договоре:
«1% от стоимости несвоевременно вывезенного Товара за каждый день просрочки, но суммарно не более 2%»
YandexGPT увидел cap «не более 2%» и решил, что всё ок.
Claude понял: 1%/день = 365%/год — кабальное условие по ст. 333 ГК РФ, даже с cap'ом.
2. Противоречие между пунктами
П. 4.4: «Поставка осуществляется только путём самовывоза»
П. 6.2: «Поставщик организует доставку транспортной компанией»
YandexGPT не заметил. Claude флагнул как противоречие.
3. Антикоррупционная оговорка без адекватного срока
«Сторона обязана ответить на запрос в течение 10 дней, иначе другая сторона вправе приостановить исполнение»
Claude отметил: 10 дней — слишком короткий срок для серьёзной проверки, риск для добросовестной стороны.
Почему такая разница?
По нашим наблюдениям:
Размер контекста — у Claude Opus контекст 200K токенов, он лучше видит связи между далёкими пунктами договора
Качество reasoning — Claude лучше «понимает» юридическую логику, а не просто матчит паттерны
Меньше галлюцинаций — реже выдумывает несуществующие риски
Стоимость токенов
Сравнение цен на 1M токенов (async режим):
Провайдер | Input | Output |
|---|---|---|
YandexGPT Lite | 100 ₽ | 100 ₽ |
YandexGPT Pro | 600 ₽ | 600 ₽ |
YandexGPT Mixed (6/9 Pro + 3/9 Lite) | ~433 ₽ | ~433 ₽ |
Claude Opus 4.5 | ~500 ₽ ($5) | ~2500 ₽ ($25) |
В «Эконом» режиме используется mixed стратегия — сложные блоки (parties, payments, penalties, Deep Risk) идут через YandexGPT Pro, простые через Lite.
Claude дороже, но разница в качестве ощутимая — особенно на сложных договорах (франшиза, IT, строительство).
Экономика для бизнеса
Зачем вообще это нужно? Вот сравнение:
Юрист | Legal Parser | |
|---|---|---|
Время | 1-5 дней | 1-2 минуты |
Стоимость | 15 000 - 50 000 ₽ | 299 - 499 ₽ |
Доступность | Рабочие часы | 24/7 |
Повторный анализ | Платно | Новый кредит |
Пример расчёта:
Компания проверяет 10 договоров в месяц.
Юрист: 10 × 20 000 ₽ = 200 000 ₽/месяц
Сервис: 10 × 499 ₽ = 4 990 ₽/месяц
Экономия: ~195 000 ₽/месяц или 2.3 млн ₽/год
Конечно, сервис не заменяет юриста полностью — сложные сделки всё равно требуют человека. Но для типовых договоров (аренда, поставка, услуги) AI справляется с первичной проверкой и выявляет большую часть рисков.
Как это работает для пользователя
Загружаете договор (PDF, DOCX, DOC)
Выбираете режим: «Эконом» (YandexGPT) или «Глубокий анализ» (Claude)
Через 1-2 минуты получаете отчёт:
Стороны и их роли
Финансовые условия
Сроки и этапы
Риски с цветовой кодировкой (CRITICAL / HIGH / MEDIUM)
Ссылки на нормы ГК РФ
Рекомендации по каждому риску
Итоги
Одной LLM недостаточно — нужна валидация кодом. Текстовые детекторы ловят ошибки любой модели.
Claude находит больше — на том же договоре в 2.5 раза больше рисков. Для сложных договоров разница критична.
Двухслойная архитектура — LLM для понимания контекста + код для численной проверки = меньше ложных срабатываний, меньше пропусков.
Экономия для бизнеса реальная — 299-499 ₽ вместо 15-50K ₽ за проверку. При 10+ договорах в месяц окупается многократно.
Попробовать: legalparser.ru — 2 бесплатных анализа при регистрации. Можно сравнить «Эконом» и «Глубокий анализ» на своём договоре.
Вопросы про архитектуру, промпты, детекторы — в комментариях.
