跳到正文
土土金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 即可。