Конвейер генерации
Конвейер — это правило обработки одной карточки. Он берёт её данные, подставляет их в промпт, отправляет запрос в нейросеть, проверяет ответ и записывает его в выбранное поле.
Общая картина
Поток обработки одной карточки:
Данные карточки → Промпт → Запрос в нейросеть → Очистка → Проверки → Запись в поле
Конвейер собирается из шагов. Один шаг — одна задача, один запрос к модели, одно целевое поле. Нужны два поля — два шага.
Шаги идут строго по порядку, ветвлений и условий между шагами нет. Разные сценарии разводятся по разным профилям.
Анатомия шага
Каждый шаг — это четыре вкладки настроек:
- Промпт и модель
- Целевое поле
- Постобработка
- Валидация
Кроме того, у шага есть собственные таймаут и число попыток, а сам шаг можно временно выключить, не удаляя настройку, — удобно, когда нужно прогнать конвейер без дорогого шага.
Промпт и модель
Здесь задаются системный и пользовательский промпт, переопределение модели для конкретного шага (по умолчанию берётся модель профиля), тоггл веб-поиска и условные блоки для опциональных кусков промпта.
Плейсхолдеры: подстановка данных карточки
В промпте вместо конкретных значений стоят подстановки — модуль заменяет их данными обрабатываемой карточки:
Напиши описание товара
{{Наименование}}бренда{{Бренд}}с характеристиками{{Материал}}
Плейсхолдеры вставляются не вручную, а по клику из поиска: модуль показывает человекопонятные названия полей («Наименование», а не NAME) и группирует их:
- стандартные поля карточки,
- свойства инфоблока и значения справочников,
- SEO-шаблоны,
- раздел карточки,
- результаты предыдущих шагов.
Условные блоки (IF)
Условный блок показывает фрагмент промпта, только если поле заполнено. Без него у товара без бренда в промпт уедет висящее «Бренд: », и модель начнёт додумывать.
С условным блоком фрагмент просто исчезает — промпт остаётся чистым для любой карточки, независимо от полноты её данных.
Целевое поле
Определяет, куда писать ответ и в каком режиме. Записать результат можно в:
- стандартные поля карточки,
- свойства инфоблока,
- SEO-шаблоны: META Title / Description / Keywords, заголовок страницы, ALT / TITLE картинок.
Режимы записи:
| Режим | Что делает | Когда нужен |
|---|---|---|
| Перезаписать | Заменяет текущее значение | Полное обновление контента |
| Дописать | Добавляет к существующему тексту | Дополнение готового описания |
| Заполнить только пустое | Не трогает заполненные поля | Страховка ручного контента |
Для HTML-полей выбирается формат текста (авто / текст / HTML). Здесь же выставляется флаг «Требует модерации» — см. модерацию на дашборде.
Постобработка
Автоматическая очистка ответа от технической обёртки — до проверок и записи:
- снимается markdown-обрамление кода (
```html,```); - вытаскивается содержимое
<body>, если модель вернула целую HTML-страницу; - удаляются лишние кавычки вокруг ответа.
Несколько постпроцессоров применяются по порядку. Благодаря этому промпт не приходится обвешивать оговорками «не оборачивай в markdown» — модель всё равно периодически их игнорирует.
Валидация
Проверки ответа перед записью. Забракованный ответ в инфоблок не попадает никогда.
| Проверка | Что контролирует |
|---|---|
| Длина | Количество символов и количество слов — минимум и максимум |
| Формат | Текст, HTML или JSON |
| Язык | Доля букв нужного алфавита в ответе — ловит ответ не на том языке |
| Запрещённые фразы | Ответ не должен содержать указанные фразы |
| Обязательные фразы | Ответ должен содержать указанные фразы |
Проверки работают по логике «И». Настраивается действие при провале: повторить / принять / пропустить шаг / прервать конвейер.
Если шаг прерывает конвейер, в поля карточки не записывается ничего — включая результаты успешно отработавших предыдущих шагов. Это сделано намеренно: полкарточки, заполненной наполовину, хуже пустой.
Цепочка шагов
Шаги выполняются по порядку и образуют цепочку: каждый последующий шаг видит ответы всех предыдущих и может подставить их в промпт плейсхолдером «Результаты шагов».
Типовая цепочка:
- Описание товара — по полям и свойствам карточки.
- Короткий анонс — по описанию из шага 1.
- META Title и Description — по готовому описанию.
Каждый следующий шаг работает с готовым текстом, а не с исходной карточкой, — платить за повторную отправку всей карточки не нужно.
Проверка настроек конвейера
Модуль проверяет конвейер до первого платного запроса и находит:
- пустой промпт у активного шага,
- ссылку на несуществующий шаг в плейсхолдере «Результаты шагов»,
- ссылку на выключенный шаг.
Та же проверка выполняется автоматически перед каждым запуском очереди — ошибка конфигурации не превращается в тысячу оплаченных бессмысленных запросов.
Устойчивость к сбоям
Модуль различает временные и фатальные проблемы провайдера:
- Временная ошибка (провайдер недоступен, перегрузка, таймаут) — шаг повторяется с растущей паузой в пределах заданного числа попыток.
- Фатальная ошибка (неверный ключ, закончились деньги) — очередь останавливается. Это защищает от тысячи одинаковых отказов и от неожиданного счёта.
Остаток на балансе провайдера проверяется перед первым платным запросом.
Безопасный старт
Для любого шага можно включить флаг «Требует модерации». Результат не запишется в карточку сразу, а ляжет в очередь подтверждения на дашборде, где его можно принять, принять с правкой или отклонить с причиной.
Перед массовой генерацией отладьте конвейер на одной карточке в разделе Тестирование — это прогон без записи в базу, на котором видно итоговый промпт, ответ модели и стоимость.