ИИ для работы с договорами: где помогает, где опасен
Извлечение условий работает, оценка рисков — нет. Разбираю, чем эти задачи отличаются, какие поля извлекаются надёжно и почему пустое значение важнее точности.
Короткий ответ: разделяйте две задачи, которые обычно смешивают.
Извлечение — найти в договоре то, что там написано: срок, сумму, условия расторжения, ответственность. Проверяется сверкой с текстом за секунды. Работает.
Оценка — сказать, выгодно ли условие, чем оно грозит, стоит ли подписывать. Проверяется юристом за то же время, что заняло бы чтение. Не работает — не потому, что модель глупа, а потому что выигрыша нет.
Смешение этих двух и даёт разочарование: систему делали под первое, ждали второго.
Что извлекается надёжно
Реквизиты сторон, даты, суммы и валюта, срок действия и порядок продления, условия расторжения, ответственность и неустойки, применимое право, подсудность.
Общее у них: это факты, записанные в тексте. Модель не выводит их, а находит — и потому ошибается редко, а ошибку легко поймать.
Ключевое требование — цитата рядом с каждым полем. Не «срок: 12 месяцев», а «срок: 12 месяцев, п. 4.1: „Договор действует в течение двенадцати месяцев с даты подписания”». Тогда проверка превращается в сверку двух строк вместо чтения договора.
Почему пустое значение важнее точности
Самая дорогая ошибка в этой задаче — не неверное значение, а выдуманное.
Если в схеме есть обязательное поле «дата пролонгации», а в договоре её нет, модель обязана что-то туда положить. Она положит правдоподобное: дату, похожую на настоящую, в правильном формате, в нужной колонке. Отличить её от верной невозможно, не открыв договор.
Лечится это на уровне схемы, а не промпта: каждое поле, которого может не быть, должно допускать пустое значение, и инструкция должна прямо говорить, что пусто предпочтительнее догадки. Разбирал подробно в «Формат ответа — это интерфейс».
Второй уровень защиты — та же цитата. Поле без цитаты автоматически отбраковывается: если модель не смогла показать, откуда взяла, значит не нашла.
Сравнение с эталоном
Задача, которая выглядит проще, чем оказывается: сверить присланный договор с вашей типовой формой и показать отличия.
Обычный текстовый дифф здесь не работает — стороны переписывают формулировки, не меняя смысла, и вы получаете сотню расхождений, из которых значимы три. Полезнее сравнивать извлечённые условия, а не текст: срок был 12 месяцев, стал 6; неустойка была 0,1%, стала 0,5%.
То есть та же операция извлечения, выполненная дважды. И проверяется так же — цитатами с обеих сторон.
Про персональные данные и тайну
Договор почти всегда содержит и то, и другое: ФИО подписантов, реквизиты, условия, составляющие коммерческую тайну.
Отправка в зарубежный облачный сервис — трансграничная передача персональных данных со своими требованиями, а для сведений, составляющих тайну, — ещё и вопрос режима её охраны. Практическая граница здесь та же: что нельзя отправлять наружу, и решается это до запуска, а не после.
Для этой задачи обезличивание работает хуже обычного: имена сторон часто и есть предмет извлечения. Поэтому договоры — как раз тот случай, где открытая модель внутри периметра выигрывает не по цене, а по допуску.
Условие несогласия
Если договоров десяток в год и все типовые, автоматизация не окупится: юрист прочитает быстрее, чем вы настроите схему.
Порог — там, где однотипных договоров становится достаточно, чтобы извлечение полей превратилось в рутину, а рутина — в источник ошибок от усталости.
Чего я делать не стал бы
Не стал бы просить модель «оценить риски договора». Ответ будет гладким, правдоподобным и непроверяемым — худшее сочетание для документа, за который отвечают.
Не стал бы принимать поле без цитаты. Это единственная механическая проверка, которая тут есть, и отказываться от неё ради удобства значит остаться без проверки вообще.
Не стал бы строить сравнение на текстовом диффе. Он покажет шум и спрячет существенное — ровно наоборот от того, что нужно.
Открытый вопрос
Извлечение надёжно, пока условие записано в одном месте. Но существенное в договорах часто распределено: срок в одном пункте, порядок продления в другом, а исключение из него — в приложении.
Собрать такое в одно поле модель берётся охотно и ошибается тихо: ответ выглядит полным, а исключение потеряно. Приёма, который надёжно это ловит, я не знаю; единственное, что работает, — требовать цитаты из всех мест, где условие упоминается, и смотреть, когда их оказалось меньше, чем ожидал юрист.