Генерація договору через сирий LLM без шаблону — це як писати код без лінтера: працює, але в продакшені вилізуть галюцинації. Номер договору — 7, дата — 30 лютого, підпис — не та сторона. Реальна історія проекту, де ми переробляли таке рішення. Для запобігання таким проблемам використовуємо гібридну архітектуру: детерміновані шаблони для реквізитів + LLM для варіативного контенту. Нижче — як ми це робимо.
Як обрати підхід до генерації?
| Підхід | Швидкість | Точність реквізитів | Гнучкість тексту |
|---|---|---|---|
| Шаблонізація (Jinja2 + python-docx) | <1 сек | 100% | Низька |
| LLM-генерація за структурою | 5-15 сек | 90-95% (ризик галюцинацій) | Висока |
| Гібридний (шаблон + LLM) | 1-3 сек | 99% (детерміновані поля) + LLM для блоків | Середня |
Гібридний підхід в 3 рази швидший за повну LLM-генерацію при збереженні точності реквізитів — саме його ми рекомендуємо для більшості задач.
Чому гібридна архітектура ефективніша?
Фіксуємо структуру документа (заголовки, реквізити, підписи) через шаблон з підстановкою змінних. А «живі» текстові блоки (предмет договору, зобов'язання) генеруємо через LLM. Так ми уникаємо галюцинацій у критичних полях і зберігаємо гнучкість для варіативного контенту. Економія часу — до 60% на підготовці типових документів порівняно з ручним введенням. За даними дослідження Gartner, гібридні системи скорочують кількість помилок у документах на 70%.
Як реалізувати гібридну генерацію на Python?
Використовуємо зв'язку python-docx + Jinja2 для шаблонів і LangChain для виклику LLM. Приклад коду нижче.
from docx import Document from docx.shared import Pt import jinja2 def generate_contract(template_path: str, data: ContractData) -> bytes: doc = Document(template_path) for paragraph in doc.paragraphs: for key, value in data.dict().items(): if f"{{{{{key}}}}}" in paragraph.text: for run in paragraph.runs: run.text = run.text.replace(f"{{{{{key}}}}}", str(value)) subject_section = find_section(doc, "Предмет договору") generated_subject = llm.generate( f"Напиши розділ 'Предмет договору' для {data.contract_type}:\n{data.subject_description}" ) replace_section_content(subject_section, generated_subject) from io import BytesIO buffer = BytesIO() doc.save(buffer) return buffer.getvalue() Що таке RAG і навіщо він потрібен?
Для документів, що потребують актуальних даних (наприклад, посилань на закони), підключаємо RAG (Retrieval-Augmented Generation). Векторизуємо нормативні акти в ChromaDB, при генерації шукаємо релевантні шматки і подаємо їх у контекст LLM. Це знижує ймовірність галюцинацій щодо юридичних норм.
Чому важливе версіонування шаблонів?
Шаблони документів — такий же код, як і все інше. Без версіонування ви не зможете відкотити зміни після помилки юриста. Використовуємо Git для шаблонів + семантичне версіонування (semver). Кожен згенерований документ містить ID версії шаблону.
Кейс: договір поставки з гібридною генерацією
В одному проекті вимагалося автоматизувати договори поставки для рітейлера з 500 контрагентами. Ручна підготовка забирала у юристів до 2 годин на договір. Ми впровадили гібридну схему: 70% полів (реквізити, терміни, суми) заповнювалися з CRM через Jinja2, а розділи «Порядок поставки» та «Відповідальність сторін» генерувалися через GPT-4 з RAG-підкачкою з внутрішньої бази прецедентів. У результаті час підготовки скоротився до 5 хвилин на договір, а кількість повернень на доопрацювання впала з 30% до 2%.
Чек-лист для впровадження: 5 кроків
- Аудит 10 типових документів — виявлення змінних і шаблонних блоків.
- Проектування шаблонів — створення структури на Jinja2 і python-docx.
- Реалізація Python-модуля — кодинг з інтеграцією LangChain і LLM.
- Юридична валідація — перевірка кожного шаблону юристом.
- Інтеграція з CRM — налаштування автоматичного запуску генерації.
Порівняння точності для різних типів документів
| Тип документа | Точність шаблону | Точність гібриду |
|---|---|---|
| NDA | 100% | 100% |
| Договір поставки | 70% (тільки реквізити) | 95% |
| Кадровий наказ | 100% | 100% |
Що входить у роботу
- Проектування та реалізація шаблонів (python-docx/Jinja2).
- Інтеграція з LLM (GPT-4, Claude) через LangChain.
- RAG-модуль для юридичних норм (опціонально).
- Версіонування шаблонів у Git.
- Тестування на 100+ сценаріях.
- Контейнеризація та деплой (Docker, Kubernetes).
- Навчальні матеріали та підтримка.
Процес роботи
- Аудит: аналізуємо 5-10 типових документів, виявляємо змінні та шаблонні блоки.
- Проектування: створюємо структуру шаблонів, обираємо LLM та векторну базу (якщо потрібен RAG).
- Реалізація: кодинг на Python, тестування на реальних даних, A/B-порівняння з ручним введенням.
- Тестування: перевірка на 100+ варіантах даних, валідація юристом.
- Деплой: контейнеризація (Docker), розгортання у вашій інфраструктурі (on-prem або cloud).
Скільки часу займає впровадження?
- Простий шаблон (один тип документа) — від 3 до 5 днів.
- Комплексне рішення (3+ типи документів, інтеграція з CRM) — від 2 до 4 тижнів.
- Вартість розраховується індивідуально після аудиту.
Більше 5 років на ринку автоматизації документообігу, 50+ успішних проектів. Отримайте консультацію інженера для вашого кейсу. Ми гарантуємо якість — кожен проект проходить обов'язкову юридичну валідацію. Замовте впровадження AI-генерації документів, і ви скоротите витрати на підготовку документації.
Типові помилки при AI-генерації документів
- Подання всього тексту LLM без шаблону — високий ризик галюцинацій у реквізитах.
- Ігнорування RAG для юридичних норм — договір може посилатися на застарілі закони.
- Відсутність версіонування шаблонів — неможливо відкотити помилкову зміну.
- Відсутність постобробки — дати, суми та підписи повинні перевірятися автоматично.
Наші інженери допомагають уникнути цих помилок на етапі проектування. Звертайтеся за консультацією.







