Сценарий
Decisions API для маршрутизации запросов
Маршрутизация — это конечное решение: какая очередь, какой приоритет, человек или автоматика. Вызов решения возвращает выбор и вероятность каждого варианта — уверенные кейсы назначайте автоматически, остальные отправляйте на триаж.
Обновлено
Почему маршрутизация подходит идеально
Маршрутизация задаёт конечный вопрос — какая из моих очередей за это отвечает — и именно на него эндпоинт решений отвечает нативно. Не нужно вытаскивать имя очереди из сгенерированного текста или промпт-инженерить против пятой выдуманной очереди.
Один вызов может нести несколько вопросов по одному тикету: очередь, срочность и флаг «нужен человек» решаются за один round trip за 1 кредит.
- Назначение очереди: billing, platform, account, other
- Приоритет: упорядоченный score от низкого до блокирующего
- Эскалация: noul-проверка, должен ли человек посмотреть первым
Пишите criteria как описания очередей
Каждый вариант вопроса choice несёт короткое описание того, что туда относится. Пишите их как бриф новому аналитику триажа — эти описания и есть ваша политика маршрутизации.
Всегда добавляйте вариант 'other' или 'unclear'. Честный выход не даёт неоднозначным тикетам уверенно попадать не в ту очередь.
Один вызов: очередь плюс срочность
Отправьте текст тикета как state и задайте два вопроса: choice за ответственную команду и score за срочность. В ответе будут answers.team.choice, answers.urgency.score и вероятность каждого варианта в обоих.
Choice + score в одном запросе
// Route a ticket: ask for team + urgency in one call,
// then gate the automation on confidence.
const res = await fetch("https://decisions-api.net/api/v1/decisions", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "decisions-1",
state: "Payments fail with a 500 since your last deploy. Enterprise plan customer.",
questions: {
team: {
type: "choice",
instructions: "Which queue should handle this request?",
criteria: {
payments: "Billing, charges, or payment failures.",
platform: "Deploys, infrastructure, or API errors.",
account: "Login, SSO, or permissions.",
other: "Unclear or out of scope.",
},
},
urgency: {
type: "score",
instructions: "How urgent is this for the customer?",
criteria: ["can wait", "normal queue", "needs attention today", "blocking revenue"],
},
},
}),
});
const { answers } = await res.json();
// Illustrative response: answers.team -> { choice: "payments", confidence: 0.84 }
// answers.urgency -> { score: 3, confidence: 0.79 } (0 = lowest level)
if (answers.team.confidence >= 0.8 && answers.team.choice !== "other") {
assignToQueue(answers.team.choice, { priority: answers.urgency.score });
} else {
assignToQueue("human_triage", { note: "low confidence" });
}Автоназначение только при высокой confidence
Распределение вероятностей делает автоматизацию маршрутизации безопасной. Рабочее начальное значение: применяйте маршрутизацию при confidence от 0,8, остальное — в очередь ручного триажа.
Порог подбирайте по своей истории тикетов — правильное значение зависит от цены ошибочной маршрутизации относительно задержанной.
Маршрутизация запросов между моделями
Тот же приём выбирает, какая модель должна ответить. Задайте вопрос choice с вариантами вроде fast_model (короткие фактические или форматирующие запросы), strong_model (многошаговые рассуждения, код, длинный контекст) и human (юридические вопросы, возвраты или всё, что модель не должна решать в одиночку). Каждый вариант возвращается с вероятностью — видно, насколько спорным был выбор.
Гейт такой же: при низкой уверенности отправляйте запрос человеку или на более безопасный путь, а не доверяйте верхнему варианту — вероятность второго варианта показывает, насколько близким было решение.
Стоимость и объёмы
Один успешный вызов стоит 1 кредит независимо от того, 1 или 6 вопросов в нём. Для бэклога исторических тикетов batch-инструмент в панели прогонит ту же форму запроса по CSV или JSONL.
Частые вопросы
На сколько очередей можно маршрутизировать?
Вопрос choice принимает от 2 до 8 вариантов. Если очередей больше, разбейте решение: первый вызов выбирает департамент, второй — команду внутри него.
Можно ли оценить срочность в том же вызове?
Да — добавьте вопрос score с упорядоченными описаниями уровней. В одном вызове до 6 вопросов, так что очередь, срочность и флаг эскалации решаются вместе.
Что с пограничным тикетом?
Ответ содержит вероятность каждого варианта. Когда два первых близки — скажем, 0,45 против 0,42 — считайте тикет неоднозначным и отправляйте на ручной триаж, а не доверяйте победителю.
Работает ли с тикетами не на английском?
Пишите state и описания вариантов на языке ваших тикетов, а ключи вариантов оставляйте в ASCII — код маршрутизации останется читаемым.
Может ли он выбирать, какой LLM отвечает на запрос?
Да — сделайте модели вариантами вопроса choice и опишите, в чём сильна каждая. Случаи с низкой уверенностью маршрутизируйте в более сильную модель.
Маршрутизируйте тикет сейчас
Одно бесплатное пробное решение для новых посетителей — вставьте настоящий тикет в песочницу и посмотрите вероятности.