Справочник по API
Полный справочник по HTTP API для эндпоинта оценки TypeSafe.
Оцените state по карте типизированных questions и получите структурированные answers, по одному на вопрос. Для вводного знакомства начните с примитивов.
Эндпоинт оценки
POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer <API_KEY>
Content-Type: application/json
Тело запроса
Форма верхнего уровня каждого запроса. Каждая запись в карте questions — это типизированный вопрос, которому вы задаёте имя.
state
Содержимое для оценки. Обычная строка для текста или структурированные данные (объект/массив) для таких вещей, как журналы чата, записи или текущее состояние вашего приложения. О форматах и лучших практиках см. Состояние.
model
Модель, обрабатывающая запрос. Используйте "jev-latest" — флагманскую модель TypeSafe. Доступные модели и псевдонимы см. в разделе Модели.
questions
{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this convey urgency?"
}
}
}
Типы вопросов
Question бывает одного из трёх типов, задаваемых его полем type. Все три разделяют type и instructions; каждый добавляет свои criteria.
Свойство instructions может быть строкой, объектом или массивом. Длинный вопрос с дополнительным контекстом или данными, на которые нужно ссылаться, можно разбить на структурированный объект. Поместите вопрос в одно поле, а данные — в другие и ссылайтесь на поля данных по имени в обратных кавычках так же, как указываете вопрос на вложенное значение state:
"instructions": {
"potential_duplicate": {
"name": "John Smith",
"location": "Oakland, California",
"last_employer": "Google"
},
"question": "Is the resume for the same person as `potential_duplicate`?"
}
Подробнее см. Использование структуры в вопросах.
Noul
Вопрос «да/нет». Возвращает вероятность того, что ответ — «да».
type
instructions
Вопрос «да/нет» для оценки. Объект может содержать вопрос в одном поле, а данные, на которые он ссылается, — в других; см. Использование структуры в вопросах.
criteria
Необязательные описания того, что означают «да» и «нет».
свойства
true
Что означает «да» (значение около 1).
false
Что означает «нет» (значение около 0).
{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this convey urgency?",
"criteria": {
"true": "Explicitly time-sensitive",
"false": "No urgency expressed"
}
}
}
}
Choice
Выбирает один вариант из заданного вами набора. Возвращает выбранный вариант и полное распределение вероятностей.
type
instructions
Что должна решить модель. Объект может содержать вопрос в одном поле, а данные, на которые он ссылается, — в других; см. Структурированные инструкции и критерии.
criteria
Карта соответствия варианта описанию по рубрике; используйте null, когда варианту не нужны дополнительные сведения. В одном Choice может быть не более 255 вариантов.
записи карты
‹option›
Ключ, который вы выбираете. Описание этого варианта.
{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments, invoicing, refunds",
"technical": "Bugs, outages, integrations",
"sales": "Pricing, upgrades, new accounts"
}
}
}
}
Score
Оценивает состояние по заданной вами рубрике. Возвращает взвешенное по вероятностям значение по вашим уровням.
type
instructions
Что должна оценить модель. Объект может содержать вопрос в одном поле, а данные, на которые он ссылается, — в других; см. Использование структуры в вопросах.
criteria
Упорядоченный массив описаний уровней. У Score должно быть не менее двух уровней; API принимает максимум 10.
{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated", "Very angry"]
}
}
}
Тело ответа
По одному ответу на вопрос, возвращаемых под теми же id, которые вы указали.
model
Модель, выполнившая оценку.
answers
По одному Answer на вопрос, с ключами по тем же id, что вы использовали в questions.
записи карты
‹question id›
Тот же id, который вы выбрали в questions.
usage
Использование токенов для запроса.
свойства
input_tokens
output_tokens
{
"model": "jev-1.13.0",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.95
}
},
"usage": { "input_tokens": 296, "output_tokens": 20 }
}
Типы ответов
Каждый ответ несёт type, соответствующий своему вопросу. Ответы Choice и Score также несут confidence в диапазоне от 0 до 1, выведенную из распределения вероятностей ответа. См. Уверенность.
Ответ Noul
type
noul
Ответ «да/нет» по шкале от 0 («нет») до 1 («да»).
{
"model": "jev-1.13.0",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.95
}
},
"usage": { "input_tokens": 307, "output_tokens": 20 }
}
Ответ Choice
type
choice
Вариант с наибольшей вероятностью.
probabilities
Каждый вариант, сопоставленный своей вероятности (числа с плавающей точкой, суммирующиеся в 1).
записи карты
‹option›
Вариант, который вы определили в criteria.
confidence
Насколько модель уверена; выводится из вероятностей.
{
"model": "jev-1.13.0",
"answers": {
"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
"confidence": 0.81
}
},
"usage": { "input_tokens": 318, "output_tokens": 34 }
}
Ответ Score
type
score
Взвешенный по вероятностям ответ по уровням; может попасть между уровнями.
legend
Номер каждого уровня, сопоставленный его описанию.
probabilities
Каждый уровень (строковый ключ), сопоставленный своей вероятности (числа с плавающей точкой, суммирующиеся в 1).
записи карты
‹level›
Индекс уровня в виде строкового ключа, соответствующего legend.
confidence
Насколько модель уверена; выводится из вероятностей.
{
"model": "jev-1.13.0",
"answers": {
"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}
},
"usage": { "input_tokens": 304, "output_tokens": 18 }
}
Ошибки
Ошибки используют стандартные коды состояния HTTP с телом JSON, описывающим, что пошло не так.
| Статус | Значение |
|---|---|
401 Unauthorized |
Отсутствует или недействителен ключ API. Проверьте заголовок Authorization. |
422 Unprocessable Entity |
Тело запроса не прошло проверку — например, отсутствует обязательное поле или вопрос сформирован неверно. В теле указано проблемное поле. |
429 Too Many Requests |
Вы превысили ограничение скорости запросов. Сделайте паузу и повторите попытку через короткую задержку. |
529 Overloaded |
TypeSafe временно перегружен. Повторите попытку через короткую задержку. |
Обработка ограничений скорости
Когда вы получаете ответ 429 Too Many Requests или 529 Overloaded, повторяйте запрос с экспоненциальной задержкой, а не сразу. Наши клиентские SDK обрабатывают это автоматически, так что дополнительная обработка не нужна, если вы используете один из наших SDK с политикой повторов по умолчанию.