Skip to Content
МоделиJev (TypeSafe)Обзор

Jev

TypeSafe Jev — это модель решений: она не генерирует текст, а только отвечает на заранее определённые вопросы. В запросе передаются оцениваемое содержимое и набор вопросов; модель возвращает на каждый вопрос структурированный ответ с вероятностями, на основании которого программа может непосредственно выполнять ветвление логики.

Область применения

КраткоЕсли программа должна выполнять различную логику в зависимости от результата решения, используйте Jev; если требуется сгенерировать текст для чтения людьми, используйте чат-модель.

Подходит для:

  • Классификации и маршрутизации: определения команды, ответственной за обращение, категории намерения пользователя.
  • Решений «да/нет»: содержит ли текст персональные данные, является ли сообщение запросом на возврат, является ли оно prompt injection.
  • Оценки и ранжирования: срочности, релевантности, интенсивности эмоций, а также фильтрации результатов поиска.
  • Контроля качества ответов LLM: соответствует ли ответ вопросу, нарушает ли он правила.

Не подходит для:

  • Генерации текста, кратких изложений, переводов или кода.
  • Решений по изображениям (Jev принимает только текст и JSON; для решений по изображениям используйте GPT-6 Luna).
  • Открытых вопросов, ответы на которые невозможно заранее представить в виде вариантов или уровней.

Сравнение с подходом «чат-модель + вывод JSON»:

JevЧат-модель + вывод JSON
Возвращаемое значениеТолько заранее заданные варианты или уровниВозможны значения вне вариантов; требуется дополнительная проверка
НеопределённостьКаждый ответ содержит вероятности; для choice и score дополнительно возвращается уверенностьКак правило, пригодные вероятности не предоставляются
Несколько вопросовОтветы на все вопросы в одном запросе с общим вводомТребуется объединение в один промпт или несколько вызовов
ТарификацияТолько входные токены; выход не тарифицируетсяВход и выход тарифицируются по ценам чат-модели

Быстрый старт

1. Подготовка данных для подключения. Создайте API Key в консоли OfoxAI  и используйте следующие значения:

Данные для подключения
Base URLhttps://api.ofox.ai/v1
ID моделиtypesafe/jev-latestДопускается также jev-latest
Эндпоинт/v1/decisionsPOST; /v1/chat/completions не применяется

2. Установка SDK. Для вызова через официальный Python SDK OpenAI требуется версия, содержащая client.decisions:

Terminal
pip install -U openai
ВниманиеОшибка AttributeError: 'OpenAI' object has no attribute 'decisions' при запуске означает, что версия SDK устарела; обновите её командой выше (работа проверена на openai 3.31.0). Без SDK вызов можно выполнить через cURL, как показано ниже.

3. Выполнение вызова.

quickstart.py
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Вопрос; необязательные criteria, описывающие значение «да» и «нет»probability: вероятность ответа «да»
Выбор одного из нескольких вариантовchoicechoices: от 2 до 255 вариантовchoice, вероятность каждого варианта, confidence
Степеньscorelevels: от 2 до 10 уровней в порядке возрастанияscore, вероятность каждого уровня, confidence

Пример: для вопроса «является ли обращение запросом на возврат» используется predicate; для вопроса «какая команда должна обработать обращение» — choice; для вопроса «какова степень срочности» — score. Все три вопроса можно передать в одном запросе и получить все ответы одновременно.

После выбора типа вопроса проверьте вопросы и варианты в соответствии с разделом Проектирование вопросов.

Типичные ошибки

СимптомПричинаСпособ устранения
AttributeError: 'OpenAI' object has no attribute 'decisions'Устаревшая версия OpenAI SDKВыполните pip install -U openai и повторите попытку
400 endpoint_not_supported с сообщением Please use /v1/decisions insteadJev вызвана как чат-модель через /v1/chat/completionsИспользуйте /v1/decisions
400 Invalid request payloadВ /v1/decisions использован нативный формат TypeSafe (state, questions в виде объекта)Используйте input и questions в виде массива либо вызывайте /typesafe/v1/systemone
400 questions are required for decisionПоле questions пустоУкажите хотя бы один вопрос
400 question "a" has kind choice and requires criteria optionsВ вопросе choice отсутствует choicesДобавьте варианты
400 Too many score levels. Must have at most 10 levels.В score более 10 уровнейОбъедините уровни
400 max_tokens_exceededВвод превышает 64K токеновРазделите длинный документ или передавайте только релевантную часть
400, сообщение об ошибке содержит input_image и Typesafe cannot readВ Jev передано изображениеУдалите изображение или используйте модель с поддержкой изображений
404 model_not_foundНеверный ID моделиИспользуйте typesafe/jev-latest
Запрос выполнен успешно, но ответ явно неверен при высокой уверенностиВарианты choice не охватывают фактический случайДобавьте вариант «ничего из перечисленного» и описания вариантов; см. Проектирование вопросов
В ответах отсутствует name, сопоставить их с вопросами невозможноУ вопросов не задан nameЗадайте name для каждого вопроса

Полный список ошибок приведён в разделе 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) с поддержкой ввода изображений; формат запроса тот же.

Обновлено