從 OpenAI 官方 API 切換到 LemonData 只需要修改兩行代碼。您現有的代碼、提示詞(prompts)和模型名稱都可以直接使用。您還能透過同一個 API key 存取 OpenAI、Anthropic、Google、DeepSeek 等超過 300 種模型。
如果您在遷移前正在比較閘道器(gateway)的選擇,請參閱價格比較以及 OpenRouter 與 LemonData 的比較。如果您的團隊需要針對特定區域的指南,中國開發者指南涵蓋了支付和營運方面的內容。
簡短版本
- 在 lemondata.cc 註冊並獲取 API key(您將獲得 $1 美元的免費額度)
- 替換您的
base_url和api_key - 完成。其他一切保持不變。
Python (OpenAI SDK)
# 之前:OpenAI 官方
from openai import OpenAI
client = OpenAI(api_key="sk-openai-xxx")
# 之後:LemonData(修改 2 行)
from openai import OpenAI
client = OpenAI(
api_key="sk-lemon-xxx",
base_url="https://api.lemondata.cc/v1"
)
# 其他一切保持不變
response = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
串流(Streaming)、函式調用(function calling)、視覺(vision):運作方式完全相同。OpenAI Python SDK 會將請求發送到您指向的任何 base_url。
Node.js (OpenAI SDK)
// 之前:OpenAI 官方
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: 'sk-openai-xxx' });
// 之後:LemonData(修改 2 行)
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: 'sk-lemon-xxx',
baseURL: 'https://api.lemondata.cc/v1',
});
// 其他一切保持不變
const completion = await openai.chat.completions.create({
model: 'gpt-4.1',
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(completion.choices[0].message.content);
注意:在 Node.js SDK 中是 baseURL(小駝峰式命名),而不是 base_url。
curl
# 之前:OpenAI 官方
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer sk-openai-xxx" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4.1","messages":[{"role":"user","content":"Hello"}]}'
# 之後:LemonData(修改 URL 和 key)
curl https://api.lemondata.cc/v1/chat/completions \
-H "Authorization: Bearer sk-lemon-xxx" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4.1","messages":[{"role":"user","content":"Hello"}]}'
相同的端點路徑、相同的請求主體、相同的響應格式。
環境變數方法
如果您的代碼是從環境變數讀取的(理應如此),您甚至不需要修改代碼:
# 之前
export OPENAI_API_KEY="sk-openai-xxx"
export OPENAI_BASE_URL="https://api.openai.com/v1"
# 之後
export OPENAI_API_KEY="sk-lemon-xxx"
export OPENAI_BASE_URL="https://api.lemondata.cc/v1"
OpenAI SDK 會自動從環境中讀取 OPENAI_API_KEY 和 OPENAI_BASE_URL。無需修改代碼。
遷移後您將獲得什麼
遷移到 LemonData 後,您不僅能保持與 OpenAI 的完全相容,還能獲得額外的功能:
300+ 模型,一個 API Key
您現有的 OpenAI 代碼現在可以與 Claude、Gemini、DeepSeek、Mistral 以及數百種其他模型配合使用。在大多數情況下,您唯一需要更改的是 model 參數:
# GPT-4.1 (OpenAI): 每 1M tokens $2.00/$8.00
response = client.chat.completions.create(model="gpt-4.1", messages=messages)
# Claude Sonnet 4.6 (Anthropic): 每 1M tokens $3.00/$15.00
response = client.chat.completions.create(model="claude-sonnet-4-6", messages=messages)
# Gemini 2.5 Pro (Google)
response = client.chat.completions.create(model="gemini-2.5-pro", messages=messages)
# DeepSeek V3: 每 1M tokens $0.28/$0.42 (使用 "deepseek-chat" 或別名 "deepseek-v3")
response = client.chat.completions.create(model="deepseek-chat", messages=messages)
多通道冗餘意味著如果某個上游供應商出現問題,閘道器會自動路由到備用通道。無需修改代碼。
原生協定存取(選用)
如果您想使用 Anthropic 或 Google 模型完整原生功能(如:擴展思考、帶有 cache_control 的提示詞快取、Google 搜尋接地),LemonData 透過相同的 base URL 支援它們的原生協定:
# Anthropic 原生:使用 Anthropic SDK
# 擴展思考、cache_control、引用(Citations)均可原生運作
from anthropic import Anthropic
client = Anthropic(
api_key="sk-lemon-xxx",
base_url="https://api.lemondata.cc" # 無需 /v1。Anthropic SDK 會自行添加 /v1/messages。
)
# Google Gemini 原生:使用 Google SDK
# 搜尋接地、grounding_metadata 均可原生運作
from google import genai
client = genai.Client(
api_key="sk-lemon-xxx",
http_options={"base_url": "https://api.lemondata.cc"} # 無路徑後綴。SDK 會自行添加 /v1beta/models/...。
)
這完全是選用的。OpenAI 相容端點適用於所有模型。但如果您需要 Anthropic 的擴展思考或 Google 的接地功能,原生協定存取可以讓您在沒有任何格式轉換損失的情況下使用這些功能。
遷移過程中通常會發生的變化
大多數遷移在技術上很簡單,但在營運上容易疏忽。團隊通常只更改了 base URL 和 key,然後假設其他一切都完全相同。對於請求架構(request schema)來說通常是正確的,但對於周邊的其他事物則不一定。
在切換流量之前,值得檢查的領域包括:
- SDK 或 HTTP 客戶端中的超時(timeout)設置
- 應用程式配置中的模型允許清單(allowlists)
- 假設單一供應商的成本儀表板
- 針對特定上游調整過的重試邏輯
- 任何關於響應標頭(headers)或速率限制(rate limits)的硬編碼假設
如果您在切換正式環境流量之前審核這五個領域,遷移通常會非常順利。
遷移檢核表
如果您希望遷移過程平穩無奇,請參考此清單:
- 建立一個 LemonData API key。
- 切換
base_url或baseURL。 - 針對
/v1/models執行一次冒煙測試(smoke test)。 - 測試一次對話補全、一次串流響應和一個失敗路徑。
- 確認您的日誌仍能擷取請求 ID 和模型名稱。
- 在最初幾次調用後檢查帳單,確保您的成本假設仍然成立。
- 只有在完成上述步驟後,才移動背景作業和正式環境流量。
常見錯誤
錯誤 1:硬編碼舊的模型清單
有些團隊會根據應用程式配置中的靜態列表來驗證模型 ID。如果您保留該列表,閘道器雖然可以運作,但您的應用程式會在請求發送前拒絕有效的模型名稱。
錯誤 2:僅將遷移視為更換供應商
真正的益處不僅僅是離開 OpenAI。真正的益處是從單一供應商架構轉向閘道器模式,這樣您就可以在不再次更改應用程式其餘部分的情況下,添加 Claude、Gemini、DeepSeek 等模型。
錯誤 3:跳過失敗路徑測試
成功路徑的補全證明了 API key 可以運作。但這並不能證明您的重試邏輯、錯誤解析或可觀測性在遷移後仍然有效。
如果您正在開發面向使用者的應用程式而不僅僅是腳本,接下來應該閱讀的兩份實作指南是單一 Key 聊天機器人教學和速率限制指南。
常見整合遷移
Cursor
Settings → Models → OpenAI API Key:
- API Key:
sk-lemon-xxx - Base URL:
https://api.lemondata.cc/v1
LangChain
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4.1",
api_key="sk-lemon-xxx",
base_url="https://api.lemondata.cc/v1"
)
Vercel AI SDK
import { createOpenAI } from '@ai-sdk/openai';
const lemondata = createOpenAI({
apiKey: 'sk-lemon-xxx',
baseURL: 'https://api.lemondata.cc/v1',
});
const result = await generateText({
model: lemondata('gpt-4.1'),
prompt: 'Hello!',
});
LiteLLM
import litellm
response = litellm.completion(
model="openai/gpt-4.1",
messages=[{"role": "user", "content": "Hello!"}],
api_key="sk-lemon-xxx",
api_base="https://api.lemondata.cc/v1"
)
驗證您的遷移
切換後的快速檢查:
curl https://api.lemondata.cc/v1/models \
-H "Authorization: Bearer sk-lemon-xxx" | head -c 200
如果您看到包含模型物件的 JSON 響應,就代表成功了。
常見問題 (FAQ)
我現有的提示詞還能用嗎? 是的。LemonData 完全相容 OpenAI,因此請求和響應格式保持不變。
我需要更改模型名稱嗎? 不需要。gpt-4.1、gpt-4o 和 gpt-4.1-mini 都能如預期運作。LemonData 還擁有三層模型解析系統:精確匹配、別名查找和模糊修正。這意味著即使是像 gpt-4-turbo 這樣已棄用的名稱或像 gpt4o 這樣的拼寫錯誤,通常仍能正確解析。
串流功能呢? 運作方式完全相同。SSE 格式,相同的數據塊(chunk)結構。對於原生的 Anthropic/Gemini 協定,您將獲得各供應商的原生 SSE 格式(包括擴展思考的思考增量)。
函式調用 / 工具(Tools)呢? 完全支援。相同的 schema,相同的行為。
錯誤處理呢? LemonData 返回與 OpenAI 相容的錯誤,並增加了額外的代理友好欄位,例如 retryable、did_you_mean、suggestions 和 retry_after。標準的 OpenAI SDK 錯誤處理仍然有效,因為這些欄位是附加的。
我可以切換回去嗎? 是的。將那兩行代碼改回去即可。沒有專有格式,也沒有需要撤銷的數據遷移。
從這裡開始:lemondata.cc/r/devto-migration
完整 API 文件:docs.lemondata.cc
快速入門指南:docs.lemondata.cc/quickstart
