AIFreeAPI Logo

Как подключить Codex к стороннему API и не спутать proxy с совместимостью

A
4 min readИнструменты для разработки с ИИ

Codex нужен не просто OpenAI-compatible URL, а реализация Responses API, существующий у поставщика model ID, правильная авторизация и корректный поток.

Codex проверяет Responses-маршрут к стороннему API и передаёт секрет через переменную окружения

Наличие API-ключа ещё не означает, что сторонний сервис сможет обслуживать Codex. Клиенту нужен endpoint, который реализует Responses API, принимает реальный идентификатор модели этого поставщика и возвращает совместимый поток. Сервис может поддерживать /v1/chat/completions и честно называться OpenAI-compatible, но всё равно не подходить Codex.

Поэтому сначала найдите в документации поставщика прямое подтверждение Responses API. Если описаны только Chat Completions, не добавляйте /responses к URL наугад: новый путь не создаёт отсутствующий протокол. Уточните у поставщика подходящий endpoint и поддерживаемые модели.

Речь идёт о замене поставщика модели для локального Codex. MCP подключает внешние инструменты и данные, а proxy или gateway может быть посредником между клиентом и моделью. Эти механизмы могут работать вместе, но не доказывают совместимость друг друга.

Шесть шагов проверки совместимости, безопасной настройки provider, доказательства маршрута, диагностики и отката
Шесть шагов проверки совместимости, безопасной настройки provider, доказательства маршрута, диагностики и отката

Что проверить до изменения файла

У рабочего маршрута есть четыре независимых владельца:

  1. Поставщик подтверждает Responses endpoint и точный model ID.
  2. Учётная запись поставщика разрешает эту модель и имеет собственный баланс или лимит.
  3. Codex получает секрет тем способом, который ожидает endpoint.
  4. Поток доходит до завершения, а не только устанавливает HTTP-соединение.

Подписка ChatGPT не закрывает пункты 2 и 3. В официальной документации по аутентификации Codex даже вход через ChatGPT и OpenAI API key описаны как разные контракты. У стороннего provider будут свои счета, ограничения, журналы и правила обработки данных.

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

Изолируйте эксперимент отдельным profile

Настройки provider являются локальными для машины. Codex игнорирует model_provider и model_providers в проектном .codex/config.toml; официальный Configuration Reference требует размещать их в пользовательской конфигурации. Чтобы не менять основной маршрут, создайте ~/.codex/third-party.config.toml:

toml
model = "provider-model-id" model_provider = "acme" [model_providers.acme] name = "Acme Model API" base_url = "https://api.example.com/v1" env_key = "ACME_API_KEY" wire_api = "responses"

Значения provider-model-id и base_url здесь вымышленные. Возьмите их из документации поставщика без переименования. Локальный ID acme должен совпадать в двух местах. Нельзя переопределять зарезервированные openai, ollama и lmstudio.

OpenAI сейчас указывает responses как единственное допустимое значение wire_api. Полный список полей и ограничения авторизации приведены в Advanced Configuration.

Передайте секрет через переменную окружения в том же процессе, из которого запускаете CLI:

bash
export ACME_API_KEY="настоящий-ключ" codex --profile third-party

В PowerShell для текущей сессии:

powershell
$env:ACME_API_KEY = "настоящий-ключ" codex --profile third-party

env_key содержит имя переменной, а не сам ключ. Не записывайте секрет в TOML, репозиторий dotfiles, скриншот или лог поддержки. Поле experimental_bearer_token существует, но официальный справочник рекомендует env_key. Если сервис требует особый header или query parameter, используйте только документированные им env_http_headers, http_headers или query_params.

Переменная из терминала может быть невидима приложению, запущенному через Dock, меню Windows или IDE. Если CLI работает, а desktop сообщает об отсутствии ключа, сначала проверьте окружение процесса запуска. Изменение URL в такой ситуации маскирует настоящий источник ошибки.

Докажите маршрут по обе стороны соединения

Доказательство маршрута по данным Codex и provider с таблицей владельцев ошибок
Доказательство маршрута по данным Codex и provider с таблицей владельцев ошибок

Название модели в интерфейсе доказывает чтение конфигурации, но не адрес назначения. Для первой проверки откройте пустой каталог, запустите codex --profile third-party и попросите вернуть короткую фиксированную строку без чтения файлов и вызова инструментов.

Успех состоит из трёх совпавших наблюдений: Codex показывает нужную модель; ответ завершается без ошибки потока; в панели provider или gateway в то же время появляется запрос с нужной моделью, статусом и расходом. Сохраните request ID и время, если они доступны, но не ключ и не лишнее содержимое prompt.

Например, DeepSeek на своей официальной странице подключения Codex прямо заявляет поддержку Responses и описывает собственные модели. Это первичный источник для DeepSeek, но не доказательство совместимости другого gateway.

Ошибка подсказывает владельца

НаблюдениеГде искать причинуСледующий шаг
Неизвестный ключ конфигурацииВерсия Codex или TOMLСверить codex --version, таблицы и актуальный reference
Переменная не найденаОкружение запускаУстановить её в том же shell или настроить окружение desktop/IDE
401 / 403Ключ, header, проект или права providerПроверить состояние ключа и доступ к модели в панели provider
404 / model not foundBase URL или model IDСравнить точный Responses путь и список моделей
Немедленная ошибка разбораНесовместимый формат ответаПрекратить использование Chat Completions-only endpoint
Вывод обрывается, идут reconnectSSE, тайм-аут посредника или upstreamСопоставить время обрыва и request ID в логах
429Сторонний аккаунт, gateway или модельный лимитПроверить систему, реально вернувшую статус

Для подтверждённого 429 используйте отдельную диагностику лимитов Codex, для зависшего потока — руководство по тайм-аутам, а для конфликтующих слоёв — границы config.toml.

После обычного текстового ответа проверяйте только нужные функции. Web search для custom provider по умолчанию не заявлен; один флаг не создаст endpoint, поддержку модели или разрешение политики. Аналогично отдельно проверяются изображения, tool calls, reasoning summaries, WebSocket, plugins и cloud-функции.

Для возврата к официальному маршруту завершите custom-сессию и запустите Codex без --profile third-party. Если provider был добавлен в основной файл, удалите только добавленные model, model_provider и соответствующую таблицу. Удаление всего ~/.codex затронет авторизацию, MCP, правила, profiles и историю, но не исправит несовместимый API.