В чат приходит сообщение: «Подскажите, как подключить уведомления только для новых заказов?» Приложению нужно определить его тип: вопрос, реклама или другое. Дальнейшее действие зависит от выбранной категории.
Jev от TypeSafe AI принимает данные и вопросы определённого типа, возвращая значения для кода: метку, оценку по шкале или вероятность ответа «да». Универсальные LLM тоже поддерживают structured outputs, и подобный процесс можно построить с их помощью. Jev стоит рассмотреть, когда нужен готовый контракт для решений: распределение по заданным вариантам при выборе категории и независимые вопросы к одним данным за вызов. Приложение получает и результат, и оценки, по которым может выбрать следующее действие.
Это разбор документации API на 22 октября 2026 года, без вызовов сервиса. Преимущества Jev в калибровке вероятностей, качестве и скорости здесь не проверялись.
Категория, шкала или вопрос «да/нет»
Для текстовых задач пригодятся три типа вопросов. Choice выбирает один вариант из набора: например, «вопрос», «реклама» или «другое» для сообщения в чате. Тем же способом можно определить тему обращения в поддержку и выбрать обработчик: оплата, доставка, возврат. Порядка между категориями нет.
Score оценивает текст по упорядоченным уровням. Для очереди обращений можно описать срочность: «может подождать», «мешает работе, но есть обходной путь», «работа остановлена». Три уровня занимают позиции от 0 до 2, а итоговый score может быть дробным, между уровнями. Это положение на описанной вами шкале.
Noul возвращает вероятность ответа «да» числом от 0 до 1. Например, содержит ли комментарий персональные данные или просит ли клиент поговорить с человеком. Такой сигнал пригодится для модерации и передачи оператору; порог для действия задаёт приложение.
В одном вызове можно определить тип сообщения через Choice и отдельно спросить через Noul, содержит ли оно персональные данные. Так приложение получает категорию и дополнительный сигнал для проверки. Вопросы оцениваются независимо: второй не получает ответ на первый. Зависимости между решениями нужно организовать в коде.
Первый запрос: определить тип сообщения
Возьмём Choice с категориями «вопрос», «реклама» и «другое». В инструкции зададим правило для смешанного случая: если рекламное сообщение содержит вопрос, выбирать рекламу.
По quickstart нужен Python 3.10 или новее и официальный пакет typesafe-sdk. Получите ключ в консоли TypeSafe и передайте его через переменную окружения TYPESAFE_API_KEY. Например, в PowerShell:
python -m pip install typesafe-sdk
$env:TYPESAFE_API_KEY = "ваш-ключ-из-консоли"
Сохраните код в classify_message.py. Клиент прочитает ключ из окружения. jev-latest выбирает актуальную модель по примеру документации, без фиксации версии.
from typesafe_sdk import Choice, TypeSafeClient
message = "Подскажите, как подключить уведомления только для новых заказов?"
with TypeSafeClient(model="jev-latest") as client:
response = client.system_one(
state=message,
questions={
"message_type": Choice(
instructions=(
"Определи тип сообщения в чате. "
"Если реклама содержит вопрос, выбери рекламу."
),
criteria={
"question": "Просьба о помощи или информации без рекламы",
"advertising": "Продвижение товара, услуги или внешнего канала",
"other": "Сообщение без рекламы и без просьбы о помощи или информации",
},
),
},
)
answer = response.choices["message_type"]
print("Метка:", answer.choice)
print("Вероятности:", answer.probabilities)
print("Confidence:", answer.confidence)
В той же сессии PowerShell запустите python classify_message.py.
state содержит оцениваемый текст; вместо строки допустимы структурированные данные, например сообщение вместе с правилами чата. В questions идентификатор message_type связывает вопрос с ответом, instructions задаёт задание, criteria описывает категории. В Python SDK ответы Choice доступны через response.choices.
Поле .choice содержит метку с наибольшей вероятностью, .probabilities содержит распределение по вариантам. Если оценки «вопрос» и «реклама» близки, приложение может отправить сообщение на разбор, даже когда одна метка формально победила. Распределение позволяет учесть такую неоднозначность при выборе действия.
Confidence для Choice вычисляется из наибольшей вероятности с поправкой на число вариантов: равномерному выбору соответствует 0, полной сосредоточенности на одном варианте соответствует 1. Это отдельный показатель, а не сама вероятность выбранной метки. Даже высокое значение не гарантирует, что модель правильно поняла сообщение.
Jev подходит для участка приложения, где нужно принять определённое заранее решение по содержанию текста: выбрать обработчик, расставить приоритеты или выделить сообщение для модератора. После классификации вопрос можно передать боту для подготовки ответа. Генерация развёрнутого текста и задачи с длительным рассуждением требуют отдельного этапа; Jev занимает место между входными данными и следующим действием кода.
Автор: aetseihe-it


