Jev от TypeSafe
Модель System One от TypeSafe: не пишет текст, а отвечает на вопросы о ваших данных числами — вероятность, выбранный вариант, оценка по шкале. Обычно за доли секунды. 5 ₽ за 1M входных токенов, выходные бесплатно.
Запрос: POST /typesafe/v1/systemone
Jev не чат-модель, поэтому эндпоинт свой — с префиксом /typesafe, без
/v1 TokenDock в начале. Формат запроса и ответа тот же, что у API TypeSafe. Ключ тот же,
что для остальных моделей, отдельный ключ TypeSafe не нужен. Запрос к
/v1/chat/completions с этой моделью не работает.
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 | Насколько клиент раздражён — от «спокоен» до «в ярости» |
Примеры
Два вопроса об одном отзыве.
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.
# 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) Ответ
{
"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 без вариантов:
{ "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 — это
дешевле и быстрее, чем отдельный запрос на каждый вопрос.