跳到正文
土土金API

OpenAI 兼容接口是什么:改一个 base_url 就能换模型服务

OpenAI 兼容接口沿用 OpenAI API 的路径和请求格式,官方 SDK、LangChain、Dify、n8n 等工具改 base_url 和 Key 就能接入。本文说明本站兼容哪些接口、迁移步骤,以及兼容接口和原生接口的区别。

OpenAI 兼容接口,指路径和请求格式都和 OpenAI API 一样的接口,比如 POST /v1/chat/completions。土土金 API 的 OpenAI 兼容地址是 https://www.tutujin.com/v1。已经在用 OpenAI SDK 的代码只改两处:base_url 和 api_key,就能调用 GPT、Claude、Gemini、DeepSeek 等目录里标注支持该接口的模型,model 换成对应的模型名即可。

为什么大家都兼容 OpenAI 的格式

OpenAI 的接口格式用的人最多,周边工具也最全。官方 Python 和 Node.js SDK、LangChain、LlamaIndex、Dify、FastGPT、n8n 都支持自定义 base_url,所以一个服务只要兼容这套格式,这些工具拿来就能用。对企业来说,换供应商或者换模型时不用改业务代码,切换成本很低。

本站支持的接口

接口方法与路径状态模型数
Chat CompletionsPOST/v1/chat/completions已实测681
ResponsesPOST/v1/responses原样转发5
Claude MessagesPOST/v1/messages已实测49
Gemini generateContentPOST/v1beta/models/{model}:generateContent已实测63
图像生成POST/v1/images/generations原样转发54
图像编辑POST/v1/images/edits原样转发31
Embeddings 向量POST/v1/embeddings已实测18
Rerank 重排序POST/v1/rerank原样转发6
语音合成 TTSPOST/v1/audio/speech原样转发8
语音识别 STTPOST/v1/audio/transcriptions原样转发1
Midjourney 绘图POST/mj/submit/imagine原样转发13
Suno 音乐POST/suno/submit/music原样转发2

「已实测」表示我们在本站完成过真实调用与扣费核对;「原样转发」表示请求按原格式转发给模型服务,参数以对应模型的官方说明为准。模型数为当前目录中支持该接口的模型数量。

「已实测」的接口我们在本站做过真实调用和扣费核对;「原样转发」的接口按原格式交给模型服务处理,参数以对应模型的官方说明为准。

迁移只要三步

  1. 在控制台创建 API Key,为它选一个分组。
  2. 把 base_url 改成 https://www.tutujin.com/v1,api_key 改成新 Key。
  3. 把 model 改成模型与价格里的模型名。

官方 SDK 也会读取环境变量,有些项目连代码都不用改,设置两个环境变量就行:

cURL
export OPENAI_BASE_URL="https://www.tutujin.com/v1"
export OPENAI_API_KEY="sk-你的Key"

在代码里显式指定也可以:

import os
from openai import OpenAI

client = OpenAI(base_url="https://www.tutujin.com/v1", api_key=os.environ["TUTUJIN_API_KEY"])

resp = client.chat.completions.create(
    model="deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "用三句话介绍上下文缓存"}],
)
print(resp.choices[0].message.content)

上面这段代码只改 model 就能换成其他厂商的模型,比如 claude-sonnet-5-5 或 gemini-3.8-flash。

兼容不等于完全一样

  • 参数支持有差别。temperature 的取值范围、response_format、tools、reasoning_effort 这些参数,非 OpenAI 模型的支持程度各不相同。不支持的参数可能被忽略,也可能返回 400。
  • 部分返回字段不同。基本结构一致,但推理内容、缓存 tokens 这类厂商特有的信息,字段名和是否返回取决于模型。
  • 模型名用本站的。同一个模型在不同平台的叫法可能不一样,以模型广场显示的为准。

所以换模型之后,先用少量请求验证一遍参数和返回,再放量。整个项目从官方 API 或其他服务迁移过来时,核对清单、分批切换和回滚办法见从官方 API 或其他 OpenAI 兼容服务迁移。

兼容接口和原生接口怎么选

你的情况建议
新项目,想在多家模型之间切换用 OpenAI 兼容接口,一套代码走到底
已有 Anthropic SDK 代码,或要用 Claude 的原生参数(如 cache_control)用 Claude Messages 原生接口
已有 Google Gen AI SDK 代码用 Gemini 原生接口
用 LangChain、Dify、n8n 等工具在工具里选 OpenAI 或 OpenAI 兼容类型,填 base_url 和 Key

三种接口用的是同一把 Key,按同样的价格计费。

常用工具的配置

认证方式和请求头的写法见认证与 Base URL。

常见问题

OpenAI 兼容接口能调用 Claude 和 Gemini 吗?

能。模型目录里标注支持 Chat Completions 的 Claude、Gemini 模型都可以用 OpenAI 格式调用。需要 Claude 或 Gemini 的原生参数时,可以改用它们的原生接口,同一把 Key 都能用。

只改 base_url 就够了吗?

还要把 api_key 换成本站的 Key,把 model 换成模型广场里的模型名。其余业务代码一般不用动。

base_url 要不要带 /v1?

OpenAI SDK 的 base_url 填 https://www.tutujin.com/v1,包含 /v1;Anthropic SDK 和 Google Gen AI SDK 填站点根地址 https://www.tutujin.com,它们会自己拼接后面的路径。

支持流式输出吗?

支持。Chat Completions 的流式输出已在本站实测,用法和 OpenAI 一样,请求里加 stream 为 true 即可。