JEV 1.13: недорогая модель для распределения обращений и Agent
JEV 1.13 превращает естественный язык в выбор, вероятности и оценки для кода. Разберём Choice, Noul и Score на примерах распределения обращений, возвратов и RAG. В Crazyrouter JEV Decision Playground — 12 редактируемых сценариев, результаты и API-код.

Как использовать JEV 1.13? От маршрутизации обращений в поддержку до маршрутизации агентов: практическая проверка недорогой модели принятия решений#
«Клиент сообщает, что не может подключить оплату, и это уже влияет на работу. Кому передать эту заявку? Насколько она срочная? В каком эмоциональном состоянии клиент?»
Это распространённая небольшая задача в AI-продуктах. В итоге вам могут понадобиться всего три поля: technical, вероятность срочности и уровень эмоционального состояния. Эти поля определяют, в какую очередь попадёт заявка, какое место она займёт и нужно ли в первую очередь подключить сотрудника.
JEV 1.13 особенно хорошо подходит для таких однозначно сформулированных решений. Вы передаёте модели контекст и критерии оценки, а она возвращает выбор, вероятность или оценку, которые программа может использовать напрямую.
В последнее время о JEV много говорят: одни рассказывают о «System One», другие — о низкой стоимости и быстром принятии решений, третьи подключают модель к рабочим процессам агентов. Тем, кто хочет начать работу с моделью, важнее всего понять, какие задачи она может взять на себя и как проверить, действительно ли она подходит для конкретного бизнеса.
Сначала мы разберём модель, затем откроем JEV Decision Playground от [Crazyrouter] и протестируем её на практике, а в конце приведём готовый к запуску пример на Python. Тестирование, описанное в статье, проводилось через Crazyrouter 23 сентября 2026 года; успешные запросы и тайм-ауты сохранены.

Что такое JEV 1.13? Сначала запомните три типа результата#
JEV — модель принятия решений от TypeSafe AI. Официально такие модели называются System One Models: они считывают текущее состояние, быстро выполняют классификацию, проверку или оценку и предоставляют программному обеспечению исполнимые основания для принятия решений.
Входные данные модели состоят главным образом из двух частей:
state: факты и контекст. Это может быть сообщение клиента, фрагмент документа или объект JSON, содержащий состояние заказа.questions: вопросы, по которым нужно принять решение. Для каждого вопроса указываются тип, описание критериев оценки и необходимые варианты или шкала.
Три основных типа вопросов:
| Тип | О чём можно спросить | Что возвращается | Типичные применения |
|---|---|---|---|
| Choice | Какой вариант выбрать? | Выбранный вариант, вероятность каждого варианта, confidence | Классификация заявок, выбор инструментов, маршрутизация запросов |
| Noul | Верно ли это утверждение? | Вероятность ответа «да» в диапазоне от 0 до 1 | Проверка срочности, релевантности и необходимости эскалации |
| Score | Какому уровню соответствует объект по заданным критериям? | Числовая оценка, вероятности уровней, confidence | Оценка серьёзности, качества контента и соответствия лида |
Три типа вопросов можно включить в один запрос. Например, для заявки в поддержку одновременно определить, какой отдел должен её обработать, является ли она срочной и каково эмоциональное состояние клиента. Все три результата можно сразу использовать в коде.
JEV поддерживает текстовые входные данные, включая объекты и массивы, составленные из текста; изображения, аудио и видео модель напрямую не принимает. Написание ответов и статей, а также генерацию кода по-прежнему следует поручать генеративным моделям. Эти ограничения возможностей чётко описаны в документации TypeSafe по System One.
В чём её преимущество? Автоматизируем небольшие решения#
1. Результат сразу передаётся программе, без дополнительного объяснения и преобразования#
Предположим, вы определили три отдела: billing, technical и sales.
Результат Choice от JEV содержит один из этих вариантов и распределение вероятностей. Программа может напрямую прочитать answers.department.choice и выбрать очередь обработки на его основе.
Универсальные большие языковые модели тоже могут выполнять классификацию с помощью структурированного вывода. Особенность JEV, заслуживающая внимания, заключается в том, что типизированные решения и вывод вероятностей являются основным интерфейсом модели, оптимизированным для таких задач.
Для систем, которые ежедневно обрабатывают большие объёмы сообщений, документов или запросов на маршрутизацию, такая специализация имеет практическое значение: можно отдельно и явно описать результат классификации, условия дополнительной проверки и выполняемое действие.
2. За один запрос можно задать несколько независимых вопросов#
Из одного и того же контекста часто можно извлечь несколько решений:
- О чём спрашивает клиент?
- Влияет ли ситуация на нормальное использование?
- Нужно ли обработать её как можно скорее?
В официальной документации TypeSafe указано, что эти вопросы независимо и параллельно оцениваются на основе одного и того же state. Благодаря этому приложение может получить несколько измерений одним запросом, а затем объединить их в коде.
Здесь важно учитывать одну деталь: вопросы в одном запросе независимы друг от друга. Если второй шаг должен зависеть от ответа на первый, программа должна сначала прочитать результат первого шага, а затем сформировать следующий запрос.
3. Низкая стоимость одного входного запроса подходит для частых вызовов#
По состоянию на момент этой проверки справочные цены следующие:
| Позиция | Справочная цена |
|---|---|
| Входные данные | $0.042 за 1 миллион токенов |
| Выходные данные | $0 |
Если предположить, что каждый запрос содержит в общей сложности 1 000 входных токенов, стоимость одного запроса составит примерно 4.20.
Это расчёт по справочной цене. Контекст, вопросы и критерии занимают место во входном лимите; фактическое количество токенов указано в ответе usage, а итоговая сумма списания на этом сайте отображается в журнале расходов. Текущую цену можно проверить в списке моделей Crazyrouter.
Благодаря этому некоторые небольшие решения, ради которых раньше было невыгодно отдельно вызывать большую языковую модель, можно добавить в продукт: проверить релевантность документа, определить тему отзыва, решить, нужно ли передать запрос более мощной модели, и так далее.
4. Вероятности помогают проектировать ветвление обработки#
Если после выбора technical распределение вероятностей сильно сконцентрировано, программа может сразу направить запрос в нужную очередь. Если несколько вариантов имеют близкие вероятности, можно запросить дополнительные сведения, использовать другую модель или передать задачу сотруднику.
Однако confidence нельзя напрямую считать показателем точности. Это характеристика степени определённости возвращённого распределения. Значение 0.91 в конкретном ответе не означает, что правильность этого решения доказанно равна 91%.
Упоминаемая в официальной документации «калибровка» требует оценки на наборе примеров с эталонными ответами. Пороговые значения по-прежнему следует выбирать на основе собственных заявок и собственных критериев. Подробнее см. в документации по Confidence.
Сначала запустите модель в браузере без написания кода#
Откройте JEV Decision Playground или сразу перейдите в китайскую рабочую область принятия решений.
На странице доступно 12 редактируемых сценариев:
| Категория | Сценарии |
|---|---|
| Поддержка и операционная деятельность | Маршрутизация заявок в поддержку, выбор действия при возврате средств, классификация отзывов о продукте |
| Продажи и управление рисками | Классификация лидов, проверка рисков транзакций, допуск поставщиков |
| Контент и безопасность | Маршрутизация модерации контента, обнаружение захвата аккаунта, проверка документов на соответствие требованиям |
| Рабочие процессы AI | Оценка фрагментов RAG, маршрутизация инструментов агента, классификация производственных инцидентов |

Для первого запуска рекомендуется выбрать «Маршрутизация заявок в поддержку» и выполнить следующие действия:
- Получите API-токен Crazyrouter на странице управления токенами и введите его в рабочей области.
- Оставьте сценарий по умолчанию и сначала прочитайте контекст и критерии для трёх вопросов.
- Нажмите «Запустить принятие решения».
- Справа просмотрите выбранный отдел, распределение вероятностей, оценку эмоционального состояния, время выполнения и расход токенов.
- Замените контекст собственным текстом и запустите модель ещё раз, чтобы сравнить изменения в решении.
Отправка запроса приводит к реальным расходам на API: отсутствие платы за вывод не означает, что весь вызов бесплатный. На странице указано, что токен хранится только в памяти текущей страницы и не записывается в хранилище браузера.
При запуске стандартного обращения на китайском языке на реальной веб-странице мы получили следующие результаты:
- Отдел:
technical, вероятность выбора этого варианта — 0.94. - Вероятность срочности: 0.97.
- Оценка эмоционального состояния: 1.01 по шкале из трёх уровней: «Спокойно излагает факты / Недоволен, но сдержан / Очень зол».
- Время выполнения, показанное на странице: 0.70 секунды.
- Использование токенов: 467 входных и 73 выходных.

Фактически возвращённая версия — typesafe/jev-1.13-20260917. Это результат реального вызова через веб-страницу; при повторном запуске вероятности и время выполнения могут измениться.
На странице также есть функция «Предварительный просмотр запроса», где можно посмотреть примеры в форматах JSON, cURL, JavaScript и Python. Настройте сценарий так, как вам нужно, а затем скопируйте запрос для интеграции в свой продукт. Так проще, чем начинать с пустого файла.
Измените контекст и проверьте, изменится ли решение#
Одного стандартного примера недостаточно, чтобы понять, полезна ли модель. Гораздо показательнее оставить критерии оценки прежними, заменить контекст и проверить, меняется ли ответ вслед за изменением исходных данных.
Мы проверили шесть вариантов ввода через одну и ту же конечную точку Decisions. Ниже приведены фактические результаты:
| Тестовый ввод | Фактический ответ | Время работы клиента Python |
|---|---|---|
| Интеграция со Stripe не работает три дня, компания теряет продажи | technical; вероятность срочности 0.98; эмоции 1.01/2 | 1.102 секунды |
| Запросить информацию о цене подписки на следующий месяц, явно указав, что вопрос не срочный | sales; вероятность срочности 0.04; эмоции 0/2 | 0.784 секунды |
| Подтверждено, что по одному и тому же заказу прошли два платежа | refund; вероятность подтверждённого двойного списания 0.95 | 0.675 секунды |
| Клиент подозревает двойное списание, но подтверждённых транзакций пока нет | При первом запросе и повторной проверке истекло время ожидания; решение не получено | Около 60 секунд в каждом случае |
| В документации приведён пример задания параметра тайм-аута для запроса Python | Релевантность 1.98/2; вероятность того, что фрагмент позволяет ответить на вопрос, 0.80 | 2.293 секунды |
| В документации описана только модель для работы с изображениями, не связанная с вопросом о тайм-ауте запроса | При первом запросе истекло время ожидания; при повторной проверке релевантность 0/2, вероятность ответа — 0.01 | 5.413 секунды при повторной проверке |
Эти результаты позволяют сделать несколько конкретных выводов.
Классификация обращений в поддержку учитывает и тему, и тон сообщения. Когда контекст меняется с «уже мешает работе бизнеса» на «заранее уточняет цену, вопрос не срочный», меняются и выбранный отдел, и вероятность срочности.
При фильтрации для RAG можно оценивать релевантность и возможность ответить на вопрос отдельно. Фрагмент может быть очень релевантным, но при этом не содержать достаточно информации для полного ответа. В примере оценка релевантности близка к максимальной, а вероятность того, что фрагмент позволяет ответить, составляет 0.80. Эти показатели решают разные задачи.
Низкая стоимость не исключает сбоев вызова. В случае с возвратом средств, где не хватало доказательств, ответ не был получен. Поэтому мы не станем приписывать модели вывод о том, что нужно провести проверку, и по одному лишь тайм-ауту нельзя определить, была ли проблема в модели, вышестоящем сервисе или сетевом маршруте.
В этой серии были первоначальный тест, две повторные попытки и один вызов через веб-страницу: всего 9 запросов, 6 успешных ответов и 3 тайм-аута при ожидании ответа. Указанные в шести успешных ответах расходы на вышестоящий сервис составили $0.000115962. Эта сумма не учитывает расчёты по запросам с тайм-аутом, которые мы не проверяли, и не является полной суммой фактического списания с аккаунта на этом сайте.
Выборка небольшая, а тестовые примеры составлены вручную. Это проверка того, как начать работу и настроить соединение; она не позволяет вычислить универсальную точность или гарантировать стабильность сервиса.
Как понимать заявления «в сотни раз быстрее» и «без галлюцинаций»?#
В официальной публикации TypeSafe указано, что в условиях их тестирования сквозное время ответа составило 70–500 миллисекунд. Заявленные на главной странице преимущества — в 193.6 раза выше скорость и в 444.6 раза ниже стоимость — получены при оценке конкретных рабочих процессов. В официальной публикации также уточняется, что такие результаты относятся к верхней границе ожидаемых показателей в реальных приложениях; авторы описывают и внутренние рабочие процессы, и способ подготовки эталонных ответов.
Эти цифры помогают понять направление развития продукта, но их нельзя напрямую переносить на вашу сеть, данные и весь процесс работы агента.
В этой проверке успешные вызовы Python заняли 0.675–5.413 секунды, а один вызов через веб-страницу отобразил время 0.70 секунды. Кроме того, произошли тайм-ауты при ожидании ответа. Эти значения учитывают путь от локальной среды до шлюза и вышестоящего сервиса и не равны времени вычислений самой модели. В этой проверке мы не сравнивали скорость на одинаковых задачах с другими моделями.
Утверждение «без галлюцинаций» также следует рассматривать с учётом оговорок. По словам авторов, тип результата и пространство заранее определённых ответов ограничены: если в списке есть три отдела, модель не станет произвольно генерировать название четвёртого.
Допустимый вариант ответа не обязательно верен. Модель всё ещё может ошибочно направить вопрос о счёте в техническую команду или уверенно оценить вероятность неверного ответа. Перед запуском в рабочей среде сохраните тестовый набор с известными ответами, изучите типы ошибок и только затем определите, какие решения можно выполнять автоматически.
Как подключиться: Decisions API#
В /v1/models на Crazyrouter мы подтвердили наличие общедоступного имени модели jev-1.13. На веб-странице использовалась typesafe/jev-1.13; этот вариант также успешно отработал. В успешном ответе указывается фактическая разобранная версия.
В этой проверке использовались следующие параметры:
Сайт: https://crazyrouter.com
Интерфейс: POST /api/alpha/decisions
Модель: jev-1.13
Аутентификация: Authorization: Bearer <Crazyrouter API Token>
Для JEV предназначен отдельный интерфейс Decisions. Нельзя просто заменить значение model на JEV и продолжить вызывать /v1/chat/completions или /v1/responses. Ответ возвращается в виде синхронного JSON, потоковая выдача не используется.
Ниже приведён полный запрос Python, соответствующий проверенному сценарию обращения в поддержку. Сначала установите requests и задайте переменную окружения CRAZYROUTER_API_KEY в локальной среде:
import json
import os
import requests
payload = {
"model": "jev-1.13",
"state": "Я уже 3 дня пытаюсь подключить Stripe, но интеграция всё время завершается с ошибкой, и мы теряем продажи. Пожалуйста, разберитесь как можно скорее.",
"questions": {
"department": {
"type": "choice",
"instructions": "Какая команда должна обработать это обращение?",
"criteria": {
"billing": "Проблемы с платежами, счетами или подпиской",
"technical": "Ошибки или сбои интеграции",
"sales": "Вопросы о ценах или закупках",
},
},
"is_urgent": {
"type": "noul",
"instructions": "Выражает ли это сообщение срочность?",
},
"frustration": {
"type": "score",
"instructions": "Насколько заметно раздражение клиента?",
"criteria": ["Спокойно излагает факты", "Недоволен, но сдержан", "Очень зол или использует резкие выражения"],
},
},
}
try:
response = requests.post(
"https://crazyrouter.com/api/alpha/decisions",
headers={
"Authorization": f"Bearer {os.environ['CRAZYROUTER_API_KEY']}",
"Content-Type": "application/json",
},
json=payload,
timeout=(10, 60),
)
response.raise_for_status()
except requests.Timeout as exc:
raise SystemExit("Время ожидания запроса истекло: решение не получено. Проверьте журнал вызовов и только затем решайте, стоит ли повторить запрос.") from exc
except requests.RequestException as exc:
raise SystemExit(f"Не удалось выполнить запрос: {exc}") from exc
data = response.json()
answers = data.get("answers")
if not isinstance(answers, dict) or not all(
key in answers for key in ("department", "is_urgent", "frustration")
):
raise RuntimeError("Ответ не содержит полного результата принятия решения. Проверьте сведения, возвращённые сервисом.")
print(json.dumps(answers, ensure_ascii=False, indent=2))
print("Фактическая модель:", data.get("model"))
print("Идентификатор запроса:", data.get("id"))
print("Использование:", data.get("usage"))
В первых практических результатах API соответствующие ключевые поля выглядели следующим образом; пояснения об уровнях и часть распределения вероятностей опущены:
{
"id": "gen-dec-1790095587-mts183W9F0rPWFGshpnx",
"model": "typesafe/jev-1.13-20260917",
"answers": {
"department": {
"type": "choice",
"choice": "technical",
"probabilities": {"technical": 0.94, "billing": 0.06, "sales": 0},
"confidence": 0.91
},
"is_urgent": {"type": "noul", "noul": 0.98},
"frustration": {"type": "score", "score": 1.01, "confidence": 0.98}
},
"usage": {"input_tokens": 467, "output_tokens": 73, "cost": 0.000019614}
}
Здесь есть два поля, которые легко неправильно интерпретировать:
Noul 0.98 — это вероятность значения «да». Если программе в итоге требуется логическое значение, порог нужно задать самостоятельно. Значения 0.5, 0.8 и 0.95 — лишь возможные варианты бизнес-логики; выбор следует делать с учетом цены ошибок и результатов проверочной выборки.
Score 1.01 — это вероятностно взвешенное среднее индексов уровней. В приведенном примере трем уровням соответствуют значения 0, 1 и 2, поэтому результат близок к значению «недоволен, но сдержан». Score может быть дробным и по умолчанию не использует процентную шкалу. Точное определение см. в официальной документации по Score.
Три наиболее перспективных сценария для начала#
На входе в службу поддержки: одновременно определить отдел и срочность#
Попросите JEV прочитать сообщение пользователя и известный статус заказа, а затем вывести отдел обработки, вероятность срочности и категорию недостающей информации. Программа на основе результата формирует очередь, а ответ подготавливает генеративная модель или сотрудник.
При составлении вариантов как можно четче разграничивайте их и предусматривайте вариант «другое» или «требуется дополнительная проверка» для случаев, когда информации недостаточно. Пример с возвратом средств содержит лишь рекомендации; фактический возврат должен выполнять ваша бизнес-система в соответствии с правилами.
После RAG-поиска: отфильтровать фрагменты, которые не помогают сформировать ответ#
Получив документы-кандидаты, можно отдельно спросить, «относятся ли они к теме» и «поддерживают ли они ответ», а затем решить, какие фрагменты включить в финальный контекст генерации.
Если фрагментов-кандидатов много, следует измерить дополнительные расходы и время ожидания, связанные с самой фильтрацией. Сколько входных данных для генерации она сэкономила и не были ли ошибочно удалены важные доказательства, нужно проверять по бизнес-данным.
Перед вызовом инструментов Agent: выбрать следующий обработчик#
Определите доступные действия как Choice, например «проверить заказ», «найти информацию в базе знаний», «задать вопрос пользователю» и «передать сотруднику». JEV выбирает действие, а код запускает соответствующий процесс.
Такой сценарий хорошо подходит для этого узла принятия решения. Способ подключения и дополнительные режимы описаны в кратком руководстве по TypeSafe, а другие модели и интерфейсы можно найти в документации API Crazyrouter.
Часто задаваемые вопросы#
Может ли JEV напрямую заменить основную модель Claude Code, Codex или Cursor?#
Нет. JEV не генерирует код, не поддерживает многошаговый диалог и не выводит последовательность вызовов инструментов, как модели для программирования. Вы можете поручить программирующему Agent написать классификатор или маршрутизатор, использующий JEV. Этому посвящен отдельный раздел [официальной документации по coding agents]agents.
Поддерживает ли JEV китайский язык?#
В ходе этого теста были получены корректные результаты для китайской службы поддержки, описаний задач на китайском языке и китайских фрагментов RAG. Однако этих нескольких примеров недостаточно, чтобы подтвердить точность во всех китайскоязычных бизнес-сценариях; профессиональную терминологию, длинные тексты и пограничные случаи необходимо тестировать отдельно.
Бесплатно ли онлайн-тестирование JEV?#
В рабочем пространстве Crazyrouter выполняются реальные платные запросы, для которых требуется API Token этого сервиса. Стоимость вывода модели равна нулю, но входные данные по-прежнему тарифицируются. Не следует переносить сюда временные бесплатные предложения других платформ.
Почему в ответе API есть output_tokens, если стоимость вывода равна нулю?#
Статистика по токенам вывода и тарификация вывода — это разные понятия. В успешном ответе этого теста присутствовало поле output_tokens, а ставка за вывод в справочной таблице цен равнялась нулю.
Достаточно ли написать во входных данных только «помоги разобраться»?#
Следует предоставить достаточно контекста и четко указать, что именно нужно определить. Например, вопрос «хорош ли этот клиент» лучше разделить на отдельные критерии: «есть ли у него план закупки», «соответствует ли его потребность предложению» и «готов ли он провести техническую оценку». Чем точнее сформулированы критерии, тем надежнее будет оценка и тем проще ее тестировать.
Если confidence очень высокий, можно ли автоматически выполнять любые действия?#
Не следует ориентироваться только на одно число. Сначала проверьте систему на примерах с известными ответами, а затем установите условия выполнения с учетом цены ошибки для каждого действия. Ошибочная метка классификации и ошибочное списание средств или блокировка номера имеют разную цену, поэтому пороги и процедуры проверки также должны различаться.
Если истекло время ожидания, значит ли это, что запрос не был тарифицирован?#
Не обязательно. Если клиент не получил ответ, это не доказывает, что сервер не обработал запрос. Следует проверить записи о вызове и расходах; в этом отчете суммируется стоимость только запросов, по которым был получен ответ, а запросы с истекшим временем ожидания не считаются бесплатными.
Проверьте это прямо сейчас на двух собственных текстах#
Откройте рабочее пространство для принятия решений JEV, сначала запустите пример стандартного обращения в службу поддержки, а затем замените его обычным запросом о покупке без срочности. Сохраните то же определение задачи и посмотрите, как изменятся отдел, вероятность срочности и оценка эмоциональной окраски.
Затем выберите из реального бизнес-процесса набор примеров с уже известными ответами: включите четкие, неоднозначные и легко смешиваемые случаи. Если система стабильно берет на себя один из классов решений при приемлемых затратах и времени обработки, это уже веская причина встроить ее в продукт.
Источники и примечания к тестированию: статья подготовлена на основе официальных публикаций и документации TypeSafe, актуальной информации о моделях Crazyrouter, а также вызовов API и веб-интерфейса от 2026-09-23. Иллюстрации представляют собой снимки реальных страниц и схемы процессов. Официальные заявления о производительности отмечены отдельно; результаты этой небольшой выборки не следует считать универсальным рейтингом.





