LemonData API 旨在與所有主流 AI 開發工具實現 無縫相容 (drop-in compatibility)。本指南記錄了支援的參數與經過驗證的整合方案。
所有參數皆經過驗證並透傳至上游供應商。針對特定模型不支援的參數將會被自動忽略,以確保最大程度的相容性。
支援的 API 格式
| 端點 | 格式 | 使用場景 |
|---|
/v1/chat/completions | OpenAI Chat | 通用相容性 |
/v1/responses | OpenAI Responses | 有狀態對話 |
/v1/messages | Anthropic Messages | Claude 原生功能 |
/v1beta/models/:model:generateContent | Google Gemini | Gemini 原生功能 |
IDE 與 CLI 相容性
經過驗證的工具
| 工具 | 狀態 | 格式 | 備註 |
|---|
| Cursor | ✅ 完全支援 | OpenAI | 支援 Anthropic 工具格式 |
| Claude Code CLI | ✅ 完全支援 | Anthropic | 擴展思考、tool_choice |
| Windsurf | ✅ 完全支援 | OpenAI | 標準 OpenAI 格式 |
| Aider | ✅ 完全支援 | OpenAI | 支援所有模型 |
| Continue.dev | ✅ 完全支援 | OpenAI/Anthropic | 支援雙格式 |
| OpenCode | ✅ 完全支援 | OpenAI | 支援多供應商 |
| Cline/Roo Code | ✅ 完全支援 | OpenAI | 透過 OpenRouter 格式 |
| GitHub Copilot | ✅ 完全支援 | OpenAI | 標準格式 |
| Codex CLI | ✅ 完全支援 | OpenAI | OpenAI Responses API |
| Gemini CLI | ✅ 完全支援 | Gemini | 原生 Gemini 格式 |
配置範例
Cursor
Claude Code
OpenCode
Aider
Base URL: https://api.lemondata.cc/v1
API Key: sk-your-lemondata-key
Cursor 內部使用 Anthropic 風格的工具格式。LemonData 同時支援以下兩者:
- OpenAI 格式:
{ type: "function", function: { name, parameters } }
- Anthropic 格式:
{ name, input_schema } (無 type 欄位)
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_API_BASE="https://api.lemondata.cc/v1"
aider --model gpt-4o
SDK 相容性
經過驗證的 SDK
| SDK | 語言 | 狀態 | 備註 |
|---|
| OpenAI SDK | Python/JS/Go | ✅ 完全支援 | 支援所有參數 |
| Anthropic SDK | Python/JS | ✅ 完全支援 | 擴展思考、工具 |
| Vercel AI SDK | TypeScript | ✅ 完全支援 | streamText, generateObject |
| LangChain | Python/JS | ✅ 完全支援 | ChatOpenAI, bind_tools |
| LlamaIndex | Python | ✅ 完全支援 | 相容 OpenAI |
| Dify | - | ✅ 完全支援 | OpenAI 格式 |
Chat Completions 參數
核心參數
| 參數 | 類型 | 說明 |
|---|
model | string | 模型識別碼 (必填) |
messages | array | 對話訊息 (必填) |
max_tokens | integer | 最大輸出 token 數 |
temperature | number | 採樣溫度 (0-2) |
top_p | number | 核採樣 (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
}
| 格式 | 範例 | 說明 |
|---|
| String | "auto", "none", "required" | 簡單選擇 |
| OpenAI Object | { "type": "function", "function": { "name": "fn" } } | 強制指定特定函數 |
| Anthropic Object | { "type": "tool", "name": "fn", "disable_parallel_tool_use": true } | Anthropic 原生格式 |
進階參數
| 參數 | 類型 | 說明 |
|---|
stream_options | object | 用於 token 計數的 { include_usage: true } |
reasoning_effort | string | 用於 o1/o3 模型的 "low"、"medium"、"high" |
service_tier | string | "auto" 或 "default" |
seed | integer | 確定性輸出 |
logprobs | boolean | 回傳對數機率 |
top_logprobs | integer | 前幾名對數機率的數量 (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 進階功能
| 參數 | 類型 | 說明 |
|---|
modalities | array | 用於多模態的 ["text", "audio"] |
audio | object | 音訊輸出配置 (語音、格式) |
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 參數
核心參數
| 參數 | 類型 | 說明 |
|---|
model | string | 模型識別碼 |
messages | array | 對話訊息 |
max_tokens | integer | 最大輸出 (最高 128000) |
system | string/array | 系統提示詞 |
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-5",
"thinking": {
"type": "enabled",
"budget_tokens": 10000
}
}
Responses API 參數
核心參數
| 參數 | 類型 | 說明 |
|---|
model | string | 模型識別碼 |
input | string/array | 輸入內容 |
instructions | string | 系統指令 |
max_output_tokens | integer | 最大輸出 token 數 |
previous_response_id | string | 繼續對話 |
進階參數
| 參數 | 類型 | 說明 |
|---|
truncation_strategy | string | "auto" 或 "disabled" |
include | array | ["reasoning.encrypted_content"] |
reasoning_effort | string | 用於推理模型 |
service_tier | string | 優先級層級 |
工具格式
支援 OpenAI 與 Anthropic 兩種工具格式:
// OpenAI 格式
{ "type": "function", "name": "fn", "parameters": {...} }
// Anthropic 格式 (Cursor 相容性)
{ "name": "fn", "input_schema": {...} }
Gemini API 參數
核心參數
| 參數 | 類型 | 說明 |
|---|
contents | array | 對話內容 |
systemInstruction | object | 系統提示詞 |
generationConfig | object | 生成設定 |
{
"tools": [{
"functionDeclarations": [{
"name": "search",
"description": "搜尋網路",
"parameters": {...}
}],
"codeExecution": {},
"googleSearch": {}
}],
"toolConfig": {
"functionCallingConfig": {
"mode": "AUTO"
}
}
}
安全設定 (Safety Settings)
{
"safetySettings": [
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
}
]
}
額外參數
| 參數 | 類型 | 說明 |
|---|
cachedContent | string | 快取內容引用 |
responseMimeType | string | "text/plain" 或 "application/json" |
responseSchema | object | 用於結構化輸出的 JSON schema |
串流 (Streaming)
所有端點皆支援 Server-Sent Events (SSE) 串流:
# 對話補全
curl https://api.lemondata.cc/v1/chat/completions \
-H "Authorization: Bearer sk-xxx" \
-d '{"model": "gpt-4o", "messages": [...], "stream": true}'
# 包含用量追蹤
-d '{"...", "stream_options": {"include_usage": true}}'
錯誤處理
LemonData 回傳與 OpenAI 相容的錯誤回應:
{
"error": {
"message": "Invalid API key",
"type": "invalid_api_key",
"code": "invalid_api_key"
}
}
詳情請參閱 錯誤處理指南。
最佳實踐
所有 schema 皆使用 .passthrough() — 未知參數將被轉發至上游供應商。
優先使用 stream_options 以獲得準確的計費
在串流回應中啟用 stream_options.include_usage 以獲得準確的 token 計數。
請符合您 SDK 預期的格式。LemonData 接受 OpenAI 與 Anthropic 兩種格式。