Модели решений не пишут текст. Им передают данные — тикет, сообщение, карточку товара — и набор вопросов, а в ответ приходят готовые вероятности: «это ошибка с вероятностью 0,96», «тикет относится к платежам на 79%», «срочность — 2 из 2». Такой ответ не нужно разбирать регулярными выражениями или просить модель «ответить строго в JSON»: код сразу сравнивает числа с порогом и решает, что делать дальше.

Поэтому модели решений быстрые и дешёвые — они читают вход и не тратят время и деньги на генерацию длинного ответа.

  • Маршрутизация: какой команде отдать обращение, какой модели передать запрос, какой сценарий запустить.
  • Модерация: нарушает ли сообщение правила, есть ли в нём спам или оскорбления.
  • Защитные проверки: не пытается ли пользователь обойти инструкции, можно ли показать ответ модели клиенту.
  • Оценка и сортировка: срочность, тональность, качество ответа, приоритет лида.

Эндпоинт — /v1/decisions. Обязательных полей три:

  • model — модель решений, например typesafe/jev-1.13;
  • state — данные, о которых задаются вопросы: строка, объект или массив;
  • questions — объект, где ключ — имя вопроса, а значение — сам вопрос.

У каждого вопроса есть type, текст instructions и criteria — описание вариантов ответа. Типов три:

ТипЧто спрашиваетcriteria
noulДа или нетОбъект с ключами true и false
choiceОдин вариант из несколькихОбъект: вариант → его описание
scoreОценка по шкалеМассив уровней от низшего к высшему

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

curl "https://api.proxyapi.ru/v1/decisions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer <КЛЮЧ>" \
    -d '{
        "model": "typesafe/jev-1.13",
        "state": {
            "customer_tier": "enterprise",
            "ticket": "После нажатия «Оплатить» страница оформления заказа становится пустой. Пробовал в двух браузерах."
        },
        "questions": {
            "is_bug": {
                "type": "noul",
                "instructions": "Сообщает ли клиент об ошибке в продукте?",
                "criteria": {
                    "true": "Клиент описывает сломанное или неожиданное поведение продукта.",
                    "false": "Клиент задаёт вопрос или просит новую функцию."
                }
            },
            "team": {
                "type": "choice",
                "instructions": "Какая команда должна взять этот тикет?",
                "criteria": {
                    "account": "Вход, права доступа или профиль.",
                    "frontend": "Отображение, вёрстка или совместимость с браузерами.",
                    "payments": "Оформление заказа, биллинг или обработка платежей."
                }
            },
            "urgency": {
                "type": "score",
                "instructions": "Насколько срочен этот тикет?",
                "criteria": [
                    "Может подождать следующего релиза",
                    "Нужно исправить на этой неделе",
                    "Прямо сейчас блокирует выручку"
                ]
            }
        }
    }'

Библиотеки OpenAI и Anthropic не знают об этом эндпоинте, поэтому запрос отправляется обычным HTTP-клиентом с тем же ключом и тем же адресом.

Ответы лежат в answers под теми же именами, что и вопросы:

{
    "id": "gen-dec-1791204202-3bfcqiCiGYGS50QdaGaU",
    "model": "typesafe/jev-1.13-20260917",
    "answers": {
        "is_bug": {"type": "noul", "noul": 0.96},
        "team": {
            "type": "choice",
            "choice": "payments",
            "probabilities": {"payments": 0.79, "frontend": 0.21, "account": 0},
            "confidence": 0.68
        },
        "urgency": {
            "type": "score",
            "score": 1.99,
            "legend": {
                "0": "Может подождать следующего релиза",
                "1": "Нужно исправить на этой неделе",
                "2": "Прямо сейчас блокирует выручку"
            },
            "probabilities": {"0": 0, "1": 0.01, "2": 0.99},
            "confidence": 0.99
        }
    },
    "usage": {"input_tokens": 476, "output_tokens": 70}
}
  • noul — вероятность ответа «да», от 0 до 1.
  • choice — самый вероятный вариант в choice, вероятности всех вариантов в probabilities и уверенность модели в confidence.
  • score — оценка в score: дробное число, где 0 — первый уровень шкалы, а последний индекс — последний уровень. В legend повторяются уровни, в probabilities — вероятность каждого.

В поле model может прийти конкретная версия модели, которая ответила на запрос, — например, с датой выпуска.

Вместо «да» или «нет» модель возвращает число, поэтому порог выбираете вы. Для модерации разумно отклонять сообщение уже при вероятности нарушения 0,5, а для автоматического закрытия тикета — требовать 0,9 и выше. Если confidence низкий, решение лучше передать человеку или текстовой модели.

Все доступные модели решений и их цены — в каталоге, в категории Решения. Через /v1/models они тоже доступны вместе с остальными моделями.

Оплачиваются только входные токены: данные из state и сами вопросы. Ответ не тарифицируется.

Количество входных токенов зависит от модели: каждая по-своему разворачивает вопросы и критерии, поэтому один и тот же запрос у разных моделей может стоить по-разному. Точное число приходит в usage.input_tokens.

  • Потоковая передача не поддерживается: ответ приходит целиком.
  • Маскирование не применяется — данные из state передаются модели как есть.
  • Пакетная обработка для моделей решений недоступна.
  • Если запрос составлен неверно — нет state, пустой questions или неизвестный тип вопроса, — вернётся ошибка 400 с описанием, что именно не так. Подробнее — в разделе Ошибки.

Частые вопросы

Чем модель решений отличается от текстовой модели с ответом в JSON?

Текстовая модель пишет ответ токен за токеном и может ошибиться в формате или придумать вариант, которого нет в списке. Модель решений сразу возвращает вероятности по заданным вариантам в одной и той же структуре, а платить нужно только за вход — поэтому она быстрее и дешевле.

Сколько вопросов можно задать в одном запросе?

Сколько угодно, пока запрос помещается в контекст модели. Все вопросы оцениваются по одним и тем же данным за один вызов, поэтому задать их вместе дешевле, чем отправлять по отдельности.

Какой порог вероятности выбрать?

Зависит от цены ошибки. Для мягких действий вроде пометки «на проверку» хватает 0,5, для необратимых — автоматического закрытия или блокировки — лучше требовать 0,9 и выше. Порог стоит подобрать на нескольких десятках реальных примеров.

Можно ли отправить запрос через библиотеку OpenAI?

Нет, в библиотеках OpenAI и Anthropic такого метода нет. Запрос отправляется любым HTTP-клиентом на https://api.proxyapi.ru/v1/decisions с тем же ключом, что и остальные запросы.

Последняя редакция: 6 октября 2026 г.