Перейти к содержимомуKumoДокументация
Разделы
На странице
Шлюз

Решения

Вызов POST /v1/systemone — состояние и вопросы на входе, ответы вероятностями на выходе, и то, во что этот вызов обходится.

Открыть как Markdown

Быстро

Модель решений не пишет текст. Она читает состояние — 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 в ответе всегда ноль, и в учёте по нему стоит ноль. Сколько стоит миллион входных токенов конкретной модели, говорит прайс-лист.

Какие модели отвечают

Отвечает только модель, у которой в опубликованном каталоге есть протокол решений; в каталоге её модальность — «Решения». Модель другого протокола на этой поверхности отвергается, как и модель решений на поверхностях чата.

Каталог моделей → Прайс-лист →

Что дальше