Работа с запросами

Первый вызов решения

Три шага до первого ответа Jev: да или нет, выбор и оценка в одном запросе.

Эта инструкция ведёт от нуля до первого решения заданного вида от Jev за три шага. Jev доступен как typesafe/jev-1.14. Нужен ключ AllTokens. Если перед кодом нужны понятия, начните со страницы Решения. Если Jev уже знаком и нужна полная схема запроса, перейдите к справочнику метода.

Что возвращает Jev

Jev — модель решений System One от TypeSafe. Вместо порождения текста Jev отвечает на вопросы заданного вида о состоянии, которое вы ему отправляете:

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

Поскольку ответ — значение заданного вида со связанной вероятностью, ваша реализация может ветвиться по нему напрямую. Свободного текста, который нужно разбирать, нет.

Шаг 1. Возьмите ключ

Создайте ключ в кабинете AllTokens и подставьте его в заголовок Authorization. Вызовы Jev списываются с вашего счёта по цене входа, указанной на странице модели Jev. Держите ключ на стороне сервера и не вкладывайте его в код браузера.

Шаг 2. Сделайте первый вызов

Пример ниже направляет обращение в поддержку. Он задаёт Jev три независимых вопроса в одном запросе: сообщает ли клиент о поломке (да или нет), какая команда им владеет (выбор) и насколько оно срочно (оценка).

curl https://api.alltokens.ru/api/alpha/decisions \
  -H "Authorization: Bearer $ALLTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "typesafe/jev-1.14",
    "state": {
      "customer_tier": "enterprise",
      "ticket": "После нажатия «Оплатить» страница заказа белая. Проверил в двух браузерах."
    },
    "questions": {
      "is_bug": {
        "type": "noul",
        "instructions": "Клиент сообщает о дефекте программы?",
        "criteria": {
          "true": "Клиент описывает сломанное или неожиданное поведение продукта.",
          "false": "Клиент задаёт вопрос или просит новую возможность."
        }
      },
      "team": {
        "type": "choice",
        "instructions": "Какая команда должна владеть этим обращением?",
        "criteria": {
          "payments": "Оплата, счёт или проведение платежа.",
          "frontend": "Отрисовка, вёрстка или несовместимость браузеров.",
          "account": "Вход, права или профиль."
        }
      },
      "urgency": {
        "type": "score",
        "instructions": "Насколько срочно это обращение?",
        "criteria": [
          "Можно подождать следующего выпуска",
          "Нужно исправить на этой неделе",
          "Сейчас блокирует выручку"
        ]
      }
    }
  }'

Шаг 3. Прочитайте ответы

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

{
  "id": "gen-dec-1790015143-AIaTutprXsJ5EwohRSjb",
  "model": "typesafe/jev-1.14-20260917",
  "provider": "TypeSafe",
  "answers": {
    "is_bug": { "type": "noul", "noul": 0.96 },
    "team": {
      "type": "choice",
      "choice": "payments",
      "confidence": 0.67,
      "probabilities": { "payments": 0.78, "frontend": 0.22, "account": 0 }
    },
    "urgency": {
      "type": "score",
      "score": 1.99,
      "confidence": 0.99,
      "probabilities": { "0": 0, "1": 0, "2": 1 },
      "legend": {
        "0": "Можно подождать следующего выпуска",
        "1": "Нужно исправить на этой неделе",
        "2": "Сейчас блокирует выручку"
      }
    }
  },
  "usage": { "input_tokens": 476, "output_tokens": 70, "cost": 0.002 }
}

Поле model в ответе называет датированный снимок, который обслужил запрос. Отправка typesafe/jev-1.14 разрешается в текущий выпуск 1.14, поэтому датированный суффикс здесь ожидаем. Как читать каждое поле:

  • is_bug.noul — вероятность того, что ответ «да», число от 0 до 1. Значение 0.96 значит, что Jev почти уверен: это дефект. Значения около 0.5 значат, что ответ примерно одинаково может быть и «да», и «нет». Это не значит, что дефект «средний».
  • team.choice — выбранный вариант. team.probabilities сравнивает разные варианты, которые вы перечислили как альтернативы. team.confidence сжимает это распределение в одно число.
  • urgency.score — положение на вашей упорядоченной шкале с учётом вероятностей. Номер 0 соответствует первому критерию, который вы перечислили. Оценка 1.99 лежит почти точно на «Сейчас блокирует выручку».

По этим значениям нужно ветвиться в программе. Например, можно автоматически направлять обращения, у которых team.confidence выше порога, подобранного на размеченных обращениях, а остальные отправлять человеку. Уверенность описывает распределение альтернатив, а не то, безопасно ли запускать сценарий. Поэтому порог берите из цены каждого вида ошибки, а не из круглого числа.

Частые вопросы

Создайте ключ AllTokens и отправьте запрос в метод решений с model, равным typesafe/jev-1.14. Отдельная регистрация, очередь ожидания и учётная запись TypeSafe не нужны.

Jev тарифицируется по числу входных токенов, а выходные токены бесплатны. На странице модели Jev указаны текущая цена и длина контекста. У каждого ответа есть поле usage.cost: оно сообщает, сколько стоил этот вызов, в рублях.

Нет. Jev — модель решений System One. Она возвращает ответы заданного вида с вероятностями, а не порождённый текст, и не возвращает ход рассуждения или пояснение ответа.

Да. Положите каждый независимый вопрос про одно и то же состояние в один запрос. Все вопросы запроса отвечаются параллельно и не видят ответов друг друга.

Да. Текущий выпуск Jev отслеживается псевдонимом ~typesafe/jev-latest. Фиксируйте typesafe/jev-1.14, когда пороги подобраны под одну конкретную версию и должны оставаться устойчивыми.