Clydex

Документация / Начало работы

Подключите свое приложение к Clydex.

Подключитесь к Responses, настройте свой клиент и добавьте инструменты, которые работают в вашем приложении.

Прежде чем начать

  1. Создайте и скопируйте ключ в API-ключи. Держите это в тайне.
  2. Выберите доступную модель в Каналы и модели. Используйте его точный идентификатор вместо <MODEL_ID> ниже.
  3. Откройте руководство ниже. Заменить <YOUR_CLYDEX_API_KEY> с вашим ключом и сохраните файлы.
Базовый URL-адрес Clydex
https://clydex.shop/v1

Хотите, чтобы настройки были заполнены за вас? Нажмите Использовать ключ на карте-ключе, выберите приложение и скопируйте или загрузите его конфигурацию.

Выберите свое приложение

Codex CLI / App

Соедините Codex с двумя файлами.

  1. Откройте ~/.codex в файловом менеджере. Создайте папку, если она отсутствует.
  2. Сохраните настройки как config.toml. Поместите настройки верхнего уровня перед любыми заголовками [разделов]; сохраните остальные настройки.
  3. Сохраните auth.json в той же папке, затем перезапустите Codex или ваш редактор и начните новый чат.
~/.codex/config.toml
model_provider = "clydex"
model = "<MODEL_ID>"
disable_response_storage = true
cli_auth_credentials_store = "file"
web_search = "disabled"

[model_providers.clydex]
name = "Clydex"
base_url = "https://clydex.shop/v1"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false
request_max_retries = 0
stream_max_retries = 0
~/.codex/auth.json
{
  "OPENAI_API_KEY": "<YOUR_CLYDEX_API_KEY>"
}

Создайте резервную копию существующего auth.json перед его заменой. Эти настройки также применимы к расширению IDE Codex.

OpenCode

Один файл конфигурации, затем выберите Clydex в OpenCode.

  1. Откройте ~/.config/opencode и создайте opencode.json, если он не существует.
  2. Вставьте эту конфигурацию. Если у вас уже есть конфиг, объедините в него настройки провайдера Clydex и модели.
  3. Перезапустите OpenCode. Запустите /models и выберите модель в разделе Clydex.
~/.config/opencode/opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "clydex/<MODEL_ID>",
  "small_model": "clydex/<MODEL_ID>",
  "provider": {
    "clydex": {
      "npm": "@ai-sdk/openai",
      "name": "Clydex",
      "options": {
        "baseURL": "https://clydex.shop/v1",
        "apiKey": "<YOUR_CLYDEX_API_KEY>"
      },
      "models": {
        "<MODEL_ID>": {
          "name": "<MODEL_ID>",
          "options": {
            "store": false
          }
        }
      }
    }
  }
}
Hermes

Подключите Hermes со своего терминала.

  1. Откройте ~/.hermes/config.yaml. При необходимости создайте папку и файл.
  2. Замените раздел модели этими настройками; сохраните остальную часть вашей конфигурации.
  3. Сохраните файл, перезапустите Hermes и начните новый разговор.
~/.hermes/config.yaml
model:
  provider: custom
  default: "<MODEL_ID>"
  base_url: "https://clydex.shop/v1"
  api_mode: codex_responses
  api_key: "<YOUR_CLYDEX_API_KEY>"
Cherry Studio

Добавьте Clydex в настройки Cherry Studio.

  1. Откройте «Настройки» → «Поставщики моделей» и добавьте поставщика с именем Clydex.
  2. Выберите OpenAI Responses в качестве типа конечной точки. Вставьте адрес API и ключ ниже.
  3. Добавьте идентификатор модели <MODEL_ID>, включите поставщика и выберите эту модель в новом чате.
API-адрес
https://clydex.shop/v1/
API-ключ
<YOUR_CLYDEX_API_KEY>
Идентификатор модели
<MODEL_ID>

Отключите веб-поиск и вложения. В более старых версиях тип провайдера называется OpenAI-Response.

API / SDKs

Используйте ключ Clydex с OpenAI SDK Responses API.

  1. Выберите Python, JavaScript или пример терминала ниже.
  2. Для Python запустите pip install openai, затем python hello.py. Для JavaScript запустите npm install openai, затем node hello.mjs.
Базовый URL
https://clydex.shop/v1
hello.py
from openai import OpenAI

client = OpenAI(
    api_key="<YOUR_CLYDEX_API_KEY>",
    base_url="https://clydex.shop/v1",
    max_retries=0,
)

response = client.responses.create(
    model="<MODEL_ID>",
    input="Say hello in one sentence.",
    max_output_tokens=128,
    store=False,
)
print(response.output_text)
hello.mjs
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "<YOUR_CLYDEX_API_KEY>",
  baseURL: "https://clydex.shop/v1",
  maxRetries: 0,
});

const response = await client.responses.create({
  model: "<MODEL_ID>",
  input: "Say hello in one sentence.",
  max_output_tokens: 128,
  store: false,
});
console.log(response.output_text);
Терминал
curl 'https://clydex.shop/v1/responses' \
  -H 'Authorization: Bearer <YOUR_CLYDEX_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
  "model": "<MODEL_ID>",
  "input": "Say hello in one sentence.",
  "max_output_tokens": 128,
  "store": false
}'

Храните файлы, содержащие ваш ключ, в секрете. Запускайте примеры SDK на своем компьютере или сервере, а не в общедоступном коде браузера.

Функциональные инструменты

Объявляйте функции в tools. Модель возвращает вызов, ваше приложение выполняет его, а вы отправляете обратно function_call_output с тем же самым call_id. Пример ниже показывает полный цикл вызова.

Пример Python: используйте локальную функцию

Использование клиента от hello.py выше, замените его запрос этим примером. Он делает до двух запросов модели и запускает функцию локальных часов.

Вызов функции и результат
import json
import uuid
from datetime import datetime, timezone

history = [{"role": "user", "content": "What time is it in UTC?"}]
tools = [{
    "type": "function",
    "name": "get_utc_time",
    "description": "Return the current UTC time.",
    "parameters": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": False,
    },
    "strict": True,
}]

first = client.responses.create(
    model="<MODEL_ID>", input=history, tools=tools,
    tool_choice={"type": "function", "name": "get_utc_time"},
    parallel_tool_calls=False,
    include=["reasoning.encrypted_content"],
    max_output_tokens=256, store=False,
    extra_headers={"Idempotency-Key": str(uuid.uuid4())},
)
history.extend(item.model_dump(exclude_none=True) for item in first.output)
calls = [item for item in first.output if item.type == "function_call"]
if len(calls) != 1 or calls[0].name != "get_utc_time":
    raise RuntimeError("Expected one get_utc_time call; check the response.")
call = calls[0]
if json.loads(call.arguments) != {}:
    raise RuntimeError("Unexpected function arguments.")
history.append({
    "type": "function_call_output",
    "call_id": call.call_id,
    "output": json.dumps({"utc": datetime.now(timezone.utc).isoformat()}),
})
final = client.responses.create(
    model="<MODEL_ID>", input=history, tools=tools, tool_choice="none",
    include=["reasoning.encrypted_content"],
    max_output_tokens=256, store=False,
    extra_headers={"Idempotency-Key": str(uuid.uuid4())},
)
print(final.output_text)

Сохраните возвращенные выходные элементы, включая элементы рассуждений, при построении следующего хода. Проверьте имена инструментов и аргументы в своем приложении перед выполнением функции. Использование пользовательских инструментов custom_tool_call и custom_tool_call_output с тем же шаблоном вызова/результата.

Дополнительная помощь

Параметры потоковой передачи и запроса

Установить stream: true для потоковой передачи ответов по HTTP. Аргументы вызова инструмента могут поступать в нескольких событиях; собрать полный вызов перед его выполнением. Окончательное использование происходит в событии ответа терминала. Транспорт WebSocket недоступен.

Установить max_output_tokens для запрошенной вами длины вывода. Это не гарантированный предел расходов. Параметры рассуждения, многословие текста и форматы структурированного текста принимаются, если выбранная модель их поддерживает. Отключите хранилище и отправляйте полную историю разговоров при каждом ходе.

Запрос не сработал
  • Убедитесь, что ключ активен и на его балансе есть кредит.
  • Используйте доступный идентификатор модели и правильную конечную точку для этой модели.
  • В случае ошибки неподдерживаемого поля удалите параметр, указанный в ошибке. Если ваше приложение всегда отправляет его, используйте Пример API.
  • По истечении времени проверьте история запросов прежде чем попытаться еще раз.
Узнайте объем использования и расходы

Открыть история запросов чтобы увидеть статус запроса, токены и стоимость. Незавершенные запросы все еще проверяются. См. Статистика для итогов или Модели и цены по тарифам.