图灵 APIAI 大模型 API 中转站

首页 / 客户端配置 / OpenAI Python SDK

OpenAI Python SDK 接入图灵 API

用官方 SDK 接入是最省事的方式:只改一个 base_url 参数,其余业务代码一行都不用动。这也是中转站最大的价值——换地址不换代码。

PythonOpenAI 协议官方 SDK

配置速查

只需要覆盖一个参数。

配置项填什么容易错在哪
base_urlhttps://turingapi.space/v1必须带 /v1,末尾不要加斜杠
api_key控制台创建的 sk- 密钥建议从环境变量读,不要硬编码
model站内实际模型名拼错会返回 400 或 404
SDK 版本差异:1.x 及以上用 OpenAI(base_url=...) 的客户端写法;0.x 老版本用的是模块级全局变量 openai.api_base。照抄网上的旧教程最容易在这里踩空。

前置准备

两分钟就能跑起来。

1
创建一个 API 密钥

在 注册页 建账号,控制台新建密钥并保存。

2
安装 1.x 以上版本

执行 pip install -U openai。老版本 API 结构不同,容易照抄失败。

3
把密钥放进环境变量

用 OPENAI_API_KEY 或自定变量名,避免密钥进代码仓库。

配置步骤

下面两份代码都能直接跑,区别是一个普通调用、一个流式。

基础调用 最小示例

  1. 安装 SDK 并设置环境变量
  2. 初始化客户端时指定 base_url
  3. 调用 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 换成 模型列表 里的任意模型名即可切换模型,代码结构不变。

流式输出 常用写法

  1. 把 stream=True 传进去
  2. 遍历返回的 chunk
  3. 取 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)怎么写 兼容老项目

  1. 0.x 版本没有客户端对象
  2. 用模块级属性设置地址和密钥
  3. 建议尽早升级到 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 的写法改。

验证是否配置成功

看到这些就说明通了

  1. 脚本正常退出,返回一段中文回答
  2. 没有抛 AuthenticationError
  3. 控制台「用量」页出现这次调用

能拿到 resp.choices[0].message.content 就说明协议、地址、密钥三者都对。

常见异常对照

  1. AuthenticationError → 密钥错或没读到环境变量
  2. NotFoundError → base_url 多了或少了 /v1
  3. BadRequestError → 模型名不对或不支持该参数
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,没判断就直接拼接会抛异常。另外确认没有在外层再套一层超时设置,中断了长连接。

相关客户端

还没密钥?注册后直接创建一个 邮箱注册即用,控制台自助创建密钥、查看用量与余额。
免费注册 →

接入过程卡住了?到 QQ 群 1128182538 说明「客户端 + 报错码 + 时间点」,比只说"用不了"好排查得多。其他通用问题见 常见问题。