5 分鐘內從 OpenAI 遷移至 LemonData
從 OpenAI 官方 API 切換到 LemonData 只需要修改兩行代碼。您現有的代碼、prompts 和模型名稱都可以直接使用。您還可以透過同一個 API key 存取 OpenAI、Anthropic、Google、DeepSeek 等超過 300 個模型。
快速版本
- 在 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"}]}'
相同的 endpoint 路徑、相同的請求主體(request body)、相同的回應格式。
環境變數方法
如果您的代碼從環境變數讀取(理應如此),您甚至不需要動到代碼:
# 之前
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 模型及其完整的原生功能(extended thinking、帶有 cache_control 的 prompt caching、Google search grounding),LemonData 透過相同的 base URL 支援它們的原生協定:
# Anthropic 原生 — 使用 Anthropic SDK
# Extended thinking, 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
# Search grounding, 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 相容的 endpoint 適用於所有模型。但如果您需要 Anthropic 的 extended thinking 或 Google 的 grounding,原生協定存取可以讓您在沒有任何格式轉換損失的情況下使用這些功能。
常見整合遷移
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 回應,就代表成功了。
常見問題
我現有的 prompts 還能用嗎? 可以。LemonData 與 OpenAI 完全相容。相同的請求格式,相同的回應格式。
我需要更改模型名稱嗎? 不需要。gpt-4.1、gpt-4o、gpt-4.1-mini —— 所有標準的 OpenAI 模型名稱都可以使用。LemonData 還擁有三層模型解析系統:精確匹配 → 別名查找(21 個靜態別名,如 gpt4 → gpt-4,gpt-3.5 → gpt-3.5-turbo) → 模糊修正(Levenshtein 距離 ≤ 3)。因此,即使是已棄用的名稱(如 gpt-4-turbo)或拼寫錯誤(如 gpt4o)也能正確解析。
關於 streaming 呢? 運作方式完全相同。SSE 格式,相同的 chunk 結構。對於原生的 Anthropic/Gemini 協定,您會獲得各個供應商的原生 SSE 格式(包括用於 extended thinking 的 thinking deltas)。
關於 function calling / tools 呢? 完全支援。相同的 schema,相同的行為。
關於錯誤處理呢? LemonData 回傳與 OpenAI 相容的錯誤,並帶有額外的 agent 友善欄位:retryable、did_you_mean、suggestions、retry_after。標準的 OpenAI SDK 錯誤處理可以照常運作 —— 額外的欄位是附加的。
我可以切換回去嗎? 可以。將那兩行改回去即可。沒有綁定(lock-in),沒有專有格式,也沒有數據遷移。
完整 API 文件:docs.lemondata.cc
快速入門指南:docs.lemondata.cc/quickstart
