必须将http请求逻辑封装进适配器层,codex仅支持配置文件驱动或python类注册两种封装入口;推荐新手用config.toml+auth.json配置token侠等api,注意wire_api必须为"responses"且密钥严格一致。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

想让Codex稳定调用DeepSeek、通义千问或Token侠等第三方API,必须把原始HTTP请求逻辑封装进适配器层,否则每次发请求都要手写requests、处理headers、解析JSON、重试超时——这种裸调方式在批量任务中极易崩断。
确认适配器接入路径
先打开终端执行 codex --version,确保CLI已安装且可调用;若报 command not found,说明尚未安装Node.js或未全局安装@openai/codex包,需先补全基础环境。
Codex不支持直接在脚本里import requests发起调用,它只认两类封装入口:一是配置文件驱动的provider适配器,二是代码注册的Python类适配器。前者适合静态模型切换,后者适合动态参数控制、流式响应拦截、上下文预处理等高阶场景。
方法一:配置文件驱动的轻量封装(推荐新手)
第一步:进入配置目录并创建文件
Windows用户在资源管理器地址栏输入 C:\Users\你的用户名\.codex,开启“隐藏项目”后进入;macOS/Linux用户执行 mkdir -p ~/.codex 创建目录。在该目录下新建两个空文件:config.toml 和 auth.json——文件名错一个字母(如config.toml.txt)将导致整个配置静默失效。
第二步:写入最小可行配置
用VS Code或Notepad++打开 config.toml,粘贴以下内容(以Token侠为例):
model = "qwen2.5-72b"
model_provider = "tokenxia"
[model_providers.tokenxia]
name = "Token侠"
base_url = "https://api.tokenxia.com/v1"
wire_api = "responses"
requires_openai_auth = false
experimental_bearer_token = "sk-your-real-key-here"
⚠️注意:wire_api 必须为 "responses",不是 "/chat/completions" 也不是留空;Codex CLI强制走OpenAI Responses协议,填错会导致stream disconnected before completion错误。
第三步:密钥单点注入
用纯文本编辑器打开 auth.json,**仅写且仅能写这一行**:{"api_key": "sk-your-real-key-here"}。引号内值必须与config.toml中 experimental_bearer_token 完全一致,包括大小写和所有字符。
方法二:Python类适配器封装(支持流式/自定义header/错误重试)
在项目根目录新建 adapters/mimo_adapter.py,内容如下:
from typing import List, AsyncIterator
from your_codex_core.adapters import BaseChatModel
from your_codex_core.schema import ChatMessage, ChatResult
import aiohttp
class MimoChatAdapter(BaseChatModel):
model_name = "mimo-v1"
api_base = "https://api.mimo.ai/v1/chat/completions"
api_key = None
async def _agenerate(self, messages: List[ChatMessage]):
headers = {"Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json"}
payload = {"model": self.model_name, "messages": [m.dict() for m in messages], "stream": False}
async with aiohttp.ClientSession() as session:
async with session.post(self.api_base, headers=headers, json=payload) as resp:
if resp.status != 200:
raise RuntimeError(f"API error: {resp.status}")
return ChatResult(generations=[ChatMessage(content=await resp.json())])
这个适配器绕过了config.toml的硬编码限制,允许你在运行时传入不同api_key、动态切换base_url、插入自定义header(如X-Source)、对429错误做指数退避重试——这些能力在纯配置模式下无法实现。
注册适配器只需在config.toml顶部加一行:model_provider = "mimo",并在末尾添加对应区块,但无需填base_url或key——它们由Python类内部控制。
验证封装是否生效
关闭所有Codex进程,终端执行:codex "写一个Python函数,输入列表返回去重后的升序结果"。
若返回正常代码块且无401/404报错,说明封装链路已通;若卡在"Connecting..."或报错"Failed to fetch model list",请立即检查:config.toml中model_provider值是否与[model_providers.xxx]方括号内名称完全一致,这是最常被忽略的拼写陷阱。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











