Перейти к содержимому
Зарегистрироваться бесплатно
Codex

Custom provider в Codex: model_provider, Base URL и wire_api

Настройте custom provider в Codex через model_provider, Base URL, wire_api, API Key и Model ID. Решения для provider not found, 401 и 404. Полезные советы.

Короткий ответ

model_provider сообщает Codex CLI, какой provider использовать. Его значение должно совпадать с provider id, заданным в [model_providers.<id>].

base_url — это API endpoint, куда отправляются model requests. Для OpenAI-compatible provider это обычно endpoint в формате /v1.

wire_api задаёт протокол запросов. Сейчас Codex поддерживает только responses и использует его при отсутствии параметра.

Когда это важно

  • Вы настраиваете custom OpenAI-compatible provider
  • Codex сообщает, что provider не найден, или model requests не проходят
  • Вы не понимаете разницу между model_provider и model
  • Вы добавляете BetterToken, OpenAI или другой provider в один config.toml
  • Вам нужно разделить Base URL, API Key и Model ID

Связь полей

ПолеНазначение
model_providerВыбирает активный provider id
[model_providers.<id>]Определяет подробную конфигурацию одного provider
nameОтображаемое имя provider
base_urlКорневой API endpoint
wire_apiПротокол запросов provider; сейчас поддерживается только responses.
modelDefault main model ID
review_modelМодель для code review flows, например /review

Найдите файлы и создайте резервные копии

Если задан свой CODEX_HOME, редактируйте config.toml и auth.json в этом каталоге. Иначе используйте ~/.codex в macOS / Linux или %USERPROFILE%\.codex в Windows. CLI и App должны использовать один каталог. В WSL каталог пользователя отдельный.

Перед изменениями полностью закройте Codex. Сохраните резервные копии обоих файлов в защищённом месте. Создайте отсутствующие файлы. Заменяйте существующие настройки, не добавляйте повторные ключи или таблицы; сохраните остальные параметры.

Рекомендуемый паттерн

Измените config.toml

Здесь используется пользовательский config.toml. Разместите корневые ключи перед всеми таблицами TOML, не внутри [projects."<path>"]: эта таблица хранит trust_level проекта. ID выбранного provider должен совпадать с именем его таблицы. Для файловой авторизации удалите из выбранного provider поля env_key и experimental_bearer_token.

model_provider = "bettertoken"
model = "gpt-6-astra"
cli_auth_credentials_store = "file"
[model_providers.bettertoken]
name = "BetterToken"
base_url = "https://bettertoken.ai/v1"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false

В примере используется GPT-6 Astra (gpt-6-astra). Для другой модели скопируйте полный ID из model plaza и замените model. GPT, Kimi и GLM используют одинаковую файловую авторизацию; автоматическая настройка доступна для GPT.

Измените auth.json

Файл auth.json находится в том же каталоге, что и config.toml. Если файла auth.json нет, создайте его в этом каталоге. Запишите в него следующий JSON, замените YOUR_API_KEY на свой BetterToken API Key и сохраните файл.

{
"auth_mode": "apikey",
"OPENAI_API_KEY": "YOUR_API_KEY"
}

Параметры конфигурации

ПараметрНазначение и расположениеЗначения по умолчанию и примеры
model_providerКорень пользовательского файла; выбирает ID конфигурации ниже.По умолчанию openai; здесь используется bettertoken.
modelКорень файла; полный Model ID из model plaza.Пример: gpt-6-astra; замените при необходимости.
cli_auth_credentials_storeКорень файла; хранилище данных входа.Здесь задано file: читается auth.json в том же каталоге.
nameТаблица provider; только отображаемое имя.BetterToken не является Model ID.
base_urlТаблица provider; Base URL API модели.Используйте https://bettertoken.ai/v1; Codex добавит /responses.
wire_apiТаблица provider; протокол запросов.Сейчас поддерживается только responses; это и значение по умолчанию.
requires_openai_authТаблица provider; авторизация OpenAI и её хранилище.По умолчанию false; здесь true. Это не переключатель сохранения файла входа.
supports_websocketsТаблица provider; поддержка Responses WebSocket.По умолчанию false; здесь используется HTTP/SSE.
auth_modeВ auth.json; режим авторизации.Здесь apikey: он заменяет официальную авторизацию ChatGPT.
OPENAI_API_KEYВ auth.json; ключ для API-авторизации.Замените YOUR_API_KEY на BetterToken API Key.

Файловая авторизация здесь переключает Codex в режим API Key. Для сохранения официального аккаунта используйте отдельную настройку; не смешивайте режимы. Они различаются целью авторизации, а не клиентом CLI, App или Extension.

Дополнительные настройки

Эти три настройки необязательны для подключения. При необходимости добавьте их в существующую таблицу [model_providers.bettertoken], не создавая дубликат.

request_max_retries = 4
stream_max_retries = 8
stream_idle_timeout_ms = 300000
ПараметрНазначение и расположениеЗначения по умолчанию и примеры
request_max_retriesТаблица provider; число повторов HTTP-запроса.По умолчанию 4; настройте под своё подключение.
stream_max_retriesТаблица provider; повторы подключения после обрыва потока.По умолчанию 5; 8 — дополнительное пользовательское значение.
stream_idle_timeout_msТаблица provider; тайм-аут бездействия потока в миллисекундах.По умолчанию 300000; это не общий срок выполнения задачи.

Уровни конфигурации и устаревшие ключи

Не размещайте модель и интенсивность рассуждений внутри [projects."<path>"]. Модель проекта можно задать корневыми ключами в .codex/config.toml доверенного проекта; provider и авторизация остаются в пользовательском файле. Современный именованный profile — файл NAME.config.toml внутри CODEX_HOME, выбираемый командой codex --profile NAME, а не старая таблица [profiles.NAME] или корневой ключ profile.

Перезапустите и проверьте

Сохраните оба файла. Запустите новый сеанс Codex CLI прямо из терминала:

Окно терминала
codex

Полностью закройте Codex App, включая фоновые процессы, затем откройте его и создайте новую локальную задачу. Отправьте короткий запрос в каждом используемом клиенте. Нормальный ответ подтверждает подключение этого клиента.

Устранение ошибок

При 401, 403 или запросе входа проверьте активный каталог, Key в auth.json, auth_mode = apikey, cli_auth_credentials_store = file и requires_openai_auth = true. При ошибке провайдера или модели проверьте совпадение ID провайдера, https://bettertoken.ai/v1, wire_api = responses и доступность модели. Если изменения не применились, проверьте переопределения конфигурации и убедитесь, что CLI и App используют один CODEX_HOME.

Связанные материалы

References