一句话回答
Python 调用 OpenAI Compatible API 的关键是设置三个值:api_key、base_url 和 model。如果服务兼容 OpenAI SDK,你可以继续使用 OpenAI Python SDK,只需要把 base_url 改成服务商提供的 /v1 地址。
示例:
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.tokencheap.space/v1",
)
安装依赖
先安装 OpenAI Python SDK:
pip install openai
如果你使用虚拟环境,建议先激活环境再安装。生产环境不要把 API Key 写死在代码仓库里。
用环境变量保存 Key
推荐写法:
export OPENAI_API_KEY="YOUR_API_KEY"
Windows PowerShell:
$env:OPENAI_API_KEY="YOUR_API_KEY"
Python 代码中读取:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["OPENAI_API_KEY"],
base_url="https://api.tokencheap.space/v1",
)
第一步:获取模型列表
先验证连接:
models = client.models.list()
for model in models.data[:10]:
print(model.id)
如果能打印模型 ID,说明 Base URL、Key 和网络基本正常。后续调用时应使用列表中的模型名。
第二步:发送聊天请求
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "user", "content": "用一句话解释 OpenAI Compatible API"}
],
)
print(response.choices[0].message.content)
如果你的服务商支持 Responses API 或其他接口,也可以按服务商兼容范围调整。最稳妥的做法是先用 /models 确认可用模型。
常见错误
401 或 invalid_api_key
检查 Key 是否完整、是否来自同一个服务商、是否和 base_url 匹配。参考 invalid_api_key 是什么原因。
model_not_found
模型名不存在或无权限。先运行 client.models.list(),复制列表中真实模型 ID。参考 model_not_found 怎么解决。
APIConnectionError 或 timeout
网络不可达。自部署服务器要在服务器上测试,不要只在本地测试。参考 API timeout 超时解决方法。
429
并发太高或额度不足。批量脚本要加限流、重试和队列。参考 OpenAI API 429 报错解决。
批量调用建议
Python 脚本很容易写成循环批量调用。上线前建议:
- 每次请求之间加短暂等待。
- 对 429、timeout 做重试。
- 保存失败日志,避免重复处理。
- 不要把同一个 Key 同时给多个高频任务使用。
- 对长文本做分块,控制成本和上下文长度。
和 Cursor、Dify、n8n 的关系
如果 Python 能调用成功,但工具里失败,说明 API 服务本身可用。下一步检查工具配置:
- Cursor 是否用了同一个 Base URL。
- Dify 的
openai_api_base是否带/v1。 - n8n 服务器是否能访问 API 域名。
相关阅读
- OpenAI Compatible API curl 调用示例
- OpenAI Compatible API 如何获取模型列表?
- API Base URL 是什么?和 API Key 有什么区别?
- OpenAI API Base URL 怎么填?
- TokenCheap AI API 接入入口
FAQ
Python 调用 OpenAI Compatible API 必须换 SDK 吗?
不一定。如果服务兼容 OpenAI SDK,通常继续使用 OpenAI Python SDK,只改 base_url 和 Key。
base_url 要不要带 /v1?
多数兼容接口建议带 /v1,例如 https://api.tokencheap.space/v1。
怎么确认模型名?
先调用 client.models.list(),使用返回列表里的模型 ID。
API Key 可以写在代码里吗?
测试可以临时写,但生产环境建议使用环境变量或密钥管理工具。
Python 成功但 n8n 失败怎么办?
如果 Python 在本机成功,而 n8n 是自部署,要到 n8n 服务器上再测试网络和 Credential。