Почему одной 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-флаги + текстовые флаги → дедупликация │ │ │ └─────────────────────────────────────────────────────────────────┘
Текстовый детектор проверяет асимметрию численно:
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 отбрасывается.
|
Детектор |
Что ловит |
Пример |
|---|---|---|
|
|
Соотношение пеней ≥ 3:1 |
1% vs 0.1% = 10:1 |
|
|
Пеня ≥ 1%/день (365%/год) |
«1% за каждый день» |
|
|
Противоречия между пунктами |
«только самовывоз» vs «доставка» |
|
|
Отсутствие обязательных условий |
Нет срока гарантии |
|
|
Асимметрия расторжения |
Одна сторона — в любой момент |
|
|
Размытые формулировки |
«по согласованию сторон» |
|
|
Молчание = согласие |
«при отсутствии возражений...» |
|
|
Сокращённые сроки претензий |
3 дня вместо 30 |
YandexGPT хорош, но у Claude оказался лучше «юридический reasoning». Прогнал один и тот же договор поставки через обе модели:
|
Метрика |
YandexGPT |
Claude |
|---|---|---|
|
Найдено рисков |
11 |
27 |
|
CRITICAL |
2 |
5 |
|
HIGH |
4 |
12 |
|
MEDIUM |
5 |
10 |
Claude нашёл в 2.5 раза больше рисков на том же договоре.
1. Неустойка 1%/день за невывоз товара
В договоре:
YandexGPT увидел cap «не более 2%» и решил, что всё ок.
Claude понял: 1%/день = 365%/год — кабальное условие по ст. 333 ГК РФ, даже с cap'ом.
2. Противоречие между пунктами
П. 4.4: «Поставка осуществляется только путём самовывоза»
П. 6.2: «Поставщик организует доставку транспортной компанией»
YandexGPT не заметил. Claude флагнул как противоречие.
3. Антикоррупционная оговорка без адекватного срока
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 бесплатных анализа при регистрации. Можно сравнить «Эконом» и «Глубокий анализ» на своём договоре.
Вопросы про архитектуру, промпты, детекторы — в комментариях.
Источник


