Jev от TypeSafe уже на Kodagent: модель, которая принимает решения
В каталоге появилась модель нового типа — Jev 1.13 от TypeSafe. Это не чат-модель: на вопрос она отвечает не текстом, а решением — вероятностью «да», выбором из заданных вариантов или оценкой по шкале. TypeSafe называет такие модели System One: они нужны там, где приложению надо быстро и предсказуемо решить, что делать дальше, — куда направить обращение, к какой категории отнести письмо, передать ли случай человеку.
Чем модель решений отличается от обычной LLM
Чтобы классифицировать текст обычной LLM, её просят ответить одним словом, а потом разбирают
ответ — и надеются, что вместо billing не придёт «Конечно! Это вопрос об оплате». Jev сразу
возвращает типизированный ответ, который код использует как есть: ни разбора текста, ни
промпт-инжиниринга вокруг формата.
Вопросы бывают трёх типов:
| Тип | Пример вопроса | Что приходит в ответ |
|---|---|---|
noul | Просит ли клиент вернуть деньги? | noul — вероятность «да», от 0 до 1 |
choice | Какой команде отдать обращение? | choice — самый вероятный вариант, плюс probabilities и confidence |
score | Насколько клиент раздражён? | score — позиция на шкале из 2–10 уровней, плюс probabilities и confidence |
В одном запросе можно задать сколько угодно вопросов о том же тексте: по словам TypeSafe, они вычисляются параллельно, и лишние вопросы почти не замедляют ответ.
Пример
Запрос состоит из трёх частей: model, state — ситуация, о которой нужно решить (текст
обращения, письмо, JSON-событие), — и questions, именованные вопросы. Имена выбираете вы, и
ответ на каждый вопрос приходит под тем же именем:
curl https://kodagent.ru/api/llm/v1/systemone \
-H "Authorization: Bearer <ваш-api-ключ>" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1.13",
"state": "You charged me twice for the subscription this month. Refund the extra payment, this is my third email!",
"questions": {
"refund": {
"type": "noul",
"instructions": "Does the customer ask for money back?"
},
"team": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "payments, charges and refunds",
"technical": "bugs and errors",
"account": "login and profile settings"
}
},
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["calm", "frustrated", "very frustrated"]
}
}
}'
Ответ (значения для примера, служебные поля опущены):
{
"model": "jev-1.13",
"answers": {
"refund": { "type": "noul", "noul": 0.97 },
"team": {
"type": "choice",
"choice": "billing",
"confidence": 0.93,
"probabilities": { "billing": 0.95, "technical": 0.03, "account": 0.02 }
},
"frustration": {
"type": "score",
"score": 1.4,
"confidence": 0.71,
"legend": { "0": "calm", "1": "frustrated", "2": "very frustrated" },
"probabilities": { "0": 0.08, "1": 0.44, "2": 0.48 }
}
},
"usage": { "input_tokens": 412, "output_tokens": 61 }
}
Дальше это обычный код: refund.noul > 0.9 — открыть возврат, team.choice — выбрать
очередь, низкий confidence — отдать обращение человеку.
Примеры — на английском, как в документации TypeSafe. Русский текст в state тоже можно
передавать, но качество на своих данных стоит проверить заранее.
Как подключить
- Создайте ключ на странице «API-ключи» — подойдёт любой ваш ключ, отдельного доступа не нужно.
- Отправляйте запросы на
https://kodagent.ru/api/llm/v1/systemone, как в примере выше. Готовыйcurlесть и на странице «Модели» в консоли.
Если у вас уже есть код на SDK TypeSafe, менять его не придётся: укажите в клиенте базовый
адрес https://kodagent.ru/api/llm и наш API-ключ (параметр apiKey, в Python — api_key,
или переменная TYPESAFE_API_KEY). Модель задайте явно — jev-1.13: SDK по умолчанию
просит jev-latest, а мы не держим имён, которые молча меняют модель. Когда TypeSafe выпустит
новую версию, она появится в каталоге отдельной строкой.
Цены
Цены за 1M токенов, списываются с баланса кредитов (1 кредит = $0.01; при курсе по умолчанию 1 кредит = 1 ₽):
| USD / 1M | Кредитов / 1M | |
|---|---|---|
| Вход | $0.042 | 5 |
| Выход | $0 | 0 |
В кредитах цена входа округляется вверх до целой единицы — 5 кредитов за 1M токенов. Выход бесплатный, а ответ на вопрос — это несколько токенов. Обращение из примера выше, с тремя вопросами, стоит около 0,002 кредита: тысяча таких решений — примерно 2 кредита.
Что важно знать
- Только текст: строки, JSON и массивы текста. Изображения и аудио Jev не принимает.
- Контекст — 64K токенов.
- Ответ приходит целиком: стриминга у этого API нет, запрос с
"stream": trueвернёт ошибку. - Это не собеседник. Jev нет в чате консоли и в списке моделей облачных агентов: она не пишет
текст и не вызывает инструменты. А чат-модели не отвечают на
/v1/systemone— для них остаются обычные полосы шлюза. - Вероятности — не гарантия. TypeSafe калибрует их на множестве ответов, но отдельный ответ может ошибаться. Выберите порог и отправляйте спорные случаи человеку.
Несколько советов из документации TypeSafe: в одном noul — одно условие (два условия —
два вопроса, а результат объединяется в коде); формулируйте вопрос так, чтобы высокое значение
означало «да»; для степени («насколько…») берите score, а не noul.
Удачной разработки!