Developer guide

Аутентификация с помощью API-ключа

Заголовок, содержащий API-ключ, и base URL для настройки SDK

Шлюз CLEVI выполняет аутентификацию совместимых с OpenAI и совместимых с Anthropic путей с помощью одного API-ключа.
На стороне клиента необходимо настроить два значения: заголовок аутентификации, содержащий ключ, и base URL SDK. Допустимый формат заголовка и base URL различаются в зависимости от спецификации.
После завершения настройки запросите список моделей, чтобы сразу проверить успешность аутентификации.
При ошибке аутентификации возвращается 401, а если после успешной аутентификации не выполнены условия авторизации или лимитов, возвращается 403.

Получите API-ключ на странице API-ключей в консоли. На этой же странице можно управлять отзывом ключа и областью его использования.

Заголовок аутентификации

Обе спецификации помещают API-ключ в один из заголовков запроса. Используйте заголовок X-API-Key или Authorization; допустимый формат зависит от спецификации.

ЗаголовокСовместимость с OpenAIСовместимость с Anthropic
X-API-Key: <ключ>РазрешеноРазрешено
Authorization: Bearer <ключ>РазрешеноРазрешено
Authorization: <ключ> (без Bearer)ОтклоняетсяРазрешено

При использовании заголовка Authorization в совместимом с OpenAI пути требуется префикс Bearer. Если отправить только ключ без префикса, шлюз отклонит запрос.

Имена заголовков нечувствительны к регистру, поэтому заголовок x-api-key, отправляемый Anthropic SDK, также работает без изменений. Если указать оба заголовка, приоритет имеет значение X-API-Key.

base URL

Ранее использовавшийся SDK можно использовать без изменений, заменив только base URL на указанный ниже адрес. Два адреса различаются наличием /v1, поэтому укажите адрес, соответствующий спецификации, без изменений.

Спецификацияbase URLПравило пути
Совместимость с OpenAIhttps://platform.clevi.net/api/v2/aiservice/openai/v1Включите /v1 в base URL.
Совместимость с Anthropichttps://platform.clevi.net/api/v2/aiservice/anthropicAnthropic SDK самостоятельно добавляет /v1 к пути запроса, поэтому base URL заканчивается перед /v1.

Проверка аутентификации

После настройки ключа и базового URL запросите список моделей, чтобы проверить успешность аутентификации. В примерах ниже один и тот же запрос выполняется с помощью curl, OpenAI SDK и Anthropic SDK. Вместо sk-... укажите ключ, выданный на странице API-ключей.

При запросе через curl укажите полный путь до /v1/models для обоих форматов. В первой команде для совместимого с OpenAI пути используется заголовок X-API-Key, во второй команде для совместимого с Anthropic пути — заголовок Authorization.

curl https://platform.clevi.net/api/v2/aiservice/openai/v1/models \
  -H "X-API-Key: sk-..."

curl https://platform.clevi.net/api/v2/aiservice/anthropic/v1/models \
  -H "Authorization: Bearer sk-..." \
  -H "anthropic-version: 2023-06-01"

В OpenAI SDK укажите в base_url адрес, включающий /v1.

from openai import OpenAI

client = OpenAI(
    api_key="sk-...",
    base_url="https://platform.clevi.net/api/v2/aiservice/openai/v1",
)

for model in client.models.list():
    print(model.id)

В Anthropic SDK укажите в base_url адрес, заканчивающийся перед /v1.
Для аутентификации используется заголовок x-api-key, отправляемый SDK, без изменений.

from anthropic import Anthropic

client = Anthropic(
    api_key="sk-...",
    base_url="https://platform.clevi.net/api/v2/aiservice/anthropic",
)

for model in client.models.list(limit=20).data:
    print(model.id)

Если любой из примеров возвращает ответ 200, аутентификация прошла успешно, а в поле data ответа содержится список моделей, доступных для вызова с этим ключом. Если возвращён ответ 401, проверьте причину в порядке, указанном в следующем разделе.

Ошибка аутентификации

Если отправить отсутствующий, просроченный или отозванный ключ, возвращается ответ 401. При вызове совместимого с OpenAI пути без ключа возвращается тело, показанное ниже, а для совместимого с Anthropic пути значением error.type является authentication_error.

{
  "error": {
    "message": "API key is required.",
    "type": "invalid_request_error"
  }
}

При получении ответа 401 выполните следующие проверки по порядку.

  1. Проверьте состояние ключа на странице API-ключей. Если ключ просрочен или отозван, выпустите новый.
  2. Проверьте, что имя заголовка указано как X-API-Key или Authorization.
  3. Если в совместимом с OpenAI пути используется заголовок Authorization, проверьте наличие префикса Bearer.

После внесения изменений повторно выполните запрос списка моделей из раздела «Проверка аутентификации» и убедитесь, что возвращается ответ 200.

Общие заголовки

Все следующие заголовки являются необязательными. Для упрощения отслеживания проблем рекомендуется указывать X-Request-Id.

ЗаголовокНазначениеЕсли не указать
X-Request-IdИдентификатор для отслеживания запроса. В совместимом с Anthropic маршруте это же значение возвращается в заголовке request-id ответа.Выдаётся сервером.
X-Region-CodeУказывает регион вызова.Это global.
X-Product-Sku (также можно указать через параметр запроса product_sku)Напрямую указывает Product SKU, используемый для тарификации. Заголовок имеет приоритет над параметром запроса и в основном используется в голосовых маршрутах.В голосовых маршрутах пропускать нельзя. audio/speech и audio/transcriptions выбирают Product на основе model в теле запроса.
anthropic-version / anthropic-betaПередаётся без изменений в совместимом с Anthropic маршруте.Версия — 2023-06-01.

Если ошибки 5xx повторяются, сообщите об этом через разделы справки и обращений, указав X-Request-Id. Если значение было задано напрямую, его можно сразу сопоставить с записями клиента.

Язык и регион

Языки, переведённые машинным способом, переводятся с помощью clevi/cip-5.5-im и соответствующим образом помечаются. Это относится к языкам с опубликованным пакетом сайта.

137 языков

Рекомендуется

1

Восточная Азия

7

Юго-Восточная Азия

11

Южная Азия

18

Центральная Азия

5

Ближний Восток и Кавказ

10

Западная Европа и Южная Европа

17

Великобритания и Ирландия

4

Северная Европа

10

Центральная Европа и Балканы

14

Восточная Европа

5

Восточная Африка

8

Западная Африка и Центральная Африка

9

Южная Африка

8

Америка

5

Океания

5