LemonData 揭露多種 API 格式,以便常見的開發工具、SDK 與框架透過最少的黏合程式碼完成整合。
本頁面刻意比行銷矩陣範圍更窄:
- Supported 表示我們記錄了具體的設定路徑,且 LemonData 揭露該路徑所期待的協定形態。
- Strong native path 表示該 repo 也有針對該協定家族的直接轉接器或請求格式證據。
- Best-effort 表示整合可以運作,但上游客戶端不將此自訂 gateway 工作流程視為穩定契約。
不支援的欄位處理方式並不一致。在相容性路徑上,某些欄位會被忽略或正規化。在 /v1/responses 上,當該路徑無法保證請求的行為時,不支援的欄位可能會回傳明確的 400 或 503 錯誤。
支援的 API 格式
| Endpoint | Format | Use Case |
|---|
/v1/chat/completions | OpenAI Chat | 通用相容性 |
/v1/responses | OpenAI Responses | 有狀態對話 |
/v1/messages | Anthropic Messages | Claude 原生功能 |
/v1beta/models/:model:generateContent | Google Gemini | Gemini 原生功能 |
IDE 與 CLI 相容性
已記錄的工具路徑
| Tool | Support Level | Format | Notes |
|---|
| Cursor | Supported with limits | OpenAI-compatible | 適用於 BYOK 標準的 chat/editor 流程,但不是用來取代 Cursor 管理的功能(例如 Tab Completion) |
| Claude Code CLI | Strong native path | Anthropic | 原生的 /v1/messages 路由,對 thinking 與 tool_choice 有轉接器覆蓋 |
| Codex CLI | Supported with model/path limits | OpenAI Responses | 將 /v1/responses 視為針對 Codex 特定工作流程的進階路徑;某些僅在 Responses 中的欄位並不保證在每個模型或路由路徑可用 |
| Gemini CLI | Best-effort / experimental | Gemini | 自訂的 LemonData base URL 流程並非穩定的上游契約 |
| OpenCode | Supported | OpenAI-compatible | 預設使用 OpenAI 相容的 provider;僅在您明確需要時,才改用以 Responses 為基礎的 provider |
其他 OpenAI 相容的編輯器與代理工具通常也可用相同的 base URL 模式,但此 repo 目前未維護 Windsurf、Aider、Continue.dev、Cline/Roo Code、GitHub Copilot 等客戶端的工具專屬回歸測試覆蓋。
設定範例
Cursor
Claude Code
OpenCode
Aider
Base URL: https://api.lemondata.cc/v1
API Key: sk-your-lemondata-key
Cursor 在內部使用 Anthropic 風格的工具格式。LemonData 支援兩種格式:
- OpenAI format:
{ type: "function", function: { name, parameters } }
- Anthropic format:
{ name, input_schema } (no type field)
export ANTHROPIC_BASE_URL="https://api.lemondata.cc"
export ANTHROPIC_API_KEY="sk-your-lemondata-key"
export OPENAI_API_KEY="sk-your-lemondata-key"
export LOCAL_ENDPOINT="https://api.lemondata.cc/v1"
export OPENAI_API_KEY="sk-your-lemondata-key"
export OPENAI_BASE_URL="https://api.lemondata.cc/v1"
aider --model gpt-5.4
SDK 相容性
已記錄的 SDK 與框架路徑
| SDK / Framework | Language | Support Level | Notes |
|---|
| OpenAI SDK | Python/JS/Go | Supported core path | Chat Completions 與 Embeddings 為預設記錄路徑;某些僅在 Responses 的欄位並不保證在每個模型與路由路徑可用 |
| Anthropic SDK | Python/JS | Strong native path | 原生 Messages 路由,對工具、thinking 與 prompt caching 有直接證據 |
| Vercel AI SDK | TypeScript | Recommended integration pattern | 優先使用 @ai-sdk/openai-compatible;僅在您明確想要 Responses 原生行為時使用 @ai-sdk/openai |
| LangChain | Python/JS | Supported standard surfaces | ChatOpenAI 與 OpenAIEmbeddings 為預期範圍;供應商原生的擴充項目不在範圍內 |
| LlamaIndex | Python | Supported via OpenAILike | 對於第三方 gateway(例如 LemonData)請使用 OpenAILike,而非內建的 OpenAI 類別 |
| Dify | - | Supported with scope limits | 適用於 OpenAI provider 與以 chat-completions 為導向的流程;不適合 Codex 專屬的 Responses 或 WebSocket 行為 |
Chat Completions 參數
核心參數
| Parameter | Type | Description |
|---|
model | string | 模型識別碼(必填) |
messages | array | 對話訊息(必填) |
max_tokens | integer | 最大輸出 tokens |
temperature | number | 抽樣溫度(0-2) |
top_p | number | Nucleus 抽樣(0-1) |
stream | boolean | 啟用串流 |
{
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": { "type": "string" }
}
},
"strict": true
}
}
],
"tool_choice": "auto",
"parallel_tool_calls": true
}
| Format | Example | Description |
|---|
| String | "auto", "none", "required" | 簡單選擇 |
| OpenAI Object | { "type": "function", "function": { "name": "fn" } } | 強制指定特定函式 |
| Anthropic Object | { "type": "tool", "name": "fn", "disable_parallel_tool_use": true } | Anthropic 原生格式 |
進階參數
| Parameter | Type | Description |
|---|
stream_options | object | { include_usage: true } 用於 token 計數 |
reasoning_effort | string | "low", "medium", "high",用於具推理能力的 GPT-5 系列模型 |
service_tier | string | "auto" 或 "default" |
seed | integer | 決定性輸出 |
logprobs | boolean | 回傳對數機率 |
top_logprobs | integer | 回傳 top logprobs 的數量(0-20) |
logit_bias | object | token 偏差映射(-100 到 100) |
frequency_penalty | number | 重複懲罰(-2 到 2) |
presence_penalty | number | 主題出現懲罰(-2 到 2) |
stop | string/array | 停止序列 |
n | integer | 完成次數(1-128) |
user | string | 用戶識別以供追蹤 |
OpenAI 進階功能
| Parameter | Type | Description |
|---|
modalities | array | ["text", "audio"] 表示多模態 |
audio | object | 音訊輸出設定(voice, format) |
prediction | object | 預測輸出以加快完成速度 |
metadata | object | 用於追蹤的鍵值對 |
store | boolean | 是否儲存以便後續取回 |
提供者特定選項
{
"anthropic_options": {
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"prompt_caching": true
},
"google_options": {
"safety_settings": [...],
"google_search": true,
"code_execution": true
}
}
Anthropic Messages 參數
核心參數
| Parameter | Type | Description |
|---|
model | string | 模型識別碼 |
messages | array | 對話訊息 |
max_tokens | integer | 最大輸出(最高可到 128000) |
system | string/array | system prompt |
stream | boolean | 啟用串流 |
{
"tools": [
{
"name": "get_weather",
"description": "Get weather",
"input_schema": {
"type": "object",
"properties": {
"location": { "type": "string" }
}
}
}
],
"tool_choice": {
"type": "auto",
"disable_parallel_tool_use": false
}
}
Extended Thinking
{
"model": "claude-opus-4-6",
"thinking": {
"type": "enabled",
"budget_tokens": 10000
}
}
Responses API 參數
核心參數
| Parameter | Type | Description |
|---|
model | string | 模型識別碼 |
input | string/array | 輸入內容 |
instructions | string | 系統指示 |
max_output_tokens | integer | 最大輸出 tokens |
previous_response_id | string | 繼續對話用 |
進階參數
| Parameter | Type | Description |
|---|
truncation_strategy | string | "auto" 或 "disabled" |
include | array | ["reasoning.encrypted_content"] |
reasoning_effort | string | 用於推理模型 |
service_tier | string | 優先等級 |
支援 OpenAI 與 Anthropic 工具格式:
// OpenAI format
{ "type": "function", "name": "fn", "parameters": {...} }
// Anthropic format (Cursor compatibility)
{ "name": "fn", "input_schema": {...} }
Gemini API 參數
核心參數
| Parameter | Type | Description |
|---|
contents | array | 對話內容 |
systemInstruction | object | system prompt |
generationConfig | object | 生成設定 |
{
"tools": [{
"functionDeclarations": [{
"name": "search",
"description": "Search the web",
"parameters": {...}
}],
"codeExecution": {},
"googleSearch": {}
}],
"toolConfig": {
"functionCallingConfig": {
"mode": "AUTO"
}
}
}
Safety Settings
{
"safetySettings": [
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
}
]
}
額外參數
| Parameter | Type | Description |
|---|
cachedContent | string | 快取內容參考 |
responseMimeType | string | "text/plain" 或 "application/json" |
responseSchema | object | 用於結構化輸出的 JSON schema |
所有端點皆支援 Server-Sent Events (SSE) 串流:
# Chat Completions
curl https://api.lemondata.cc/v1/chat/completions \
-H "Authorization: Bearer sk-xxx" \
-d '{"model": "gpt-4o", "messages": [...], "stream": true}'
# With usage tracking
-d '{"...", "stream_options": {"include_usage": true}}'
錯誤處理
LemonData 回傳 OpenAI 相容的錯誤回應:
{
"error": {
"message": "Invalid API key",
"type": "invalid_api_key",
"code": "invalid_api_key"
}
}
詳情請參閱 Error Handling Guide。
最佳實務
所有 schema 都使用 .passthrough() — 未知參數會被轉發到上游提供者。
對於串流回應,請啟用 stream_options.include_usage 以獲得準確的 token 計數。
請對齊您所使用 SDK 的預期格式。LemonData 同時接受 OpenAI 與 Anthropic 格式。