Регистрация

Jev от TypeSafe

Модель System One от TypeSafe: не пишет текст, а отвечает на вопросы о ваших данных числами — вероятность, выбранный вариант, оценка по шкале. Обычно за доли секунды. 5 ₽ за 1M входных токенов, выходные бесплатно.

Запрос: POST /typesafe/v1/systemone

Jev не чат-модель, поэтому эндпоинт свой — с префиксом /typesafe, без /v1 TokenDock в начале. Формат запроса и ответа тот же, что у API TypeSafe. Ключ тот же, что для остальных моделей, отдельный ключ TypeSafe не нужен. Запрос к /v1/chat/completions с этой моделью не работает.

endpoint
https://api.tokendock.cloud/typesafe/v1/systemone
Поле Тип Обяз. Описание
model string да Идентификатор модели — jev-latest.
state string · object · array да Данные, о которых задаются вопросы: текст или JSON.
questions object да Вопросы по именам. Имя вопроса — ключ, под ним же придёт ответ.

Как формулировать вопросы и варианты — в документации TypeSafe. Запросы из неё работают в TokenDock без изменений, кроме адреса и ключа. Тот же формат понимает Decider от Perplexity, который читает ещё и картинки.

Вопросы

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

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

Примеры

Два вопроса об одном отзыве.

bash · curl
curl https://api.tokendock.cloud/typesafe/v1/systemone \
  -H "Authorization: Bearer $TOKENDOCK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": { "review": "Доставили быстро, но товар сломан, верните деньги." },
    "questions": {
      "refund": {
        "type": "noul",
        "instructions": "Does the customer in `review` ask for a refund?"
      },
      "sentiment": {
        "type": "choice",
        "instructions": "What is the overall sentiment of `review`?",
        "criteria": { "positive": "satisfied", "negative": "unhappy", "neutral": "no clear feeling" }
      }
    }
  }'

С официальным SDK TypeSafe (pip install typesafe-sdk) задайте base URL https://api.tokendock.cloud/typesafe и ключ TokenDock. SDK сам добавит путь /v1/systemone и подставит модель jev-latest.

python · typesafe-sdk
# pip install typesafe-sdk
import os

from typesafe_sdk import TypeSafeClient, Choice, Noul

with TypeSafeClient(base_url="https://api.tokendock.cloud/typesafe", api_key=os.environ["TOKENDOCK_API_KEY"]) as client:
    response = client.system_one(
        state={"review": "Доставили быстро, но товар сломан, верните деньги."},
        questions={
            "refund": Noul(instructions="Does the customer in `review` ask for a refund?"),
            "sentiment": Choice(
                instructions="What is the overall sentiment of `review`?",
                criteria={"positive": None, "negative": None, "neutral": None},
            ),
        },
    )
    print(response.nouls["refund"].noul)
    print(response.choices["sentiment"].choice)

Ответ

json · ответ
{
  "model": "jev-1.13.0",
  "answers": {
    "refund": { "type": "noul", "noul": 0.98 },
    "sentiment": {
      "type": "choice",
      "choice": "negative",
      "confidence": 1.0,
      "probabilities": { "positive": 0.0, "negative": 1.0, "neutral": 0.0 }
    }
  },
  "usage": { "input_tokens": 290, "output_tokens": 30 }
}
  • answers — ответы под именами вопросов, у каждого поле type.
  • usage.input_tokens — то, за что списываются деньги. output_tokens в ответе есть, но не оплачивается.

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

json · 400
{ "detail": "Choice criteria must contain between 1 and 255 options" }

Тарификация

Jev стоит 5 ₽ за 1M входных токенов, выходные бесплатны — так же считает сам TypeSafe. Списание идёт с общего баланса, отдельного тарифа и минимального платежа нет.

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

Ограничения

  • Только текст — изображения, аудио и видео нужно заранее перевести в текст или взять Decider.
  • До 64 000 токенов на запрос, из них до 32 000 — на state вместе с самым длинным вопросом.
  • Модель обучена в первую очередь на английском. Русские данные она понимает, но инструкции и варианты ответа точнее работают на английском.
  • Streaming нет — ответ приходит целиком.
  • Порядок полей в объекте state не сохраняется — шлюз передаёт их по алфавиту. Если порядок важен, передавайте state массивом.

Несколько вопросов в одном запросе считаются параллельно и делят один state — это дешевле и быстрее, чем отдельный запрос на каждый вопрос.