Перейти к содержимому
EN

Решения (Decisions)

POST /v1/decisions — эндпоинт для decision-моделей (System One). В отличие от чат-моделей, они не генерируют текст: вы отправляете состояние приложения (state) и один или несколько типизированных вопросов (questions), а получаете обратно типизированные ответы с вероятностями, по которым код ветвится напрямую — без парсинга свободного текста.

Это замена паттерну «спросить у LLM узкий вопрос и вытащить метку из ответа»: быстрее, дешевле и предсказуемее.

Модели: typesafe/jev-1.13 (TypeSafe Jev, контекст 32K) и jaredpalmer/kev-4b (Jared Palmer Kev 4B, компактная открытая Apache-2.0 альтернатива, контекст 8K). Контракт у обеих один — /v1/systemone.

Примитив Вопрос Что возвращается
noul Выполняется ли условие? Вероятность «да» (0…1)
choice Какой из вариантов? Выбранный вариант, вероятность каждого, уверенность
score Где на упорядоченной шкале? Взвешенная позиция, вероятности уровней, уверенность

Один запрос может содержать сколько угодно вопросов разных типов — ответ придёт по каждому.

{
"model": "typesafe/jev-1.13",
"state": "…контекст: строка, объект или массив…",
"questions": {
"is_bug": { "type": "noul", "instructions": "…", "criteria": { "true": "…", "false": "…" } },
"team": { "type": "choice", "instructions": "…", "criteria": { "billing": "…", "tech": "…" } },
"urgency": { "type": "score", "instructions": "…", "criteria": ["…", "…", "…"] }
},
"session_id": "опционально — группировка запросов",
"user": "опционально — идентификатор конечного пользователя"
}
Поле Тип Обязательно Описание
model string да typesafe/jev-1.13 (алиасы jev, jev-1.13) или jaredpalmer/kev-4b (алиасы kev, kev-4b)
state string | object | array да Контекст для оценки: текст тикета, объект состояния, массив связанных данных
questions object да Map «имя → вопрос». Имя становится ключом в answers
session_id string нет Группировка связанных запросов (воркфлоу, диалог) — до 256 символов
user string нет Идентификатор конечного пользователя — до 256 символов

Общие поля: type (обязательно), instructions (обязательно) — сам вопрос словами.

  • noul — criteria с ключами true и false (оба обязательны): по паре предложений модель понимает границу условия.
  • choice — criteria как объект «вариант → описание» (обязательно). В ответе — выбор и распределение по всем вариантам.
  • score — criteria как массив упорядоченных уровней (обязательно, ≥1). Уровень 0 — низ шкалы.

Критерии и instructions могут быть не только строками — принимается структурное руководство (объекты/массивы).

{
"id": "gen-dec-…",
"model": "typesafe/jev-1.13-20260917",
"provider": "TypeSafe",
"answers": {
"is_bug": { "type": "noul", "noul": 0.96 },
"team": { "type": "choice", "choice": "payments", "confidence": 0.75,
"probabilities": { "account": 0, "frontend": 0.16, "payments": 0.84 } },
"urgency": { "type": "score", "score": 1.99, "confidence": 0.99,
"probabilities": { "0": 0, "1": 0.01, "2": 0.99 },
"legend": { "0": "Can wait", "1": "This week", "2": "Blocking revenue" } }
},
"usage": { "cost": 0.00002, "cost_rub": "0.0023", "billing_source": "openrouter",
"input_tokens": 476, "output_tokens": 70 }
}
  • noul → noul: вероятность «да».
  • choice → choice (выбранный вариант), probabilities по каждому, confidence.
  • score → score (взвешенная позиция 0…N−1), probabilities по уровням, legend — соответствие индексов вашим формулировкам, confidence.
  • usage.cost — стоимость запроса в USD (как у остальных эндпоинтов), cost_rub — списание в рублях.

Платятся только входные токены (state + вопросы) — по цене модели на странице каталога; выходные бесплатны. Типичный запрос (~500 токенов) стоит доли копейки. Списание — по фактическому usage.cost из ответа.

Окно терминала
curl https://api.mixen.ai/v1/decisions \
-H "Authorization: Bearer $MIXEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"state": "My checkout page shows a blank screen after I click Pay. Tried two browsers.",
"questions": {
"is_bug": {
"type": "noul",
"instructions": "Is the customer reporting a software defect?",
"criteria": {
"true": "Describes broken or unexpected product behavior.",
"false": "Asks a question or requests a feature."
}
},
"team": {
"type": "choice",
"instructions": "Which team should own this ticket?",
"criteria": {
"payments": "Checkout, billing, payment processing.",
"frontend": "Rendering, layout, browser compatibility."
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is this ticket?",
"criteria": ["Can wait for the next release", "Should be fixed this week", "Blocking revenue right now"]
}
}
}'
  • Маршрутизация — какой команде/очереди принадлежит обращение.
  • Гейтинг агентов — безопасен ли тул-колл (обратим? в рамках задачи?) — выполнять, отказывать или звать человека по порогу noul.
  • Классификация и теги — категория + произвольное число бинарных меток за один запрос.
  • Каскады — черновик дешёвой моделью, проверка фактов decision-моделью, эскалация на дорогую только при провале проверки.

Выбирайте пороги по confidence/probabilities, а не только по главному ответу: низкая уверенность — сигнал отдать случай человеку или переспросить.

  • Модель не генерирует текст и не объясняет решение — только вероятности. Нужна мотивировка — спросите чат-модель после.
  • Контекст зависит от модели: 32K у Jev, 8K у Kev 4B (state плюс вопросы).
  • Ошибки — стандартные коды платформы: 400 (невалидные параметры, включая ошибки в criteria), 402, 404 model_not_found, 429, 502 (сбой апстрима).