从 OpenAI 迁移到图灵
如果你的代码已经用 OpenAI Python / Node.js / Java SDK,迁过来通常只需改两处:base_url 和 api_key。下面是最小 diff 与常见迁移场景。
核心 diff(Python)
from openai import OpenAI
client = OpenAI(
- api_key=os.environ["OPENAI_API_KEY"],
+ api_key=os.environ["TURING_API_KEY"],
+ base_url="https://live-turing.cn.llm.tcljd.com/api/v1",
)
Node.js
import OpenAI from "openai";
const client = new OpenAI({
- apiKey: process.env.OPENAI_API_KEY,
+ apiKey: process.env.TURING_API_KEY,
+ baseURL: "https://live-turing.cn.llm.tcljd.com/api/v1",
});
cURL
-curl https://api.openai.com/v1/chat/completions \
+curl https://live-turing.cn.llm.tcljd.com/api/v1/chat/completions \
- -H "Authorization: Bearer $OPENAI_API_KEY" \
+ -H "Authorization: Bearer $TURING_API_KEY" \
-H "Content-Type: application/json" \
-d '{...}'
就这些。剩下的代码(messages、tools、stream、response_format 等)不用改。
模型名的选择
OpenAI 的模型名在图灵平台上加 turing/ 前缀。示例优先列近 6 个月推荐使用的模型;旧模型迁移请以 模型列表 / 聊天 的可用状态为准:
| OpenAI 原名 | 图灵平台名 |
|---|---|
gpt-5.5 | turing/gpt-5.5 |
gpt-5.4 | turing/gpt-5.4 |
gpt-5.4-mini | turing/gpt-5.4-mini |
gpt-5.4-nano | turing/gpt-5.4-nano |
text-embedding-3-small | turing/text-embedding-3-small |
图灵平台还支持跨厂商模型(用同一套 OpenAI SDK 调用 Claude / Gemini / Qwen),模型名没有 turing/ 前缀例如 claude-sonnet-5、qwen-plus-latest。完整列表见 模型列表 / 聊天。
功能对照表
| 功能 | OpenAI 原生 | 图灵平台 |
|---|---|---|
| Chat Completions | ✅ | ✅ 完全兼容 |
| Responses API | ✅ | ✅(见 OpenAI Responses) 注: code_interpreter / file_search / web_search 内置工具不支持,改用 function 或 MCP |
| 流式 SSE | ✅ | ✅ |
| 工具调用 | ✅ | ✅ |
Structured Output (response_format) | ✅ | ✅ |
| Vision / Multimodal | ✅ | ✅(图像 + 音频 + 视频 + 文件) |
| Assistants / Threads | ✅ | ⚠ Turing Assistant 规划中;临时请用 Chat Completions + 自己管状态 |
| Embeddings | ✅ | ✅ |
| Images | ✅ | ✅(/v1/images/generations、/edits、/scales) |
| Audio Speech (TTS) | ✅ | ✅ |
| Audio Transcriptions (STT) | ✅ | ✅(异步任务模型,见 STT) |
| Realtime | ✅ | ✅(WebSocket) |
| Fine-tuning | ✅ | ❌ 不提供 |
| Batch API | ✅ | ⚠ 未公开 |
图灵新增:turing_options
迁过来后,你可以在顶层加一个 turing_options 字段享受平台能力:
response = client.chat.completions.create(
model="turing/gpt-5.4-mini",
messages=[...],
extra_body={
"turing_options": {
"timeout": 30,
"max_retries": 2,
"fallbacks": ["turing/claude-sonnet-5"]
}
}
)
| 字段 | 作用 |
|---|---|
timeout | 服务端超时(0–300s) |
max_retries | 自动重试次数(1–3),仅对 429/5xx/超时 |
fallbacks | 主模型失败时自动切备用模型 |
详见 超时、重试与 Fallback。
常见 gotchas
- 模型名前缀:忘加
turing/会返回 404(某些通用模型除外,如跨厂商的claude-*、gemini-*) - Assistants API:目前不支持,迁过来的 Assistants 代码要改造成 Chat Completions + 本地状态
top_logprobs:部分厂商(非 OpenAI)不返回logit_bias:部分小模型忽略- Responses 的
web_search内置工具:图灵不支持,改用tools自定义函数 + 联网搜索 的独立端点 - OpenAI SDK 默认超时:客户端也有超时,建议
OpenAI(timeout=60)显式设得比turing_options.timeout长
迁移后立刻能用的平台能力
- 跨厂商切模型:同一段代码换模型名即可从 GPT 切到 Claude / Gemini / Qwen
- Fallback 链:主模型 429 时自动切备用
- 统一计费:计费与用量 一个面板看所有厂商花费
- 请求追踪:
X-Turing-Trace-Id给排查带来一致性 - Prompt 缓存:Claude 的
cache_control在这里也能用,降 90% 输入成本
See also
- Chat Completions — 迁过来的主接口
- 模型列表 — 全部可用模型
- 超时、重试与 Fallback —
turing_options详解 - 从 Anthropic 迁移 — 如果你同时在用 Claude SDK