Реализация AI-сравнения версий документов (Document Diff)
AI Document Diff показывает значимые изменения между версиями документа — не просто текстовые отличия (как diff), а семантические: что изменилось по смыслу, насколько это существенно для юридических или бизнес-обязательств.
Разница между текстовым и семантическим diff
Обычный diff (difflib, python-docx compare) показывает каждое изменённое слово. При крупном переформатировании или перестановке параграфов — генерирует тысячи «изменений», большинство из которых косметические.
Семантический diff отвечает на вопросы:
- Изменились ли обязательства сторон?
- Изменилась ли сумма или порядок оплаты?
- Появились ли новые ограничения или обязанности?
- Какие изменения требуют повторного согласования?
Реализация
class DocumentChange(BaseModel):
type: Literal["added", "removed", "modified"]
section: str
old_text: str | None
new_text: str | None
significance: Literal["critical", "material", "minor"]
explanation: str
def compare_document_versions(v1_text: str, v2_text: str) -> list[DocumentChange]:
prompt = f"""Сравни две версии договора.
Выяви все изменения, сгруппируй по разделам.
Для каждого изменения укажи:
- Тип: добавлено / удалено / изменено
- Раздел договора
- Значимость: критическое (меняет права/обязанности) / существенное / минорное (редактура)
- Объяснение, что изменилось по смыслу
Версия 1:
{v1_text}
Версия 2:
{v2_text}"""
return llm.parse(prompt, response_format=list[DocumentChange])
UI для отображения
Визуализация изменений: side-by-side с цветовой кодировкой (красный — удалено, зелёный — добавлено, жёлтый — изменено). Фильтр по значимости: показывать только критические и существенные, скрывать редактурные правки.
Применение: юридический review новой версии контракта, согласование изменений в регламентах, ревизия технической документации.







