Choice — выбор одного варианта в Jev

Choice — один из трёх типов вопросов в модели Jev от TypeSafe. Он выбирает ровно один вариант из заданного вами набора и возвращает победителя, вероятность для каждого варианта и значение уверенности.

Choice передаёт модели именованный набор вариантов и получает обратно ровно один из них. Имена вариантов ваши, поэтому ответ — уже значение, по которому ваш код может ветвиться: нет строки, которую надо нормализовать, и нет возможности получить имя, которого вы не задавали.

Интересен не победитель, а распределение, приходящее вместе с ним. Каждый вариант получает вероятность, в сумме они дают единицу, а второе место говорит, что модель едва не выбрала.

Настоящий ответ

Отправлено в jev-1.13.0. Числа ниже — это то, что вернулось.

State

Наш вход по SSO отдаёт 500 после утреннего релиза 4.2. Никто в команде не может войти. То же самое в Chrome и Safari, на двух разных тенантах.

Вопрос

Какая команда должна взять этот тикет?

83 %
высокая
Техподдержка — 87 %, из 4 вариантов
87 % Техподдержка

Техподдержка побеждает с 87%, но Аккаунт держит 13% — и это ровно то разногласие, которое и должно быть, потому что сбой SSO действительно лежит на границе между ними. Голая метка это спрятала бы. Если ошибка маршрутизации чего-то стоит, порог надо ставить именно на этих 13%.

Запрос и ответ дословно
Запрос
{
  "state": "Our SSO login has been throwing a 500 since the 4.2 release this morning. Nobody on the team can get in. Same on Chrome and Safari, two different tenants.",
  "model": "jev-latest",
  "questions": {
    "queue": {
      "type": "choice",
      "instructions": "Which team should own this ticket?",
      "criteria": {
        "Billing": "Payments, invoices, refunds, plan changes",
        "Technical": "Bugs, outages, API errors, integrations",
        "Account": "Login, permissions, seats, data export",
        "Sales": "Pricing, upgrades, contracts"
      }
    }
  }
}
Ответ
{
  "model": "jev-1.13.0",
  "answers": {
    "queue": {
      "type": "choice",
      "choice": "Technical",
      "confidence": 0.83,
      "probabilities": {
        "Technical": 0.87,
        "Sales": 0,
        "Account": 0.13,
        "Billing": 0
      }
    }
  }
}

Что содержит ответ

type "choice"
Совпадает с типом вопроса.
choice string
Вариант с наибольшей вероятностью.
probabilities map<string, number>
Каждый заданный вами вариант с его вероятностью. В сумме — 1.
confidence number
От 0 до 1, вычисляется из того, насколько размазаны вероятности. Один ясный пик — высокая уверенность; ровное распределение — низкая.

Правила и ограничения

  • criteria сопоставляет каждому варианту описание или null, если имя говорит само за себя.
  • Choice принимает до 255 вариантов. Дайте модели весь список команд или категорий, а не выжимку: каждый вариант стоит всего несколько токенов.
  • Добавьте вариант Other или None of the above, если ваш список может покрыть не всякий вход, чтобы у модели была возможность сказать, что не подходит ничего.

Берите Choice, когда

  • Ответы — замкнутый набор, который у вас уже есть в коде: очереди, категории, статусы, следующие действия.
  • Вам нужно видеть второе место, а не только победителя.
  • Вы маршрутизируете, и стоимость разных направлений различается настолько, что хочется порог на каждый вариант.

Возьмите другое, когда

  • Варианты — упорядоченные ступени одной шкалы: низкий, средний, высокий. Score знает, что они упорядочены, и умеет попадать между ними; Choice считает их несвязанными метками.
  • Одновременно может быть верен не один вариант. Тогда задайте по Noul на вариант.

Два остальных

Задайте Choice собственному тексту

Песочница отправляет в Jev всё, что вы вставите, и рисует каждый ответ. Без аккаунта и без ключа.

Открыть песочницу