Реализация системы генерации текста по шаблону
Генерация текста по шаблону — создание документов, где структура фиксирована, а содержание заполняется динамически из данных или через LLM. Коммерческие предложения, договоры, отчёты, уведомления — миллиарды документов в год создаются именно так.
Два подхода к шаблонизации
Детерминированные шаблоны (Jinja2, Word-шаблоны): простая подстановка переменных. Предсказуемо, аудируемо, нет галлюцинаций. Подходит для юридически значимых документов.
from jinja2 import Template
template = Template("""
Уважаемый(ая) {{ client_name }},
Ваш заказ #{{ order_id }} на сумму {{ amount | format_currency }}
готов к получению. Адрес: {{ address }}.
{% if special_note %}
Примечание: {{ special_note }}
{% endif %}
""")
text = template.render(client_name="Иван Петров", order_id="12345", ...)
LLM-based генерация по шаблону: структура задана через промпт, LLM заполняет содержание с адаптацией к контексту. Подходит для маркетинговых текстов, персонализированных писем.
def generate_from_template(data: dict, template_type: str) -> str:
prompt = f"""Создай {template_type} на основе данных:
{json.dumps(data, ensure_ascii=False, indent=2)}
Требования:
- Деловой стиль
- Длина: 3–5 абзацев
- Обязательно упомяни: {', '.join(data.keys())}"""
return llm.complete(prompt)
Гибридный подход
Лучшее от обоих: Jinja2 для структуры и обязательных данных, LLM для «живых» текстовых блоков:
[Заголовок: {{client_name}}, {{date}}] ← детерминированный
[Вводный параграф: LLM генерирует приветствие под контекст клиента]
[Таблица данных: {{products_table}}] ← детерминированный
[Заключение: LLM генерирует персонализированный призыв]
[Подпись: {{manager_name}}, {{company}}] ← детерминированный
Контроль качества
Валидация обязательных полей: после генерации проверяется наличие всех ключевых данных (имя, сумма, дата) через regex или LLM-валидацию.
Consistency check: имя клиента должно совпадать во всём документе, суммы в словах и цифрах должны совпадать.
A/B тестирование шаблонов: разные варианты отправляются разным сегментам, конверсия сравнивается.
Для production: версионирование шаблонов в Git, отдельный review-процесс для изменений в юридических документах.







