Решения
Вызов POST /v1/systemone — состояние и вопросы на входе, ответы вероятностями на выходе, и то, во что этот вызов обходится.
Быстро
Модель решений не пишет текст. Она читает состояние — state — и отвечает на ваши вопросы вероятностями: да или нет, какой вариант из нескольких, какое место на шкале. Одна операция принимает состояние и словарь вопросов и отвечает словарём ответов под теми же ключами. Формат запроса — System One, тот же, что у OpenRouter: клиент, уже написанный под него, меняет только базовый адрес.
curl https://api.kumorouter.com/v1/systemone \
-H "Authorization: Bearer $KUMO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<model>",
"state": "Клиент третий раз за неделю пишет, что заказ не пришёл, и просит вернуть деньги.",
"questions": {
"refund": {
"type": "noul",
"instructions": "Клиент просит вернуть деньги?"
},
"topic": {
"type": "choice",
"instructions": "О чём обращение?",
"criteria": {
"delivery": "доставка и сроки",
"payment": "оплата и возвраты",
"other": "что-то другое"
}
},
"urgency": {
"type": "score",
"instructions": "Насколько срочно нужно ответить?",
"criteria": ["можно подождать", "в течение дня", "немедленно"]
}
}
}'Члены запроса
modelОбязателен. Модель каталога с протоколом решений, в том имени, которым её называет клиент.stateОбязателен. То, о чём модель судит: строка, JSON-объект или JSON-массив.questionsОбязателен. Непустой объект: ключ — ваше имя вопроса, значение — сам вопрос. Ключ нужен вашему коду, чтобы найти ответ.state может быть строкой — письмом, репликой, описанием, — JSON-объектом с именованными полями, если состояние удобнее разложить по частям, или JSON-массивом: списком сообщений или списком частей содержимого вроде [{"type":"text","text":"…"}], среди которых некоторые модели читают и изображения. Состояние доходит до модели ровно таким, каким вы его отправили. Читает ли изображения конкретная модель, зависит от модели; это говорят её страница и каталог.
Стриминга у этой поверхности нет: ответ приходит целиком.
Типы вопросов
Каждый вопрос несёт type и instructions — суждение, которое вы просите вынести; вопрос без instructions вышестоящий сервис отклоняет. Вопросы одного запроса решаются независимо друг от друга.
noulДа или нет: верно ли утверждение.choiceКакой вариант из нескольких.scoreКакое место на упорядоченной шкале.noul
criteria необязателен: объект с описаниями true и false, если «да» и «нет» стоит уточнить. Ответ несёт noul — вероятность «да», от 0 до 1.
choice
criteria обязателен: объект «метка → описание», с одной меткой или больше; описание метки может быть null. Ответ несёт choice — выбранную метку, probabilities — вероятность каждой метки, и confidence — насколько уверен выбор.
score
criteria обязателен: список уровней, от низшего к высшему. Ответ несёт score — позицию, взвешенную по вероятностям, от 0 до числа уровней минус один; legend — номер каждого уровня и его текст; probabilities — вероятность каждого уровня; и confidence.
Ответ
idИдентификатор вызова.modelМодель, которая ответила.answersОтвет на каждый вопрос, под тем же ключом, что и вопрос; `type` повторяет тип вопроса.usage`input_tokens` — входные токены вызова; `output_tokens` всегда `0`.{
"id": "dec-<request id>",
"model": "<model>",
"answers": {
"refund": { "type": "noul", "noul": 0.97 },
"topic": {
"type": "choice",
"choice": "payment",
"confidence": 0.81,
"probabilities": { "delivery": 0.17, "payment": 0.82, "other": 0.01 }
},
"urgency": {
"type": "score",
"score": 1.62,
"confidence": 0.58,
"legend": { "0": "можно подождать", "1": "в течение дня", "2": "немедленно" },
"probabilities": { "0": 0.04, "1": 0.3, "2": 0.66 }
}
},
"usage": { "input_tokens": 412, "output_tokens": 0 }
}Во что обходится вызов
Считается вызов только по входным токенам: у моделей решений есть цена за вход и нет цены за выход, поэтому output_tokens в ответе всегда ноль, и в учёте по нему стоит ноль. Сколько стоит миллион входных токенов конкретной модели, говорит прайс-лист.
Какие модели отвечают
Отвечает только модель, у которой в опубликованном каталоге есть протокол решений; в каталоге её модальность — «Решения». Модель другого протокола на этой поверхности отвергается, как и модель решений на поверхностях чата.
Каталог моделей → Прайс-лист →