配置速查
只需要覆盖一个参数。
| 配置项 | 填什么 | 容易错在哪 |
|---|---|---|
base_url | https://turingapi.space/v1 | 必须带 /v1,末尾不要加斜杠 |
api_key | 控制台创建的 sk- 密钥 | 建议从环境变量读,不要硬编码 |
model | 站内实际模型名 | 拼错会返回 400 或 404 |
OpenAI(base_url=...) 的客户端写法;0.x 老版本用的是模块级全局变量 openai.api_base。照抄网上的旧教程最容易在这里踩空。前置准备
两分钟就能跑起来。
在 注册页 建账号,控制台新建密钥并保存。
执行 pip install -U openai。老版本 API 结构不同,容易照抄失败。
用 OPENAI_API_KEY 或自定变量名,避免密钥进代码仓库。
配置步骤
下面两份代码都能直接跑,区别是一个普通调用、一个流式。
基础调用 最小示例
- 安装 SDK 并设置环境变量
- 初始化客户端时指定
base_url - 调用
chat.completions.create
from openai import OpenAI
import os
client = OpenAI(
base_url="https://turingapi.space/v1",
api_key=os.environ["TURING_API_KEY"],
)
resp = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)把 model 换成 模型列表 里的任意模型名即可切换模型,代码结构不变。
流式输出 常用写法
- 把
stream=True传进去 - 遍历返回的 chunk
- 取
delta.content,注意它可能是None
stream = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[{"role": "user", "content": "写一段快排"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end="", flush=True)首包可能只带 role 不带 content,所以要判断 delta.content 是否存在,否则会打到 None。
旧版本(0.x)怎么写 兼容老项目
- 0.x 版本没有客户端对象
- 用模块级属性设置地址和密钥
- 建议尽早升级到 1.x,0.x 已停止维护
import openai
openai.api_base = "https://turingapi.space/v1"
openai.api_key = "sk-你的密钥"
resp = openai.ChatCompletion.create(
model="gpt-6.1-sol",
messages=[{"role": "user", "content": "你好"}],
)如果你的项目还停在 0.x,先确认线上依赖版本,别直接照着 1.x 的写法改。
验证是否配置成功
看到这些就说明通了
- 脚本正常退出,返回一段中文回答
- 没有抛
AuthenticationError - 控制台「用量」页出现这次调用
能拿到 resp.choices[0].message.content 就说明协议、地址、密钥三者都对。
常见异常对照
AuthenticationError→ 密钥错或没读到环境变量NotFoundError→ base_url 多了或少了 /v1BadRequestError→ 模型名不对或不支持该参数
import os
print(os.environ.get("TURING_API_KEY"))先确认环境变量真的读到了,再看别的。空值会让 SDK 报鉴权失败,看起来像密钥错。
常见问题
SDK 层的问题基本都能从异常类型直接看出来。
base_url 结尾要不要加斜杠?
不要。https://turingapi.space/v1 就够了。SDK 会自己拼 /chat/completions,多一个斜杠有时会变成双斜杠路径,部分服务端会 404。
为什么改了 base_url 还是走官方?
检查是不是还留着环境变量 OPENAI_BASE_URL,或者用的老版本语法。1.x 里只有显式传 base_url 才会覆盖。
Anthropic 的模型能用这个 SDK 调吗?
能。站内 Claude 系列同时兼容 /v1/chat/completions,用 OpenAI SDK 把模型名填成 claude-* 就能调。要原生 Messages 协议请用 Anthropic SDK。
stream=True 报错或卡住?
先确认 delta.content 可能为 None,没判断就直接拼接会抛异常。另外确认没有在外层再套一层超时设置,中断了长连接。
相关客户端
AAnthropic Python SDK
base_url 不带 /v1,与其他 SDK 相反
NNode.js (openai)
注意是 baseURL 不是 base_url
通通用 OpenAI 兼容
两种地址写法,互换一次就能解决大半问题
CClaude Code
走 Anthropic 协议,地址不带 /v1
接入过程卡住了?到 QQ 群 1128182538 说明「客户端 + 报错码 + 时间点」,比只说"用不了"好排查得多。其他通用问题见 常见问题。