Регистрация

Decider от Perplexity

Модель решений от Perplexity: не пишет текст, а отвечает на вопросы о ваших данных числами — вероятность, выбранный вариант, оценка по шкале. Читает текст, JSON и картинки. 2,44 ₽ за 1M входных токенов, выходные бесплатно.

Запрос: POST /openrouter/api/alpha/decisions

Decider не чат-модель, поэтому эндпоинт свой — путь Decisions API OpenRouter с префиксом /openrouter, без /v1. Ключ тот же, что для остальных моделей, отдельный ключ OpenRouter или Perplexity не нужен. Запрос к /v1/chat/completions с этой моделью не работает.

endpoint
https://api.tokendock.cloud/openrouter/api/alpha/decisions
Поле Тип Обяз. Описание
model string да Идентификатор модели — perplexity/pplx-decider-v1.2.
state string · object · array да Данные, о которых задаются вопросы: текст, JSON или массив из текста и картинок.
questions object да Вопросы по именам, от 1 до 128. Имя вопроса — ключ, под ним же придёт ответ.

Формат тот же, что у Jev от TypeSafe, — вопросы можно переносить между моделями без изменений. Полное описание полей — в справочнике Decisions API OpenRouter.

Вопросы

Каждый вопрос в questions — объект из трёх полей.

Поле Описание
type Тип вопроса — noul, choice или score.
instructions Сам вопрос — текст или JSON. Обязателен для всех типов.
criteria Для choice — объект вариантов от 1 до 255, описание варианта может быть null. Для score — массив уровней от худшего к лучшему, от 2 до 10. Для noul — необязательный объект с описанием true и false.
Тип Что приходит в ответе Пример вопроса
noul noul — вероятность «да» от 0 до 1 Сообщает ли клиент об ошибке в продукте
choice choice — выбранный вариант, probabilities — вероятность каждого, confidence Какой команде отдать обращение — оплата, доставка, аккаунт
score score — ожидаемая позиция на шкале от 0, probabilities по уровням, legend, confidence Насколько срочное обращение — от «подождёт» до «горит»

Примеры

Три вопроса разных типов об одном обращении в поддержку.

bash · curl
curl https://api.tokendock.cloud/openrouter/api/alpha/decisions \
  -H "Authorization: Bearer $TOKENDOCK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "perplexity/pplx-decider-v1.2",
    "state": { "ticket": "После нажатия «Оплатить» страница становится белой. Пробовал два браузера." },
    "questions": {
      "is_bug": {
        "type": "noul",
        "instructions": "Is the customer in `ticket` reporting a software defect?"
      },
      "team": {
        "type": "choice",
        "instructions": "Which team should own this ticket?",
        "criteria": {
          "payments": "Checkout, billing or payment processing issues",
          "delivery": "Shipping and delivery issues",
          "account": "Login, permissions or profile issues"
        }
      },
      "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"]
      }
    }
  }'

Тот же запрос из Python — обычный HTTP, SDK не нужен.

python · requests
import os

import requests

response = requests.post(
    "https://api.tokendock.cloud/openrouter/api/alpha/decisions",
    headers={"Authorization": f"Bearer {os.environ['TOKENDOCK_API_KEY']}"},
    json={
        "model": "perplexity/pplx-decider-v1.2",
        "state": {"ticket": "После нажатия «Оплатить» страница становится белой."},
        "questions": {
            "is_bug": {"type": "noul", "instructions": "Is the customer in `ticket` reporting a defect?"},
        },
    },
    timeout=90,
)
response.raise_for_status()
print(response.json()["answers"]["is_bug"]["noul"])

Картинки

Картинку передают элементом массива state рядом с текстом — в формате image_url, как в Chat Completions. Подходит только base64 data URL с типом image/png, image/jpeg или image/webp: ссылки http(s) модель не загружает. Картинка считается входными токенами — около 1 000 токенов на мегапиксель.

json · картинка в state
{
  "model": "perplexity/pplx-decider-v1.2",
  "state": [
    "Объявление: красная квадратная наклейка",
    { "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } }
  ],
  "questions": {
    "matches_title": { "type": "noul", "instructions": "The photo shows the item from the listing title." },
    "color": {
      "type": "choice",
      "instructions": "What color is the item?",
      "criteria": { "red": null, "green": null, "blue": null }
    }
  }
}

Ответ

Настоящий ответ на запрос из примера, числа округлены.

json · ответ
{
  "answers": {
    "is_bug": { "type": "noul", "noul": 0.9972 },
    "team": {
      "type": "choice",
      "choice": "payments",
      "confidence": 0.9965,
      "probabilities": { "account": 0.0006, "delivery": 0.0017, "payments": 0.9977 }
    },
    "urgency": {
      "type": "score",
      "score": 1.9585,
      "confidence": 0.9585,
      "legend": {
        "0": "Can wait for the next release",
        "1": "Should be fixed this week",
        "2": "Blocking revenue right now"
      },
      "probabilities": { "0": 0.0031, "1": 0.0353, "2": 0.9616 }
    }
  },
  "id": "gen-dec-...",
  "model": "perplexity/pplx-decider-v1.2-20261016",
  "provider": "Perplexity",
  "usage": { "input_tokens": 207, "output_tokens": 3 }
}
  • answers — ответы под именами вопросов, у каждого поле type.
  • У score позиция считается от нуля: 1.9956 на шкале из трёх уровней — почти верхний уровень. legend повторяет уровни из запроса.
  • usage.input_tokens — то, за что списываются деньги. output_tokens в ответе есть, но не оплачивается.

Ошибки приходят в формате OpenRouter, например на вопрос неизвестного типа:

json · 400
{ "error": { "code": 400, "message": "Each question must have type noul, choice or score" } }

Тарификация

Decider стоит 2,44 ₽ за 1M входных токенов, выходные бесплатны — так же считает OpenRouter. В токены входят state, все вопросы и картинки. Цена в рублях следует за курсом, как у остальных моделей каталога.

  • Запрос из примера — 207 токенов, около 0,0005 ₽.
  • На время запроса с баланса резервируется стоимость 262 144 токенов — около 0,64 ₽. После ответа списываются только фактические входные токены.
  • Отклонённый запрос не тарифицируется.
  • В журнале запросов prompt_tokens равен 0, объём запроса — в деталях записи, input_tokens.
Как считается стоимость

Ограничения

  • До 262 144 токенов на запрос вместе с state, вопросами и картинками.
  • Streaming нет — ответ приходит целиком. Большой запрос около предела контекста считается до 20–30 секунд.
  • Порядок полей в объекте state не сохраняется — шлюз передаёт их по алфавиту. Если порядок важен, передавайте state массивом.
  • Perplexity не указывает, на каких языках обучена модель. Русские данные проверяйте на своих примерах, а инструкции и варианты ответа надёжнее писать на английском.

Числа удобно сравнивать с порогом прямо в коде: например, отправлять обращение человеку, когда noul ниже 0,8 или confidence у choice ниже 0,9.