Skip to content

Подключение DeepSeek и сторонних моделей

📚 Навигация по серии: Предыдущая статья 04 · Тарифы и биллинг объяснила финансовую сторону Codex — разницу между подпиской и оплатой по факту использования. В этой статье мы продолжим тему оптимизации расходов и разберем нестандартное решение: как переключить Codex на работу со сторонними моделями (например, DeepSeek).

⚠️ Важное предупреждение (экспериментальная функция, поведение может меняться): Codex является внутренним продуктом OpenAI, и официальная документация не содержит руководств по интеграции со сторонними провайдерами вроде DeepSeek. Использование альтернативных моделей — это решение сообщества, построенное на стандартном механизме добавления пользовательских провайдеров (model_providers). Работоспособность и стабильность этой схемы напрямую зависят от поддержки протоколов API сторонней моделью, что является наиболее частой причиной сбоев (подробнее в Разделе 03). Все документированные параметры и поведение по умолчанию приведены со ссылкой на официальные источники; часть, касающаяся настройки DeepSeek, базируется на практических тестах сообщества. Адреса хостов, имена моделей и поддерживаемые протоколы могут меняться со стороны провайдеров.

Друзья, для начала перескажу реальный диалог, который произошел у меня недавно с коллегой.

Коллега: «Ты же настроил интеграцию Claude Code с DeepSeek для экономии денег? Сделай то же самое для Codex». Я: «Я тоже думал, что перенос настроек сработает... В итоге потратил два часа: параметры указаны верно, но при первом запросе сервер возвращает ошибку 400». Коллега: «Почему? Разве дело не в банальном изменении адреса base_url?» Я: «Схемы работы Codex и Claude Code различаются. При внешнем сходстве их архитектурные основы не имеют ничего общего».

Признаюсь честно: эта глава — предостережение для тех, кто планирует использовать сторонние модели. В сети опубликовано множество инструкций по подключению DeepSeek к Codex, но большинство из них умалчивают о критически важной детали: архитектура вызова внешних провайдеров в Codex и Claude Code построена на совершенно различных принципах. Попытки настроить Codex по аналогии с Claude Code приводят к ошибкам несовместимости протоколов. В этом разделе мы разберем эти различия.

После прочтения этой статьи вы получите:

  • Краткое объяснение принципиальных различий в интеграции сторонних моделей в Codex и Claude Code (что сэкономит вам время)
  • Таблицу сравнения для оценки целесообразности настройки альтернативных моделей
  • Анализ двух способов подключения (ручное изменение файла config.toml или использование локального прокси-клиента)
  • Справочный каркас конфигурации model_providers, методики проверки работоспособности и таблицы устранения ошибок

01 Принципиальное различие в механизмах смены моделей

Ключевой вывод: если в Claude Code для смены модели достаточно переопределить переменные окружения, то в Codex требуется прописать параметры провайдера в файле конфигурации. Более того, Codex предъявляет жесткие требования к API-протоколам сторонних сервисов — не любой совместимый интерфейс будет работать.

Разберем это детально.

Интерфейс CLI Codex является лишь клиентом: он сканирует кодовую базу, вызывает утилиты и управляет контекстом сессии, но не генерирует ответы самостоятельно. Каждый шаг логики требует обращения к языковой модели. По умолчанию запросы направляются к моделям GPT от OpenAI (рекомендуемая на данный момент версия — gpt-5.5 согласно спецификации).

Настройка внешних моделей переопределяет этот целевой адрес. Разработчики предусмотрели такую возможность в документации:

«Вы также можете перенаправить вызовы Codex к любым провайдерам и моделям, поддерживающим Chat Completions или Responses API, в соответствии с требованиями ваших проектов». (из раздела по моделям)

Аналогия: стандарты розеток. Утилита Claude Code похожа на универсальный адаптер питания: если сторонний провайдер предоставляет API, совместимое с Anthropic, подключение проходит успешно. Codex же распознает строго определенные типы подключений — он поддерживает только спецификации OpenAI Chat Completions и Responses API. Модели вроде DeepSeek обычно предоставляют API, совместимое с OpenAI, то есть теоретически совместимы с Codex. Однако существует нюанс:

编Codex 官方明确写了——Chat Completions API 的支持「已弃用,未来版本会移除」(来源:《Models》文档)。 Это означает, что клиент переходит на стандарт Responses API. Этот протокол является относительно новым внутренним стандартом OpenAI, и большинство сторонних платформ API еще не реализовали его поддержку в полном объеме.

Это и послужило причиной двухчасовых сбоев при моих первых тестах: совместимость с OpenAI Chat Completions не гарантирует поддержку нового формата Responses API со стороны DeepSeek.

💡 Краткий вывод: Смена модели в Claude Code выполняется через переменные окружения по протоколу Anthropic; в Codex же требуется прописать провайдера в файле config.toml по новым протоколам OpenAI (в приоритете Responses API). Не пытайтесь слепо переносить опыт настройки одного инструмента на другой.


02 Оценка целесообразности использования сторонних моделей

Специфика Codex делает использование сторонних моделей менее целесообразным по сравнению с Claude Code:

Основные причины:

  1. Низкая вероятность успешного сопряжения по сравнению с Claude Code из-за строгих требований к поддержке протоколов.
  2. Высокое качество моделей GPT-5.5 в экосистеме Codex. Для сложных задач рефакторинга возможности сторонних моделей могут оказаться недостаточными, что приведет к снижению качества генерации кодовой базы.
  3. Лимиты уже включены в ваши подписки ChatGPT Plus/Pro (см. Статью 04). Если вы оплачиваете подписку, подключение сторонних моделей через платные API-ключи приведет к двойным расходам.

Сравнительный анализ вариантов использования:

ПараметрМодели GPT от OpenAI (по умолчанию)Сторонние API (например, DeepSeek)
ЦенообразованиеДороже при оплате через API по факту использования✅ Дешевле (стоимость токена значительно ниже)
Доступность сетиТребуется VPN✅ Доступны сетевые адреса без прокси
Сложность настройкиДоступны из коробки после авторизации⚠️ Требуют настройки конфигурации и проверки совместимости
Качество генерации кода✅ Лидеры индустрии (GPT-5.5), точное следование контекстуПодходят для рутинных задач, сбои при сложной логике
Официальная поддержка✅ Базовый функционал❌ Экспериментальные функции без гарантии стабильности
Стабильность конфигурацииГарантируется обновлениями клиента⚠️ Сбрасывается при изменении имен моделей провайдером

Разница очевидна. В отличие от Claude Code, где подключение сторонней модели является надежным решением для оптимизации расходов, в Codex вы сталкиваетесь с неопределенностью на уровне совместимости протоколов API.

Кому имеет смысл пробовать интеграцию:

  • Рекомендуется к тестированию: пользователям с высокими затратами на API при выполнении рутинных задач CRUD; разработчикам, испытывающим постоянные проблемы с подключением по VPN; энтузиастам для изучения работы протоколов.
  • Не рекомендуется к тестированию: владельцам активных подписок ChatGPT Plus/Pro; разработчикам сложной системной логики и архитектурных решений; новичкам, желающим получить готовое стабильное решение из коробки.

Мой опыт показывает: в Claude Code использование DeepSeek для рутинных задач полностью оправдано, но в Codex стабильнее использовать штатные модели GPT. Проблемы несовместимости спецификаций Codex сводят на нет экономическую выгоду.

💡 Краткий вывод: Настройка сторонней модели в Codex сопряжена с рисками несовместимости протоколов. Подписчикам ChatGPT, системным архитекторам и пользователям, предпочитающим стабильность из коробки, рекомендуется использовать штатные настройки.


03 Два пути настройки: файлы конфигурации или прокси-клиенты

Приняв решение о настройке, выберите одно из двух направлений:

Два пути подключения сторонних моделей: ручное редактирование config.toml или использование транслирующих прокси-клиентов

Оба пути решают одну задачу, но в основе обоих лежит обеспечение совместимости с протоколом Responses API на стороне клиента.

Способ 1: Ручное редактирование config.toml

Все настройки Codex хранятся в пользовательском файле ~/.codex/config.toml (согласно спецификации). Вы можете прописать параметры альтернативного провайдера непосредственно в нем.

Аналогия: добавление нового контакта в телефонную книгу. По умолчанию в книге записан только контакт OpenAI. Для вызова DeepSeek добавьте запись: имя, адрес хоста (base_url) и имя переменной для считывания пароля (API Key). Затем укажите клиенту использовать этот новый контакт.

Ключевые параметры конфигурации провайдеров:

ПараметрНазначение в документации
model_providers.<id>.nameОтображаемое имя провайдера
model_providers.<id>.base_urlАдрес API-хоста провайдера
model_providers.<id>.env_keyПеременная окружения для чтения API-ключа
model_providers.<id>.wire_apiИспользуемый протокол; единственное поддерживаемое значение — responses
model_provider (глобальный)Идентификатор активного провайдера (по умолчанию openai)
model (глобальный)Имя вызываемой модели

Параметр wire_api является критически важным — официальная спецификация прямо указывает, что Responses API является единственной поддерживаемой схемой передачи сообщений. Если сторонний сервис предоставляет стандартный Chat Completions и не поддерживает Responses API, нативный вызов через файлы конфигурации выдаст ошибку.

⚠️ API-сервис DeepSeek совместим с OpenAI по протоколу Chat Completions. Возможность его работы с Responses API зависит от текущего состояния разработки на обеих сторонах. Всегда проверяйте совместимость экспериментальным путем. Отсутствие подключения при корректной конфигурации является ожидаемым поведением.

Способ 2: Использование транслирующих прокси-клиентов

Для обхода ограничений протоколов сообщество использует прокси-серверы, запускаемые локально. Они транслируют вызовы Responses API от клиента Codex в понятные для сторонних моделей запросы Chat Completions и возвращают ответы обратно. Для Codex процесс выглядит как стандартное обращение к серверам OpenAI.

Приложение CC Switch (бесплатный инструмент с открытым исходным кодом, репозиторий github.com/farion1231/cc-switch) запускает локальный прокси-сервер и автоматически перенаправляет трафик Codex на выбранные внешние хосты, предоставляя готовые пресеты для DeepSeek.

Главное окно приложения CC Switch

Запустите CC Switch и нажмите кнопку Add Provider для настройки параметров подключения.

Интерфейс добавления нового провайдера в CC Switch

Выберите Codex в списке слева, укажите целевого провайдера (например, DeepSeek) в правой части и вставьте ваш API-ключ. Приложение будет пересылать запросы автоматически.

Список готовых конфигураций провайдеров в интерфейсе CC Switch

Список содержит предустановленные настройки для популярных платформ (DeepSeek, OpenRouter и др.), избавляя от ручного ввода хостов.

Аналогия: переводчик в диалоге. Вы (клиент Codex) общаетесь только по протоколу Responses API, а целевая модель понимает только Chat Completions. Первый способ требует поддержки Responses API со стороны сервера. Второй способ ставит локального переводчика (прокси-сервер) между клиентом и сервером.

Сравнение способов подключения сторонних моделей:

ПараметрСпособ 1: Редактирование config.tomlСпособ 2: Локальный прокси (CC Switch)
Статус метода✅ Штатный механизм настройки❌ Утилита от сообщества
Совместимость API⚠️ Зависит от поддержки Responses API сервером✅ Трансляция выполняется прокси-сервером
Сложность настройкиТребует ручной правки разметки TOMLПростой графический интерфейс
Контроль процессовПолная прозрачность конфигурацииДополнительный дочерний процесс в системе
Переключение моделейТребует ручной корректировки файловВыбор провайдера в один клик
Целевая аудиторияРазработчики для понимания архитектурыПользователи, желающие получить быстрый результат

Рекомендация: для изучения архитектуры вызова провайдеров используйте первый способ (редактирование файлов конфигурации). Для быстрого получения рабочего результата используйте локальный прокси-клиент.

💡 Краткий вывод: Первый способ нативен, но критичен к поддержке протоколов на стороне сервера. Второй способ использует сторонний прокси-транслятор, обеспечивающий стабильность подключения. Выберите подходящий путь на основе ваших задач.


04 Практика: Структура конфигурации в config.toml

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

Расположение файлов: ~/.codex/config.toml в macOS/Linux и C:\Users\Имя_Пользователя\.codex\config.toml в Windows. Создайте файл вручную при его отсутствии.

Шаг 1: Получите API-ключ DeepSeek

  1. Авторизуйтесь на платформе разработчиков DeepSeek.
  2. Создайте и скопируйте новый API-ключ.

🔑 Важно: Сохраняйте ключ в безопасности. Не прописывайте его значение в файлах конфигурации в открытом виде. Мы настроим его вызов через переменные окружения.

Шаг 2: Добавьте API-ключ в переменные окружения

Объявите переменную с именем DEEPSEEK_API_KEY для считывания ключа клиентом:

macOS и Linux:

bash
export DEEPSEEK_API_KEY=<你的 DeepSeek API Key>

Windows (PowerShell):

powershell
$env:DEEPSEEK_API_KEY="<你的 DeepSeek API Key>"

Для постоянной регистрации путей прописали эти команды в конфигурационных файлах вашего терминала (.zshrc или .bashrc) или в свойствах системы Windows.

Шаг 3: Пропишите параметры в config.toml

Добавьте следующие параметры в файл config.toml:

toml
# 顶层:告诉 Codex 这次用我们自定义的提供商和模型
model_provider = "deepseek"
model = "<DeepSeek 的模型名,以官方文档为准>"

# 自定义一个名为 deepseek 的模型提供商
[model_providers.deepseek]
name = "DeepSeek"
base_url = "<DeepSeek 的 API base_url,以官方文档为准>"
env_key = "DEEPSEEK_API_KEY"   # 引用上一步的环境变量名
# wire_api 不写则默认为 responses(官方唯一支持的值)

Описание структуры параметров:

  • model_provider = "deepseek": указывает Codex использовать добавленного ниже провайдера deepseek вместо openai по умолчанию.
  • model = "...": имя целевой модели (уточняйте актуальные имена моделей в документации DeepSeek).
  • [model_providers.deepseek]: объявление нового провайдера с идентификатором deepseek (должен совпадать с глобальным model_provider).
  • base_url: адрес API-хоста провайдера.
  • env_key = "DEEPSEEK_API_KEY": имя переменной окружения для считывания токена авторизации.

⚠️ Значения model и base_url указаны в виде псевдопеременных, так как они регулярно обновляются со стороны провайдеров API. Нативная работоспособность зависит исключительно от поддержки протокола Responses API со стороны DeepSeek.

Примечание: стандартные идентификаторы провайдеров (openai, ollama, lmstudio) зарезервированы клиентом (согласно спецификации). Не используйте эти имена для пользовательских подключений.

💡 Краткий вывод: Ручной способ: объявление переменной с ключом → добавление блока провайдера model_providers в config.toml → переопределение глобальных model_provider и model. Конфигурация стандартизирована, но требует проверки совместимости протоколов.


05 Проверка работоспособности подключения

Перед запуском рабочих задач выполните тестирование соединения.

Процесс состоит из двух шагов:

Шаг 1: Проверка активной модели

Запустите Codex и вызовите команду /model, которая показывает список доступных моделей (согласно спецификации). Убедитесь, что клиент переключился на добавленный профиль:

bash
codex

Введите команду в консоли:

text
/model

Вы также можете принудительно указать модель при старте CLI с помощью флага: codex -m <имя_модели>.

Шаг 2: Тестовый запрос

Отправьте простейший запрос для проверки ответа сервера:

text
你好,用一句话回复确认你能正常工作。

Результаты теста:

СимптомВозможная причинаРешение
Успешный текстовый ответ✅ Подключение настроеноНастройки верны, интеграция работает
Ошибка 401 (Auth Error)Неверный API-ключ или переменная окружения не считываетсяПроверьте имя env_key и перезапустите консоль
Ошибка 400 (Bad Request)Несовместимость протокола Responses APIДанная модель не поддерживает этот формат. Используйте прокси-клиент (Способ 2)
Ошибка отсутствия моделиИмя модели указано неверноСверьтесь с актуальной документацией провайдера

Обратите внимание на ошибку 400. Если вы столкнулись с ней при корректной конфигурации, это подтверждает проблему несовместимости с Responses API со стороны провайдера. При ее возникновении переключайтесь на использование локального прокси (Способ 2).

💡 Краткий вывод: Сначала проверьте модель через /model, затем отправьте тестовый запрос. Ошибка 401 указывает на неверный ключ, ошибка 400 — на несовместимость протоколов. При ошибке 400 используйте транслятор прокси.


06 Тонкая настройка: Инерция рассуждений (reasoning_effort)

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

Параметр model_reasoning_effort поддерживает значения minimal, low, medium, high и xhigh (в зависимости от возможностей конкретной модели согласно спецификации). Пропишите его в config.toml:

toml
model_reasoning_effort = "medium"

Аналогия: стратегия решения задач на экзамене. Режим low экономит время — быстрый поверхностный ответ. Режимы high/xhigh требуют дополнительных вычислений для поиска сложных взаимосвязей, но расходуют значительно больше токенов. Постоянная работа на максимальных настройках приводит к быстрому расходу бюджета.

Рекомендация: для повседневной разработки установите режим medium. При необходимости глубокого анализа архитектурных взаимосвязей временно переключайтесь на high. Использование максимальных настроек для простых задач лишает смысла экономию от подключения сторонних моделей.

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

💡 Краткий вывод: Настройте параметр model_reasoning_effort: medium для повседневных задач и high для сложного рефакторинга. Помните о потенциальной недоступности некоторых облачных функций OpenAI.


07 Резюме

Подключение DeepSeek к Codex снижает затраты, но является экспериментальным методом из-за различий в протоколах API:

ЭтапРекомендация / Действие
Различения архитектурCodex ориентирован на Responses API от OpenAI. Не копируйте настройки Claude Code напрямую
ЦелесообразностьНе рекомендуется владельцам платных подписок и при необходимости сложного системного анализа
Выбор методаРедактирование config.toml для изучения логики, локальный прокси (CC Switch) для быстрого запуска
КонфигурацияОбъявление model_providers, глобальные model_provider и model, считывание ключа по env_key
ТестированиеПроверка переключения в /model и отправка тестового запроса (ошибка 400 указывает на конфликт API)
ОптимизацияРегулируйте параметр model_reasoning_effort для контроля баланса скорости и качества

Теперь вы понимаете архитектурные особенности подключения сторонних моделей, умеете конфигурировать провайдеров в файлах настроек и локализовать сбои протоколов API.

Главное правило: ключевым условием сопряжения является поддержка протоколов на стороне сервера провайдера, а не синтаксис ваших настроек. Понимание этого факта убережет вас от бесполезной траты времени.


В следующей статье 06 · Выполнение первой задачи мы завершим блок настроек и перейдем к практической работе. Мы запустим Codex для решения реальной задачи в кодовой базе проекта.


Рекомендуемые материалы