ДокументацияСправочник моделей и APIСправочник HTTP API

Справочник HTTP API

Full HTTP API reference for the TypeSafe evaluation endpoint.

Полный справочник по HTTP API для эндпоинта оценки TypeSafe.

Оценивайте state по набору типизированных вопросов questions и получайте структурированные ответы answers (по одному на каждый вопрос). Для вводного руководства начните с раздела Примитивы (Primitives).

Эндпоинт оценки

HTTP THEME={NULL} api.wedstack.ru/v1
POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer <API_KEY>
Content-Type: application/json

Тело запроса (Request body)

Структура верхнего уровня каждого запроса. Каждая запись в словаре questions представляет собой типизированный вопрос с присвоенным вами идентификатором.

Содержимое для оценки. Обычная строка для текста либо структурированные данные (объект/массив) для логов чата, записей базы данных или текущего состояния вашего приложения. Форматы и лучшие практики описаны в разделе [Состояние (State)](/docs/concepts/state). Модель, обрабатывающая запрос. Используйте `"jev-latest"`, флагманскую модель TypeSafe. Доступные модели и псевдонимы описаны в разделе [Модели](/docs/models). Словарь типизированных объектов [Question](#question-types). Вы сами выбираете ключи; ответы возвращаются под теми же ключами. Выбранный вами ключ. Соответствующий ответ [Answer](#answer-types) возвращается под этим же идентификатором. Ключ не передается в базовую модель и не участвует в выводе (инференсе).
JSON EXAMPLE REQUEST THEME={NULL} api.wedstack.ru/v1
{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?"
    }
  }
}

Типы вопросов (Question types)

Каждый вопрос Question относится к одному из трех типов, определяемому полем type. Все три типа имеют общие поля type и instructions, но каждый задает собственный формат criteria.

Свойство instructions может быть строкой, объектом или массивом. Вы можете разделить длинный вопрос, содержащий дополнительный контекст или справочные данные, на структурированный объект. Поместите вопрос в одно поле, а данные — в другие, ссылаясь на поля данных по имени в обратных кавычках, точно так же, как вы ссылаетесь на вложенные значения в state:

JSON THEME={NULL} api.wedstack.ru/v1
"instructions": {
  "potential_duplicate": {
    "name": "John Smith",
    "location": "Oakland, California",
    "last_employer": "Google"
  },
  "question": "Is the resume for the same person as `potential_duplicate`?"
}

Подробнее см. раздел Использование структуры в вопросах.

Noul

Вопрос типа «да/нет». Возвращает вероятность того, что ответ положительный (да).

Оцениваемый вопрос «да/нет». Объект может содержать вопрос в одном поле и данные, на которые он ссылается, в других; см. [Использование структуры в вопросах](/docs/concepts/how-to-build-with-system-one#use-structure-in-the-questions). Необязательные описания того, что означают «да» и «нет». Что означает «да» (значение близко к 1).
PLAINTEXT api.wedstack.ru/v1
<ParamField body="false" type="string | object | array">
  Что означает «нет» (значение близко к 0).
</ParamField>
JSON EXAMPLE REQUEST FOCUS={5-12} THEME={NULL} api.wedstack.ru/v1
{
  "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

Выбирает один вариант из определенного вами набора. Возвращает выбранный вариант и полное распределение вероятностей.

Какое решение должна принять модель. Объект может содержать вопрос в одном поле и данные, на которые он ссылается, в других; см. [Структурированные инструкции и критерии](/docs/primitives/choice#structured-instructions-and-criteria). Словарь, сопоставляющий варианты с описаниями рубрики; используйте `null`, если варианту не требуется дополнительное описание. Допускается максимум 255 вариантов на один вопрос Choice. Выбранный вами ключ. Описание данного варианта.
JSON EXAMPLE REQUEST FOCUS={5-13} THEME={NULL} api.wedstack.ru/v1
{
  "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

Оценивает состояние по определенной вами рубрике. Возвращает взвешенное по вероятностям значение по шкале ваших уровней.

Что именно модель должна оценить. Объект может содержать вопрос в одном поле и данные, на которые он ссылается, в других; см. [Использование структуры в вопросах](/docs/concepts/how-to-build-with-system-one#use-structure-in-the-questions). Упорядоченный массив описаний уровней. Вопрос Score должен иметь как минимум два уровня; API принимает до 10 уровней.
JSON EXAMPLE REQUEST FOCUS={5-9} THEME={NULL} api.wedstack.ru/v1
{
  "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"]
    }
  }
}

Тело ответа (Response body)

По одному ответу на каждый вопрос, возвращаемые под теми же идентификаторами, которые вы указали в запросе.

Модель, выполнившая оценку. По одному объекту [Answer](#answer-types) на каждый вопрос, с теми же ключами-идентификаторами, которые использовались в `questions`. Тот же идентификатор, который вы задали в `questions`. Использование токенов для запроса.
PLAINTEXT api.wedstack.ru/v1
<ResponseField name="output_tokens" type="integer" />
JSON EXAMPLE RESPONSE THEME={NULL} api.wedstack.ru/v1
{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

Типы ответов (Answer types)

Каждый ответ содержит поле type, соответствующее типу вопроса. Ответы на вопросы Choice и Score также содержат поле confidence от 0 до 1, рассчитанное на основе распределения вероятностей ответа. См. раздел Уверенность (Confidence).

Ответ Noul

Ответ «да/нет» по шкале от 0 («нет») до 1 («да»).
JSON EXAMPLE RESPONSE FOCUS={4-7} THEME={NULL} api.wedstack.ru/v1
{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 307, "output_tokens": 20 }
}

Ответ Choice

Вариант с наибольшей вероятностью. Сопоставление каждого варианта с его вероятностью (числа с плавающей точкой, сумма которых равна 1). Вариант, определенный вами в `criteria`. Степень уверенности модели, рассчитанная на основе вероятностей.
JSON EXAMPLE RESPONSE FOCUS={4-9} THEME={NULL} api.wedstack.ru/v1
{
  "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

Взвешенный по вероятностям ответ по шкале уровней; может принимать дробные значения между уровнями. Сопоставление номера каждого уровня с его описанием. Сопоставление каждого уровня (строковый ключ) с его вероятностью (числа с плавающей точкой, сумма которых равна 1). Индекс уровня в виде строкового ключа, соответствующий `legend`. Степень уверенности модели, рассчитанная на основе вероятностей.
JSON EXAMPLE RESPONSE FOCUS={4-10} THEME={NULL} api.wedstack.ru/v1
{
  "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 }
}

Ошибки (Errors)

Ошибки используют стандартные коды состояния HTTP с телом в формате JSON, описывающим возникшую проблему.

Код Описание
401 Unauthorized Отсутствует или недействителен API-ключ. Проверьте заголовок Authorization.
422 Unprocessable Entity Тело запроса не прошло валидацию — например, отсутствует обязательное поле или некорректно сформирован вопрос. В теле ответа указано проблемное поле.
429 Too Many Requests Превышен лимит частоты запросов. Приостановите отправку и повторите попытку через небольшую паузу.
529 Overloaded Сервис TypeSafe временно перегружен. Повторите попытку через небольшую паузу.

Обработка лимитов частоты запросов (Rate limits)

При получении ответа 429 Too Many Requests или 529 Overloaded повторите запрос с экспоненциальной задержкой (exponential backoff) вместо немедленной повторной попытки. Клиентские SDK TypeSafe обрабатывают эту ситуацию автоматически, поэтому при использовании любого из наших SDK с политикой повторов по умолчанию никаких дополнительных действий не требуется.