Практическое подключение

OpenAI-compatible API: настройка SDK

Подключим существующий Python-клиент к CLODEx: адрес, ключ, модель и обработка ответа. В конце — список функций, которые нужно проверять отдельно при переносе с другого API.

Что поменять в существующем клиенте

До запуска проверьте /v1/models своим ключом. Доступность ID в списке ещё не подтверждает поддержку Chat Completions: сопоставьте его с документацией модели. Если приложению нужен Responses, не меняйте только путь — потребуется другой метод SDK и обработчик ответа.

НастройкаЗначение для CLODExЗачем
base_urlhttps://clodex.xyz/v1SDK добавляет путь метода. Не указывайте полный /chat/completions в base_url.
api_keyCLODEX_API_KEY из окруженияКлюч CLODEx нельзя отправлять прежнему провайдеру.
modelCLODEX_MODEL: точный ID своего каталогаНе рассчитывайте на чужой alias или доступность модели из старого примера.
timeout / max_retries60 секунд / 0 в примере нижеОдна диагностическая попытка, без незаметных повторных запросов.

Проверить ключ · Различия протоколов

Минимальный запрос: Python + OpenAI SDK

Установите пакет командой python -m pip install openai в окружении своего приложения. Задайте CLODEX_API_KEY и CLODEX_MODEL вне исходного файла. Этот пример предназначен для модели с поддержкой Chat Completions и выполняет платную генерацию; чтение страницы ничего не запускает.

60 секунд — таймаут диагностической попытки, не обещанная скорость модели. max_retries=0 отключает автоматические повторы SDK. В примере нет temperature, tools или других необязательных параметров: сначала проверяется базовый контракт.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["CLODEX_API_KEY"],
    base_url="https://clodex.xyz/v1",
    timeout=60.0,
    max_retries=0,
)
response = client.chat.completions.create(
    model=os.environ["CLODEX_MODEL"],
    messages=[{"role": "user", "content": "Reply with one word: ready"}],
    stream=False,
)
if not response.choices:
    raise RuntimeError("Missing choices")
choice = response.choices[0]
if choice.finish_reason != "stop" or not choice.message.content.strip():
    raise RuntimeError(f"Unexpected result: {choice.finish_reason}")
print(choice.message.content)
print(response.usage)

Настройки официального Python SDK

Что считать успешной проверкой

  • Ответ содержит choices и непустой текст message.content, а finish_reason равен stop. Точное слово «ready» не гарантируется; проверяется структура, а не совпадение строки.
  • Если finish_reason равен length, ответ оборван по лимиту. Если пришёл tool_calls, это запрос инструмента, а не готовый пользовательский ответ.
  • Сверьте usage и фактический расход в кабинете. Не публикуйте полный запрос с секретами или данными пользователей в отчёте о тесте.
  • Только после этого отдельно проверьте streaming и обработку ошибок, затем необходимые tools или формат JSON.

Usage и расчёт · Тариф выбранной модели

Граница совместимости: что не переносится автоматически

Совместимость не означает одинаковую поддержку всех функций OpenAI. Хранение ответов, встроенный поиск, загрузка файлов, batch, JSON Schema и параметры reasoning требуют отдельного подтверждения для конкретного маршрута и модели.

Для Chat Completions приложение разбирает choices; для Responses — output items и состояние ответа. SSE-поток нельзя обрабатывать как один обычный JSON. Обрыв соединения не следует показывать пользователю как завершённый ответ.

Если получили 400, проверьте тело ошибки и отправленные поля. При 401 проверяйте ключ и сервер. Для 429 разберите указанную причину ограничения. После таймаута не повторяйте запрос вслепую: предыдущая генерация могла выполниться и попасть в расход.

Помощь с конкретной ошибкой

Документация и проверка примера

Адреса и настройки подключения сверены с документацией CLODEx. Примеры предназначены для указанного протокола; они не являются журналом выполненных запросов и не обещают одинаковые функции у всех моделей. Рабочий запрос на генерацию может списать средства.

Подключение клиентов · Протоколы API

Частые вопросы

Нужно переписать приложение целиком?

Не обязательно. Если оно использует поддерживаемый метод и параметры, может хватить настроек клиента. Всё равно проверьте разбор ответа, ошибки и функции, от которых зависит приложение.

Можно оставить ключ OpenAI?

Нет. Для CLODEx нужны адрес CLODEx и ключ CLODEx. Замена только ключа или только адреса создаёт неправильную конфигурацию.

Это официальный сервис OpenAI?

Нет. CLODEx — отдельный шлюз с совместимыми маршрутами. Использование OpenAI SDK не означает партнёрство или одинаковый набор функций.

Подключите CLODEX API к своему проекту

Один ключ, единый endpoint и несколько семейств LLM для разработки, приложений и ботов.