Jev (TypeSafe AI)
Модель типизированных решений — официальный SDK TypeSafe через Nika Gateway, POST /v1/systemone
Jev (TypeSafe AI)
Jev — модель класса System One от TypeSafe AI. Она не пишет текст: на вход получает состояние (строку, JSON-объект или массив строк) и именованные вопросы, а возвращает типизированные ответы с вероятностями:
noul— да/нет, с вероятностью «да»;choice— один вариант из заданных, с вероятностью каждого;score— оценка по упорядоченной шкале.
Подходит там, где коду нужно решение, а не абзац текста: классификация обращений, маршрутизация, модерация, проверка утверждений по источнику.
Подключение официального SDK
Шлюз отвечает на тот же эндпоинт, что и TypeSafe, — POST /v1/systemone.
Официальные SDK собирают адрес из базового URL, поэтому хватает двух
переменных окружения, код менять не нужно:
export TYPESAFE_BASE_URL="https://nikagateway.ru"
export TYPESAFE_API_KEY="sk-tunnel-..."Python
pip install typesafe-sdkfrom typesafe_sdk import TypeSafeClient, Noul
client = TypeSafeClient(api_key="sk-tunnel-...", base_url="https://nikagateway.ru")
result = client.system_one(
"Мне дважды списали оплату.",
{"billing": Noul(instructions="Это вопрос об оплате?")},
)
print(result.nouls["billing"].noul)JavaScript и TypeScript
npm install @typesafe-ai/sdkimport { choice, TypeSafeClient } from "@typesafe-ai/sdk";
// Ключ и адрес берутся из TYPESAFE_API_KEY и TYPESAFE_BASE_URL
const client = new TypeSafeClient();
const response = await client.systemOne({
state: { document: "Мне дважды списали оплату, исправьте срочно." },
questions: {
category: choice("О чём это обращение?", {
billing: null,
technical: null,
other: null,
}),
},
});
console.log(response.answers.category.choice);Запрос без SDK
curl https://nikagateway.ru/v1/systemone \
-H "Authorization: Bearer sk-tunnel-..." \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "Помогите! Выплаты не проходят третий день.",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Звучит ли это срочно?",
"criteria": { "true": "Явно срочно", "false": "Срочности нет" }
}
}
}'Формат запроса и ответа — как у самого TypeSafe, см. их справочник API.
Модели
| Модель | Что это |
|---|---|
jev-latest | Актуальная версия: провайдер сам переводит алиас на новые версии Jev |
jev-1.13.0 | Закреплённая версия: ответы не меняются от обновлений модели |
Модель можно указать и в общем для шлюза виде — typesafe/jev-latest.
Голый jev-latest принимается ради совместимости с SDK: по умолчанию он
шлёт именно его. Поле model в ответе называет точную версию, которая
ответила, например jev-1.13.0.
Стоимость
Оплачиваются только входные токены — выход у Jev бесплатный. Цены — в каталоге моделей.
Как и на остальных эндпоинтах, в usage ответа шлюз добавляет стоимость
запроса и остаток баланса — строками, чтобы значение не теряло точность:
"usage": {
"input_tokens": 307,
"output_tokens": 20,
"cost_rub": "0.0126",
"balance": "1234.56"
}В объекте ответа SDK этих полей нет — модели ответа пропускают незнакомые
поля, — но они есть в исходном ответе. В Python:
result.raw_http_response.json()["usage"]["cost_rub"].
Ограничения
- До 64 тысяч токенов на запрос, из них до 32 тысяч — на
stateи самый длинный вопрос. Больший запрос отклонит сам провайдер, списания не будет. - Только текст: строка, JSON-объект или массив строк. Изображения, аудио и видео не поддерживаются.
- Потоковой отдачи нет: ответ приходит одним JSON.
- Ошибки провайдера (
401,422,429,529) доходят как есть, резерв при этом возвращается полностью.
Идентификатор запроса
В ответе два идентификатора: x-request-id — наш, по нему поддержка
Nika Gateway найдёт вызов в журнале, и x-typesafe-request-id — провайдера;
из него SDK заполняет result.request_id.