docs
API

Jev — модель решений

Markdown

Модель решений Jev от TypeSafe отвечает на типизированные вопросы о тексте или JSON: выбор варианта, оценка по шкале или «да/нет» с вероятностями. Это не чат и не генерация текста.

Полное руководство
POSThttps://api.ailoot.ai/v1/systemone
Jev — модель решений
curl https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "Help! My payouts have been failing for 3 days.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Does this convey urgency?"
      }
    }
  }' 
200 OK
{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

Jev — модель решений класса System One от TypeSafe. Она не пишет текст и не ведёт диалог: вы передаёте состояние (state) — текст или JSON — и набор вопросов, а в ответ получаете типизированные значения с вероятностями. По ним код сразу ветвится, сортирует и маршрутизирует, без разбора свободного текста.

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

ЧтоКоротко
Модельjev-latest — псевдоним последней стабильной версии Jev; карточка в каталоге
МетодPOST /v1/systemone. Это не чат: форматы OpenAI, Anthropic и Gemini для Jev не подходят. Ответ приходит целиком, одним JSON
Что принимаетТолько текст: строку, объект JSON или массив текстов. Картинки, аудио и видео сначала переведите в текст
Контекст64K токенов на запрос — state и все вопросы вместе; state вместе с самым длинным вопросом — до 32K
ЯзыкПо данным TypeSafe, точнее всего модель работает на английском; другие языки она принимает, но точность ниже — проверьте на своих данных
ЦенаВход $0.084 за 1 млн токенов, выход бесплатно

Запрос

Авторизация

  • Authorizationheaderобязательный

    Ключ Ailoot в виде Bearer sk-….

Тело запроса

  • modelstringобязательный

    jev-latest.

  • statestring | object | arrayобязательный

    Что оценивать: строка с текстом или JSON — обращение клиента, запись из базы, переписка, текущее состояние вашего приложения. Объект с понятными именами полей обычно удобнее одной строки.

  • questionsobjectобязательный

    Вопросы. Ключи выбираете вы, ответы придут под теми же ключами; на ответ ключ не влияет — сам вопрос задаётся в instructions.

  • questions.*.typestringобязательный

    noul, choice или score — см. ниже.

  • questions.*.instructionsstring | object | arrayобязательный

    Сам вопрос. Длинный вопрос с данными можно передать объектом: вопрос в одном поле, данные в других; ссылайтесь на поля по имени в обратных кавычках.

  • questions.*.criteriaobject | array

    Варианты ответа, свои у каждого типа: описания «да» и «нет» у noul (необязательно), словарь вариантов у choice, упорядоченный список уровней у score.

Типы вопросов

ТипЧто спрашиваетЧто возвращает
noulВерно ли утверждение: да или нетnoul — вероятность «да» от 0 до 1
choiceКакой вариант из заданных подходитchoice, probabilities, confidence
scoreГде state на вашей шкале уровнейscore, legend, probabilities, confidence

Типы можно смешивать в одном запросе.

noul — да или нет

Поле criteria необязательно: в нём можно описать, что значит «да» (true) и «нет» (false). Ответ noul — число от 0 (нет) до 1 (да).

"is_urgent": {
  "type": "noul",
  "instructions": "Does this convey urgency?",
  "criteria": {
    "true": "Explicitly time-sensitive",
    "false": "No urgency expressed"
  }
}

choice — выбор варианта

criteria — словарь «вариант → описание»; если описание не нужно, укажите null. До 255 вариантов. В ответе choice — самый вероятный вариант, probabilities — вероятность каждого варианта (в сумме 1), confidence — уверенность от 0 до 1.

"department": {
  "type": "choice",
  "instructions": "Which team should handle this?",
  "criteria": {
    "billing": "Payments, invoicing, refunds",
    "technical": "Bugs, outages, integrations",
    "sales": "Pricing, upgrades, new customers"
  }
}

score — оценка по шкале

criteria — уровни от низшего к высшему, не больше 10 (TypeSafe советует не меньше двух). В ответе score — значение, взвешенное по вероятностям уровней (может оказаться между уровнями), legend — номер уровня и его описание, probabilities и confidence. По данным TypeSafe, score годится для сравнения с порогом, но не для точного числа между уровнями.

"frustration": {
  "type": "score",
  "instructions": "How frustrated is the customer?",
  "criteria": ["Calm", "Frustrated", "Very angry"]
}

Ответ

  • modelstring

    Какая версия модели ответила. Псевдоним jev-latest со временем переходит на новые версии: если вы подобрали пороги confidence под конкретную версию, следите за этим полем.

  • answersobject

    По одному ответу на каждый вопрос, под теми же ключами. У каждого ответа есть type, у choice и score — ещё confidence.

  • usageobject

    input_tokens и output_tokens. Оплачиваются только входные токены.

Несколько вопросов за один запрос

Задавайте все вопросы к одному state одним запросом: они оцениваются параллельно, а state передаётся один раз. По данным TypeSafe, в их примере с 13 вопросами один общий запрос вышел в 12,2 раза дешевле и в 10 раз быстрее, чем 13 отдельных запросов, если отправлять их по очереди, при тех же ответах.

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

{
  "model": "jev-latest",
  "state": "Help! My payouts have been failing for 3 days.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this?",
      "criteria": {
        "billing": "Payments, invoicing, refunds",
        "technical": "Bugs, outages, integrations",
        "sales": "Pricing, upgrades, new customers"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "How frustrated is the customer?",
      "criteria": ["Calm", "Frustrated", "Very angry"]
    },
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?"
    }
  }
}

Когда подходит

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

Когда не подходит

  • Чат, ответы пользователю, генерация текста или кода. Jev не пишет текст — для этого есть текстовые модели.
  • Модель для Claude Code, Cursor и других агентов. Подставить jev-latest вместо модели агента не получится: агенту нужна модель, которая пишет текст и вызывает инструменты. Jev можно вызывать из кода, который агент пишет для вас.
  • Арифметика, подсчёт, сравнение дат. По данным TypeSafe, это надёжнее делать в коде, а у модели спрашивать только смысловую часть — например, извлечь части даты через choice.
  • Картинки, аудио и видео. Модель принимает только текст — переведите такие данные в текст заранее.

Цена

Оплачиваются только входные токены — поле usage.input_tokens ответа: $0.084 за 1 млн. Выходные токены бесплатны.

Запрос из примера на этой странице (296 входных токенов) стоит меньше $0.0001.

Перед запросом Ailoot резервирует сумму на балансе и после ответа списывает один раз по фактическому расходу — как это работает.

Лимиты

ЧтоЛимит
Запрос целиком: state и все вопросы64K токенов
state вместе с самым длинным вопросом32K токенов
Вариантов в одном choiceдо 255
Уровней в одном scoreот 2 до 10
Входтолько текст: строка, объект JSON или массив текстов

Лимиты модели — по данным TypeSafe. Ограничения вашего ключа и баланса действуют как для любой модели Ailoot: Ошибки и лимиты.

Ошибки

Ошибки приходят в общем формате Ailoot API: код, понятный текст и Request ID. Чаще всего у этого метода встречаются:

КодКогдаЧто делать
400 invalid_requestТело не прошло проверку: нет state, model или questions, неизвестный type, у choice больше 255 вариантов, у score больше 10 уровнейИсправьте запрос по тексту ошибки: без правки он снова не пройдёт
400 context_length_exceededstate и вопросы вместе длиннее лимита моделиОтфильтруйте state в коде, оставьте то, что нужно вопросам
401 invalid_api_keyКлюча нет или он неверныйПередайте ключ в заголовке Authorization
402 insufficient_balanceНе хватает свободного баланса на резервПополните баланс
404 model_not_found, unsupported_endpointID с ошибкой или модель вызвана не тем методом, например через /v1/chat/completionsВызывайте jev-latest только через POST /v1/systemone
429 rate_limit_exceededСлишком много запросовПодождите столько секунд, сколько в заголовке Retry-After, и повторите
503 model_overloaded, model_unavailableМодель временно перегружена или недоступнаЕсли X-Should-Retry: true — повторите через Retry-After секунд; если false — сначала проверьте Request ID в истории
504 model_timeoutМодель не ответила вовремяНе отправляйте запрос заново, пока не проверите Request ID в истории

Полный список кодов — на странице Ошибки и лимиты.

Остались вопросы? Пришлите Request ID и описание — поможем разобраться.Написать в поддержку