Независимый справочник и сообщество для разработчиков
Официальная информация о Jev: typesafe.ai

Попробовать Jev бесплатно

Задайте один вопрос или три разных вопроса об одной ситуации. Выберите пример, измените входные данные и изучите каждый структурированный ответ.

Изучить проекты на GitHub
01 / Выберите решение

Начните с конкретного примера

typesafe/jev-1.13

Проверяйте по одному типу ответа за раз. Каждый запуск расходует одну попытку из дневного лимита.

1. Choice
questions.decision
Предпросмотр запроса API

Предпросмотр не содержит ключ API и токен проверки. Каждому имени вопроса соответствует ответ с тем же именем.

{
  "model": "typesafe/jev-1.13",
  "state": {
    "input": "За подписку с меня сняли дважды. Можете ли вы помочь?"
  },
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "Какая команда должна с этим справиться?",
      "criteria": {
        "billing": "Платежи и возвраты",
        "technical": "Ошибки и интеграции",
        "general": "Другие обращения"
      }
    }
  }
}

Для одного аккаунта доступно 6 бесплатных попыток в сутки по UTC; лимит обновляется в 00:00 UTC. На сайте также действует общий дневной лимит. Ввод отправляется в OpenRouter; мы сохраняем данные об использовании, но не сам текст.

02 / Прочитайте ответ

Можно запускать

Запустите пример, чтобы получить ответ на каждый вопрос: Choice выбирает вариант, Score определяет положение на шкале, а Probability возвращает значение от 0 до 1.

Как интегрировать

Добавьте Jev в свой код.

Форма отправляет ваш текст как state.input вместе с одним или тремя вопросами с именами. Каждый результат находится в answers.<question_id>.

Что означает каждое поле

Запрос определяет форматы вопросов и ответов. Ответ возвращает результат для каждого из них. Вот поля JSON, используемые в примере.

Поля запроса

model
Идентификатор модели. В примере зафиксирована версия Jev 1.13, поэтому используемая версия указана явно.
state
Текст или структурированные данные для оценки, например сообщение службы поддержки.
questions
Набор решений с заданными именами. Эти же имена используются в поле answers ответа.
<question_id>
Имя, например action или urgency; ответ использует то же имя.
type
Формат ответа: choice выбирает вариант, score оценивает по упорядоченной шкале, а noul отвечает на вопрос «да/нет».
instructions
Конкретное суждение, которое вы хотите, чтобы модель вынесла.
criteria
Допустимые варианты Choice, уровни шкалы Score или значение false и true для Noul.

Поля ответа

answers
Один результат на вопрос, возвращаемый под тем же именем.
choice
Ключ варианта, выбранного полем choice: вариант с наибольшей вероятностью.
probabilities
Вероятность каждого варианта выбора; сумма этих значений равна 1.
confidence
Отдельный показатель уверенности, рассчитанный по распределению вероятностей; это не вероятность выбранного варианта.
score
Позиция на упорядоченной шкале с учётом вероятностей; она может лежать между двумя уровнями.
legend
Соответствие числовых позиций Score заданным вами уровням и их описаниям.
noul
Число от 0 (нет) до 1 (да) для ответа на вопрос «да/нет».

Один контекст и три независимых вопроса: Choice, Score и Probability. Каждый запуск расходует одну попытку из дневного лимита. Ответ правильного формата всё равно может быть ошибочным. Тестируйте репрезентативные случаи и задавайте пороги маршрутизации для своего процесса.

Эндпоинт

OpenRouter

Здесь Jev вызывается через OpenRouter с указанием конкретной версии. Актуальную цену и доступность смотрите на странице модели.

Эндпоинт
POST https://openrouter.ai/api/alpha/decisions
model
typesafe/jev-1.13
Ключ API
Отправляйте ключ API с сервера в виде Bearer-токена.
OpenRouter ↗
Официальный прямой API

TypeSafe

У TypeSafe есть собственный адрес API и собственные ключи. В официальном кратком руководстве используется jev-latest и показано, как отправить несколько вопросов одним запросом.

Эндпоинт
POST https://api.typesafe.ai/v1/systemone
model
jev-latest
Ключ API
Отправляйте ключ API с сервера в виде Bearer-токена.

TypeScript на стороне сервера

TypeScript · fetch
// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");

const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + apiKey,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "typesafe/jev-1.13",
    state: {input: "A customer reports a duplicate charge."},
    questions: {
      team: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments and refunds",
          technical: "Bugs and integrations"
        }
      },
      urgency: {
        type: "score",
        instructions: "How urgent is the issue?",
        criteria: ["Can wait", "Needs attention today", "Immediate action"]
      },
      escalate: {
        type: "noul",
        instructions: "Should a human review this first?",
        criteria: {false: "No review needed", true: "Review before acting"}
      }
    }
  })
});

if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);
Прочитайте ответ

Три типа вопросов и три формата ответа

Выберите формат ответа, нужный вашему коду. Если задать несколько вопросов, каждый получит отдельный результат под своим именем.

TypeSafe: Choice · Score · Noul ↗

Choice

choice · probabilities · confidence

Ключ варианта, выбранного полем choice: вариант с наибольшей вероятностью.

Score

score · legend · probabilities · confidence

Позиция на упорядоченной шкале с учётом вероятностей; она может лежать между двумя уровнями.

Noul

noul

Число от 0 (нет) до 1 (да) для ответа на вопрос «да/нет».

Прежде чем использовать его в производстве

Перед использованием в продакшене протестируйте модель на репрезентативных обращениях, зафиксируйте версию и отправляйте неопределённые или критичные случаи на проверку человеку. Значение 0,8 приведено только как пример.