Технические гайды
Python и JavaScript: подключение SDK к CLODEx
Для поддерживаемых OpenAI-совместимых методов CLODEx можно использовать официальный пакет openai, указав адрес CLODEx и свой ключ. Это клиентская библиотека OpenAI, обращающаяся к другому провайдеру; совместимость каждого метода нужно проверять отдельно.
Подготовка
Создайте ключ в кабинете, выберите доступную модель в каталоге и проверьте кошелёк. Сохраните CLODEX_API_KEY и CLODEX_MODEL в защищённом окружении процесса. Сам секрет в код вставлять не нужно.
Примеры рассчитаны на backend. Они выполняют платную генерацию, если запрос принят. При первоначальной проверке автоматические повторы отключены, чтобы не скрывать ошибки.
Python: Responses API
Установите пакет в окружение проекта: python -m pip install openai. Пример читает модель из переменной, чтобы не привязывать приложение к устаревающему ID.
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.responses.create(
model=os.environ["CLODEX_MODEL"],
input="Ответь одним словом: готово",
)
if response.status != "completed" or not response.output_text.strip():
raise RuntimeError("Текстовый ответ не завершён или пуст")
print(response.output_text)
print(response.usage)
Здесь проверяется простой текстовый сценарий. Для инструментального ответа отсутствие текста само по себе не является ошибкой: нужно разбирать соответствующие выходные элементы и продолжать инструментальный цикл.
JavaScript: Node.js
Установите пакет в проект: npm install openai. Сохраните пример как .mjs либо включите ESM в настройках Node.js-проекта.
import OpenAI from "openai";
const apiKey = process.env.CLODEX_API_KEY;
const model = process.env.CLODEX_MODEL;
if (!apiKey || !model) {
throw new Error("Задайте CLODEX_API_KEY и CLODEX_MODEL");
}
const client = new OpenAI({
apiKey,
baseURL: "https://clodex.xyz/v1",
timeout: 60_000,
maxRetries: 0,
});
const response = await client.responses.create({
model,
input: "Ответь одним словом: готово",
});
if (response.status !== "completed" || !response.output_text?.trim()) {
throw new Error("Текстовый ответ не завершён или пуст");
}
console.log(response.output_text);
console.log(response.usage);
В Python параметр называется base_url, в JavaScript — baseURL. Не добавляйте /responses в базовый адрес SDK.
Если нужен Chat Completions
Вызывайте client.chat.completions.create с model и messages, а ответ обрабатывайте по схеме choices. Не ожидайте у него структуру Responses. Подробное сравнение — в гайде по протоколам.
Для Anthropic SDK используется другой клиент и base URL https://clodex.xyz без /v1. Примеры смотрите в документации: замены одного URL недостаточно для превращения Messages в Responses.
Что проверить перед production
Сначала выполните короткий non-streaming запрос и сверьте его в журнале расходов. После этого тестируйте необходимые функции: поток, инструменты, изображения и ошибки.
Добавьте ограничения бюджета, размера запроса и времени выполнения. Повторы должны быть ограниченными и учитывать риск повторной оплачиваемой операции. Не сохраняйте в логах ключ, заголовок Authorization и чувствительное содержимое запросов.
В Next.js и аналогичных фреймворках вызывайте API на сервере. Не включайте ключ в NEXT_PUBLIC_*, VITE_* и клиентский bundle. .env с реальным секретом должен быть исключён из Git даже в приватном репозитории.
Нужна интеграция без собственного кода? Мастер /docs содержит инструкции для графических IDE, приложений и терминальных клиентов.