YandexGPT и n8n: классификация заявок по теме, срочности и SLA ¶
Обновлено: 2026-05-30
Импортируйте workflow, замените credentials и прогоните тестовый payload до включения production.
Проблема: входящие заявки из сайта, почты, Telegram и CRM смешиваются в одной очереди. Оператор вручную решает, где оплата, где техническая ошибка, где продажа, а срочные обращения теряются среди обычных вопросов.
Решение: n8n принимает текст заявки, нормализует его, вызывает YandexGPT classifier с понятными labels, проверяет confidence и маршрутизирует обращение в CRM, Telegram или helpdesk. Низкая уверенность уходит человеку на review.
Проблема: почему ручная сортировка заявок ломает SLA ¶
Классификация заявок кажется простой, пока поток небольшой. Когда появляются обращения об оплате, технические ошибки, возвраты, партнёрские запросы и спам, ручная сортировка начинает съедать время первой линии поддержки.
YandexGPT-based classifier полезен тем, что возвращает класс и confidence, а n8n может сразу применить бизнес-правило: отправить срочную оплату в отдельный канал, техническую ошибку — инженеру, а низкую уверенность — человеку. Важно заранее задать понятные labels, а не просить модель “сама понять тему”.
Архитектура workflow YandexGPT classifier через n8n ¶
| Нода | Роль | Что проверить |
|---|---|---|
| Webhook input | принимает текст заявки и source_id | канал, клиент, язык, статус |
| Sanitize text | чистит HTML и маскирует лишние данные | нет токенов и паролей в prompt |
| Build classifier request | собирает labels и taskDescription | 2–20 классов, понятные названия |
| Call YandexGPT classifier | вызывает Text Classification API | IAM token, folder/modelUri, timeout |
| Route by confidence | выбирает очередь и SLA | threshold, unknown/review branch |
| Update CRM/helpdesk | записывает label и next_action | история решения и audit_key |
Ключевой элемент — не сама AI-модель, а routing policy. Даже хороший classifier должен иметь ветку `review`, если confidence ниже порога или текст не похож на рабочую заявку.
Контракт входных данных для классификации ¶
{
"ticket_id": "sup-2048",
"source": "telegram",
"text": "Оплата прошла, чек есть, но доступ к курсу не открылся. Заказ 10492, срочно помогите.",
"labels": [
"payment_issue",
"technical_bug",
"sales_question",
"refund_request",
"spam"
],
"confidence_threshold": 0.72,
"customer": {
"crm_id": "contact-552",
"plan": "pro"
}
}
Labels должны быть бизнесовыми, а не техническими. `payment_issue` полезнее, чем `class_1`: оператор и CRM сразу понимают, что делать с результатом.
Code Node: labels, confidence threshold и route key ¶
const src = $json.body ?? $json;
const text = String(src.text ?? '').replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim();
if (text.length < 10) throw new Error('ticket text is too short');
if (text.length > 6000) throw new Error('ticket text is too long for classifier request');
const labels = Array.isArray(src.labels) && src.labels.length ? src.labels : [
'payment_issue', 'technical_bug', 'sales_question', 'refund_request', 'spam'
];
if (labels.length < 2 || labels.length > 20) throw new Error('labels count must be between 2 and 20');
const threshold = Number(src.confidence_threshold ?? 0.72);
return [{
json: {
ticket_id: String(src.ticket_id ?? `ticket-${Date.now()}`),
classifier_body: {
modelUri: process.env.YANDEXGPT_CLASSIFIER_MODEL_URI,
taskDescription: 'Классифицируй входящую заявку поддержки по основной теме. Верни наиболее подходящий label.',
labels,
text
},
routing_policy: {
confidence_threshold: threshold,
review_label: 'human_review',
routes: {
payment_issue: 'support-payments-high-priority',
technical_bug: 'support-tech',
sales_question: 'sales-inbox',
refund_request: 'billing-review',
spam: 'closed-spam'
}
},
audit_key: `yandexgpt-classifier:${src.ticket_id ?? Date.now()}`
}
}];
Почему нужен порог confidence
Классификатор может выбрать ближайший label даже для неоднозначной заявки. Порог уверенности отправляет сомнительные обращения человеку, сохраняет SLA и снижает риск неправильной маршрутизации.
Готовый workflow JSON: скачать и импортировать ¶
Скачать готовый workflow JSON Скачать тестовый payload
{
"name": "Nodbot - YandexGPT ticket classifier",
"nodes": [
{
"name": "Webhook input",
"type": "n8n-nodes-base.webhook",
"purpose": "Принять заявку из CRM, сайта или Telegram"
},
{
"name": "Sanitize and build labels",
"type": "n8n-nodes-base.code",
"purpose": "Очистить текст и собрать classifier request"
},
{
"name": "Call YandexGPT classifier",
"type": "n8n-nodes-base.httpRequest",
"purpose": "Вызвать Text Classification API"
},
{
"name": "Route by confidence",
"type": "n8n-nodes-base.code",
"purpose": "Выбрать очередь по label и confidence"
},
{
"name": "Update CRM or helpdesk",
"type": "n8n-nodes-base.httpRequest",
"purpose": "Записать label, SLA и комментарий"
},
{
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"purpose": "Вернуть route_key и статус"
}
],
"connections": "Webhook input → Sanitize and build labels → Call YandexGPT classifier → Route by confidence → Update CRM or helpdesk → Respond to Webhook"
}
Пошаговая настройка YandexGPT, n8n и CRM-маршрутизации ¶
- Создайте модель/доступ YandexGPT classifier и сохраните IAM token в n8n credentials или ENV.
- Опишите 2–20 labels понятными бизнес-названиями.
- Импортируйте workflow и задайте `YANDEXGPT_CLASSIFIER_MODEL_URI`.
- Настройте routes: label → очередь CRM/helpdesk/Telegram.
- Добавьте ветку human review для низкого confidence и неизвестных текстов.
Тесты перед production и проверка классов ¶
curl -X POST "https://YOUR-N8N-DOMAIN/webhook/yandexgpt-classifier" \
-H "Content-Type: application/json" \
--data @yandexgpt-classifier-payload.json
- Проверьте типовые заявки по каждому label.
- Отправьте смешанную заявку: оплата + техническая ошибка.
- Проверьте короткий бессмысленный текст и спам.
- Уменьшите threshold и посмотрите, не падает ли качество маршрутизации.
- Сравните AI label с ручной разметкой на 50–100 исторических обращениях.
Production-риски AI-классификации заявок ¶
- Labels слишком похожи. Модель путает классы, если названия не отражают бизнес-действие.
- Нет human review. Низкая уверенность всё равно уходит в неверную очередь.
- PII в prompt. Маскируйте пароли, токены и лишние персональные данные.
- Нет контрольной выборки. Нельзя оценить качество classifier до production.
- Маршрут меняет SLA без аудита. Записывайте label, confidence, modelVersion и routing decision.
Полезные ссылки и смежные workflow ¶
См. также GigaChat support draft, Telegram AI bot with human approval и OpenRouter fallback. Официальные документы: YandexGPT classifiers, prompt-based classifier и n8n HTTP Request.
Критерии готовности ¶
- Labels согласованы с владельцами поддержки и продаж.
- Есть threshold и ветка human_review для сомнительных случаев.
- Маршрутизация записывает label, confidence, modelVersion и audit_key.
- Качество проверено на исторической выборке, а не только на одном тесте.
- Ошибки YandexGPT API не меняют статус заявки молча.
Nodbot настроит YandexGPT classifier, labels, threshold, human review, CRM routing, audit log и контроль качества на исторических обращениях.
Обсудить классификацию заявок