Jev
TypeSafe Jev — это модель решений: она не генерирует текст, а только отвечает на заранее определённые вопросы. В запросе передаются оцениваемое содержимое и набор вопросов; модель возвращает на каждый вопрос структурированный ответ с вероятностями, на основании которого программа может непосредственно выполнять ветвление логики.
Область применения
Подходит для:
- Классификации и маршрутизации: определения команды, ответственной за обращение, категории намерения пользователя.
- Решений «да/нет»: содержит ли текст персональные данные, является ли сообщение запросом на возврат, является ли оно prompt injection.
- Оценки и ранжирования: срочности, релевантности, интенсивности эмоций, а также фильтрации результатов поиска.
- Контроля качества ответов LLM: соответствует ли ответ вопросу, нарушает ли он правила.
Не подходит для:
- Генерации текста, кратких изложений, переводов или кода.
- Решений по изображениям (Jev принимает только текст и JSON; для решений по изображениям используйте GPT-6 Luna).
- Открытых вопросов, ответы на которые невозможно заранее представить в виде вариантов или уровней.
Сравнение с подходом «чат-модель + вывод JSON»:
Быстрый старт
1. Подготовка данных для подключения. Создайте API Key в консоли OfoxAI и используйте следующие значения:
https://api.ofox.ai/v1typesafe/jev-latestДопускается также jev-latest/v1/decisionsPOST; /v1/chat/completions не применяется2. Установка SDK. Для вызова через официальный Python SDK OpenAI требуется версия, содержащая client.decisions:
pip install -U openaiAttributeError: 'OpenAI' object has no attribute 'decisions' при запуске означает, что версия SDK устарела; обновите её командой выше (работа проверена на openai 3.31.0). Без SDK вызов можно выполнить через cURL, как показано ниже.3. Выполнение вызова.
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"])
r = client.decisions.create(
model="typesafe/jev-latest",
input="Customer message: I was charged twice, nobody has answered my two emails, and I need a refund today.",
questions=[{"type": "predicate", "name": "is_frustrated", "instructions": "Is the customer frustrated?"}],
)
print(r.answers[0].probability) # 0.98Пример ответа:
{
"model": "typesafe/jev-latest",
"answers": [{ "type": "predicate", "name": "is_frustrated", "probability": 0.98 }],
"usage": { "prompt_tokens": 302, "completion_tokens": 23, "total_tokens": 325 }
}probability — вероятность ответа «да»; значение 0.98 означает, что модель с очень высокой вероятностью считает клиента недовольным. Чтобы применить пример к собственной задаче, замените input фактическим содержимым, а questions — фактическими вопросами.
Типы вопросов
Тип вопроса выбирается в зависимости от требуемой формы результата:
Пример: для вопроса «является ли обращение запросом на возврат» используется predicate; для вопроса «какая команда должна обработать обращение» — choice; для вопроса «какова степень срочности» — score. Все три вопроса можно передать в одном запросе и получить все ответы одновременно.
После выбора типа вопроса проверьте вопросы и варианты в соответствии с разделом Проектирование вопросов.
Типичные ошибки
Полный список ошибок приведён в разделе Decisions API · Типичные ошибки.
Официальная документация
Часто задаваемые вопросы
Чем Jev отличается от вывода JSON с помощью LLM?
Jev отвечает только в пределах заданных вариантов и уровней и не возвращает значения вне этого диапазона. Каждый ответ содержит вероятности, для choice и score дополнительно возвращается уверенность, что позволяет непосредственно задавать пороги. Вывод JSON от LLM требует дополнительной проверки и, как правило, не содержит пригодных вероятностей.
Какой эндпоинт использовать: /v1/decisions или /typesafe/v1/systemone?
Для новых проектов рекомендуется /v1/decisions, который можно вызывать непосредственно через OpenAI SDK. Для проектов, уже использующих TypeSafe SDK или официальные примеры кода TypeSafe, можно использовать /typesafe/v1/systemone, изменив только base URL.
Как тарифицируется Jev?
Тарифицируются только входные токены; выход не тарифицируется. Цены указаны на странице модели. Вопросы в одном запросе используют общий ввод, поэтому объединение вопросов в один запрос снижает стоимость.
Означает ли высокая уверенность, что ответ верен?
Не обязательно. Если варианты не охватывают фактический случай, модель всё равно выберет один из имеющихся вариантов, и уверенность при этом может быть высокой. Поэтому для вопросов choice следует предусматривать резервный вариант, например «ничего из перечисленного», и проверять результаты на выборке, размеченной вручную.
Что означает значение score 1.43?
score — значение, вычисленное с весами по вероятностям уровней; уровни нумеруются с 0. Значение 1.43 находится между уровнями 1 и 2, ближе к уровню 1; вероятности отдельных уровней приведены в probabilities.
Поддерживается ли содержимое не на английском языке?
Да. Для китайского языка проверено, что содержимое и вопросы могут быть на китайском, а также что содержимое может быть на китайском, а вопросы — на английском.
Поддерживает ли Jev изображения?
Нет. Jev принимает только текст и JSON. Для решений по изображениям используйте GPT-6 Luna (openai/gpt-6-luna) с поддержкой ввода изображений; формат запроса тот же.