Перейти к содержимому

Технические гайды

Python и JavaScript: подключение SDK к CLODEx

Проверено 2 мин чтения

Для поддерживаемых 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, приложений и терминальных клиентов.

Читайте также

16 / CLODEx

Responses, Chat Completions и Messages в CLODEx

Как выбрать протокол CLODEx для Codex, Claude Code, своей IDE или SDK. Адреса API, схемы запросов, ответы и проверка инструментов.

3 мин чтения

Следующий шаг

От инструкции к работе

Точные параметры подключения — в документации. Ключи, баланс и расходы — в вашем личном кабинете.

CLODEx не аффилирован с владельцами упомянутых моделей, редакторов и товарных знаков. Доступность функций зависит от модели и клиента.