Проще говоря, enum помогает системе не гадать, что имела в виду модель или пользователь. Если AI должен классифицировать обращение, лучше попросить его выбрать категорию из списка, чем написать произвольную формулировку. Тогда backend, CRM, таблица или workflow смогут надежно обработать результат.
В AI-приложениях enum часто используют в JSON Schema, structured output, tool calling, классификации, маршрутизации тикетов, lead scoring и статусах workflow. Например, поле `priority` может принимать только `low`, `medium`, `high`, `critical`, а поле `intent` — только заранее описанные намерения.
Enum не решает смысловую задачу полностью. Модель все еще может выбрать неверный вариант, если список плохой, категории пересекаются или не хватает варианта `other`. Поэтому enum лучше сочетать с понятными описаниями значений, примерами, schema validation и human review для спорных случаев.
Примеры
- В JSON Schema поле `status` принимает только `draft`, `published` или `archived`.
- AI-классификатор выбирает priority из enum: `low`, `medium`, `high`, `critical`.
- Tool calling использует enum для параметра `channel`: `email`, `telegram`, `whatsapp`.
- Если модель вернула значение вне списка, schema validation отклоняет результат.
- Для спорных обращений в enum добавляют `other`, чтобы модель не выбирала случайную неподходящую категорию.
Где используется
- Structured output и JSON Schema
- Классификация обращений, писем, лидов и документов
- Tool calling и function calling с контролируемыми параметрами
- Статусы workflow, задач, сделок и заявок
- Маршрутизация тикетов и intent detection
- Снижение ошибок формата в no-code и low-code автоматизациях
- Валидация ответа модели перед записью в CRM, API или таблицу
Связанные термины
Частые вопросы
Зачем enum нужен в AI-системах?
Enum ограничивает ответ модели понятным списком значений. Это делает результат проще валидировать, маршрутизировать и передавать в CRM, API, таблицу или workflow.
Чем enum отличается от обычной строки?
Обычная строка может быть любой. Enum разрешает только конкретные значения из списка, поэтому снижает хаос в форматах и названиях категорий.
Нужно ли добавлять вариант other?
Часто да. Если подходящего значения нет, `other` или `unknown` лучше, чем принуждать модель выбирать неверную категорию из списка.
Какие ошибки бывают с enum?
Слишком похожие варианты, отсутствие описаний, нет fallback-значения, смешение языков, слишком большой список и значения, которые backend понимает иначе, чем модель.