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) | Відхилено | Дозволено |
У сумісному з OpenAI шляху під час використання заголовка Authorization потрібен префікс Bearer. Якщо надіслати лише ключ без префікса, шлюз відхилить запит.
Імена заголовків не чутливі до регістру, тому заголовок x-api-key, який надсилає Anthropic SDK, також працює без змін. Якщо вказати обидва заголовки, пріоритет матиме значення X-API-Key.
base URL
SDK, які ви використовували раніше, можна використовувати без змін, лише замінивши base URL на наведену нижче адресу. Дві адреси відрізняються наявністю /v1, тому вкажіть адресу відповідно до специфікації без змін.
| Специфікація | base URL | Правило шляху |
|---|---|---|
| Сумісність з OpenAI | https://platform.clevi.net/api/v2/aiservice/openai/v1 | Включайте /v1 до base URL. |
| Сумісність з Anthropic | https://platform.clevi.net/api/v2/aiservice/anthropic | Anthropic SDK безпосередньо додає /v1 до шляху запиту, тому адреса закінчується перед /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 вкажіть адресу, що містить /v1, у параметрі base_url.
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, перевірте наведене нижче в такому порядку.
- Перевірте стан ключа на екрані ключів API. Якщо ключ прострочений або відкликаний, випустіть новий.
- Перевірте, чи має заголовок назву X-API-Key або Authorization.
- Якщо для шляху, сумісного з OpenAI, використовується заголовок Authorization, перевірте, чи містить він префікс Bearer.
Після внесення змін повторно виконайте отримання списку моделей із розділу перевірки автентифікації та переконайтеся, що повертається 200.
Заголовки, що використовуються разом
Усі наведені нижче заголовки є необов’язковими. Рекомендуємо вказати X-Request-Id, щоб можна було відстежувати проблеми.
| Заголовок | Призначення | Якщо не вказати |
|---|---|---|
| X-Request-Id | Ідентифікатор для відстеження запиту. Сумісний із Anthropic маршрут повертає те саме значення в заголовку request-id відповіді. | Його видає сервер. |
| X-Region-Code | Визначає регіон, до якого надсилається виклик. | Це global. |
| X-Product-Sku (також можна вказати через параметр запиту product_sku) | Безпосередньо визначає Product SKU, який використовуватиметься для виставлення рахунків. Заголовок має пріоритет над параметром запиту й переважно використовується в голосових і voice-маршрутах. | У voice-маршрутах його не можна пропускати. audio/speech і audio/transcriptions вибирають Product за допомогою model у тілі запиту. |
| anthropic-version / anthropic-beta | Передається без змін у сумісному із Anthropic маршруті. | Версія — 2023-06-01. |
Якщо помилки 5xx повторюються, повідомте про це через довідку та форму звернення, додавши X-Request-Id. Якщо значення було вказано безпосередньо, його можна одразу зіставити із записами клієнта.