Codex接入第三方API:环境变量与自定义模型
用.env、--provider或OpenResponses桥接,无需修改config即可接入任意兼容OpenAI的模型。
两种主流方式:环境变量 + --provider 与 OpenResponses 桥接
Codex CLI 默认使用 OpenAI 模型,但通过环境变量和命令行选项,可以轻松切换到其他兼容 OpenAI Chat Completions API 的提供商(如 DeepSeek、Ollama、Groq 等),甚至使用本地部署的自定义模型。本文基于 2025 年 10 月的社区讨论和第三方教程,给出两种可复现的操作路径。
方法一:直接设置环境变量与 --provider(最简单)
根据 OpenAI 开发论坛的讨论(2025 年 10 月),Codex CLI 会自动从项目根目录的 .env 文件加载变量(通过 dotenv/config)。你只需两步:
1. 在项目目录创建 .env 文件`
OPENAI_API_KEY=你的API密钥`
如果你使用的是非 OpenAI 提供商(如 OpenRouter),还需要设置对应的 base URL。例如:`
OPENAI_API_KEY=sk-or-...
OPENAI_BASE_URL=https://openrouter.ai/api/v1`
注意:OPENAI_BASE_URL 必须指向支持 /v1/chat/completions 接口的地址。
2. 使用 --provider 指定模型提供商
运行 Codex 时加上 --provider 参数,后面跟提供商名称(Codex 内置支持 openai、openrouter、azure、gemini、ollama、mistral、deepseek、xai、groq、arceeai 等)。例如:`
codex --provider deepseek "分析这个仓库"`
此时 Codex 会自动使用 deepseek 的默认模型。如果你需要指定具体模型,可以用 -m 参数,格式为 provider@model,如 deepseek@deepseek-chat。
优点:零额外部署,只需编辑环境变量文件。 缺点:部分自定义提供商(如本地 Ollama)可能需要额外配置 CORS 或网络。
方法二:使用 OpenResponses 桥接服务(支持任意模型)
如果希望更灵活地使用本地模型或非标准端点,可以借助社区开源项目 OpenResponses(参考 Masai AI 教程)。它作为中间层,将任意兼容 OpenAI 接口的模型转换为 Codex 能识别的格式。
步骤 1:启动 OpenResponses 服务
使用 Docker 运行(需要先安装 Docker):`
docker run -p 8080:8080 masaicai/open-responses:latest`
注意:OpenResponses 容器内部默认监听 6644 端口(后续配置会用到),但 Docker 将主机的 8080 端口映射到容器的 8080 端口。教程中直接使用 http://localhost:6644/v1 作为 base URL,实际访问的是主机 8080 端口。如果连接失败,请检查防火墙或改用 http://localhost:8080/v1(需确认 OpenResponses 是否也在 8080 端口提供了服务)。
步骤 2:安装 Codex CLI(如果尚未安装)`
npm i -g @openai/codex`
步骤 3:配置环境变量并运行`
export OPENAI_BASE_URL=http://localhost:6644/v1
export OPENAI_API_KEY=你的模型提供商密钥(如Claude或OpenAI密钥)`
然后使用 -m 指定模型,格式为 provider@model-name 或 endpoint@model-name:
使用 Claude:codex -m "claude@claude-3-5-haiku-20241022" "描述代码库"
使用本地模型:codex -m "http://mymodel_host/v1@my_model" "帮我重构这个函数"
使用 Gemini:codex -m "google@gemini-2.0-flash" "分析代码问题"
优点:几乎支持所有模型,包括本地部署的私有模型。缺点:需要 Docker 环境和额外的端口转发理解。
重要注意事项
环境变量优先级:Codex 读取顺序为:命令行参数 > .env 文件 > 系统环境变量。同一变量重复设置时,优先级高的生效。
端口不一致的处理:方法二中,如果你按照教程配置了 8444 但服务监听在 8080,可以尝试将 OPENAI_BASE_URL 改为 http://localhost:8080/v1,或者修改 Docker 命令的端口映射为 -p 6644:6644(需确保容器内部也在 6644 上监听)。如果教程给出的端口与默认映射矛盾,建议以实际服务日志为准。
网络限制:Codex 运行在沙箱容器中(默认无法访问宿主机 localhost),但通过 --provider 方式可以访问外部 API。如果使用本地服务,可能需要调整网络模式。
.env 文件的加载:确保 .env 文件位于执行 codex 命令的当前目录,否则不会被自动读取。
## 总结
无论你是想快速切换到大模型供应商(DeepSeek、Gemini),还是想本地部署私有模型,Codex 都提供了灵活的环境变量和命令行选项。方法一适合日常切换,方法二适合需要深度定制或使用非标准端口的场景。根据你的使用场景选择即可。
(本文基于 2025 年 10 月社区讨论和 Masai AI 教程编写,部分细节可能随版本更新变化,请以 OpenAI 官方文档和最新社区反馈为准。)