直接答案
不改 SDK 源码,只通过官方客户端的 `base_url` 和 `api_key` 参数调用 CodeNodex OpenAI 兼容端点。
这篇内容解决什么问题
为 Python 项目提供一条最小、可复制且可上线的 CodeNodex 接入路径,并明确 API Key、超时、重试和异常处理边界。
安装官方 SDK 并设置环境变量
在项目虚拟环境中安装官方 openai 包。CodeNodex CLI 不提供 Python SDK 客户端配置,也不会修改项目依赖。
将 Key 放进环境变量或部署平台的 secret 管理,不要提交到 Git。变量名可以使用项目自己的 CODENODEX_API_KEY,再在代码中显式读取。
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade openaiexport CODENODEX_API_KEY="YOUR_API_KEY"用 base_url 初始化客户端
初始化 OpenAI 时,把 base_url 设置为 https://token.codenodex.com/v1。SDK 会在此基础上拼接 Responses、Models 等资源路径。
同时设置请求超时和有限重试。参数集中在客户端初始化处,便于测试环境和生产环境使用不同配置。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["CODENODEX_API_KEY"],
base_url="https://token.codenodex.com/v1",
timeout=60.0,
max_retries=2,
)发送一个 Responses API 请求
使用 responses.create 发起最小文本请求。model 必须替换为当前 Key 可见的模型 ID;不确定时先请求 client.models.list()。
读取 output_text 可获得聚合后的文本。需要结构化事件或流式增量时,再按官方 SDK 接口扩展。
response = client.responses.create(
model="YOUR_MODEL_ID",
input="用一句话解释幂等性。",
)
print(response.output_text)显式处理连接与 HTTP 错误
SDK 会区分网络连接错误和非 2xx HTTP 状态。记录错误类型、状态码和 request ID,但不要记录完整认证头或用户敏感内容。
业务层应决定哪些错误可以重试。认证失败与模型不存在不会通过重复请求自行恢复。
from openai import APIConnectionError, APIStatusError
try:
response = client.responses.create(
model="YOUR_MODEL_ID",
input="返回 ok",
)
except APIConnectionError as exc:
print(f"network error: {exc}")
except APIStatusError as exc:
print(f"http status: {exc.status_code}")
print(f"request id: {exc.request_id}")完成上线前验证
分别运行模型列表、最小 Responses 请求和异常路径测试。部署环境中再验证环境变量注入、DNS、TLS 和请求超时。
若 404,检查 base_url 是否缺少或重复 /v1,并核对模型 ID;若 401,轮换 Key;若 429,检查余额、并发与调用频率。
client.models.list()能返回当前 Key 的模型。- 最小 Responses 请求输出完整文本。
- 错误日志不包含 API Key 或 Authorization Header。
- 部署环境使用 secret 注入,而不是源码常量。
官方来源与核验范围
本文以公开官方文档为事实依据;命令和配置可能随客户端版本变化,执行前请同时核对对应来源。
查看技术核验方法