OpenAI SDK и совместимые клиенты
Для чат-запросов настройте базовый URL https://api.apikley.ru/v1, ключ Apikley и externalId выбранной модели. Следующие примеры используют DeepSeek: DeepSeek V4 Flash.
Ключ в окружении
На сервере задайте переменную окружения. В примере для оболочки замените YOUR_API_KEY своим ключом. Не включайте его в браузерную сборку и репозиторий.
Окружение для Python и Node.js
export APIKLEY_API_KEY='YOUR_API_KEY'cURL
curl https://api.apikley.ru/v1/chat/completions \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "deepseek/deepseek-v4-flash",
"messages": [{"role": "user", "content": "Объясните, что такое API, в двух предложениях."}],
"stream": false
}'Для Python установите пакет командой python -m pip install openai. Сохраните следующий пример в example.py и запустите python example.py.
Python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["APIKLEY_API_KEY"],
base_url="https://api.apikley.ru/v1",
max_retries=0,
)
response = client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
messages=[{"role": "user", "content": "Объясните, что такое API, в двух предложениях."}],
stream=False,
)
choices = getattr(response, "choices", None)
if choices:
print(choices[0].message.content)
else:
print(response.model_dump_json())Для Node.js установите пакет командой npm install openai. Сохраните следующий пример в example.mjs и запустите node example.mjs.
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.APIKLEY_API_KEY,
baseURL: "https://api.apikley.ru/v1",
maxRetries: 0,
});
const response = await client.chat.completions.create({
model: "deepseek/deepseek-v4-flash",
messages: [{ role: "user", content: "Объясните, что такое API, в двух предложениях." }],
stream: false,
});
console.log(response.choices?.[0]?.message?.content ?? response);В cURL выше ключ указан прямо в заголовке для наглядности. Для переменной окружения замените этот заголовок на -H "Authorization: Bearer $APIKLEY_API_KEY".
Что проверить в совместимом клиенте
- Укажите базовый URL с
/v1, без добавления второго/v1. - Задайте модель вручную через
externalIdиз каталога API. - Проверьте запрос и обработку ответа выбранной модели на небольшом примере.
- Настройте повторы осознанно. В примерах SDK они отключены через
max_retries=0иmaxRetries: 0.
GET /v1/models отсутствует и возвращает 404. Не используйте client.models.list() для каталога Apikley: вместо него есть публичный GET /models/summary.
Успешное подключение чата не подтверждает поддержку всех методов библиотеки. Доступные здесь контракты описаны в разделах Chat Completions и изображения.
Частые вопросы
Нужно ли менять только адрес и ключ?
Также укажите ID модели из каталога и проверьте её параметры и ответ. Единой структуры ответа для всех моделей нет.
Почему клиент не может загрузить список моделей?
Если он вызывает /v1/models, получит 404. Введите ID вручную или используйте интеграцию с каталогом Apikley.
Почему streaming приходит одним блоком?
Публичный шлюз буферизует SSE: события могут прийти вместе в конце генерации.
Можно ли автоматически повторять любой 5xx?
Не включайте такой повтор без оценки операции: тайм-аут или ошибка доставки не доказывает, что запрос не исполнился. См. ошибки.
Обновлено