DeepSeek API 集成指南:透過 ECAIX 使用 OpenAI 兼容的請求
DeepSeek API 集成指南:透過 ECAIX 使用 OpenAI 兼容的請求
這份指南說明如何透過 ECAIX 的 OpenAI 兼容 API 端點測試 DeepSeek 模型 ID。它涵蓋最小有效請求、Python 和 curl 的範例、模型 ID 驗證、流式輸出、結構化回應、工具集及常見錯誤的診斷路徑。
這份指南描述的是 ECAIX 中介通路對於當前 ECAIX 目錄中公開的模型 ID 的存取。並不聲稱 ECAIX 是 DeepSeek 的官方 API 端點,也不保證所有 DeepSeek 功能都能透過所有中介路徑提供。在將工作負載移至生產環境之前,請查閱當前模型頁面和提供商文檔。
本指南驗證的內容
範例使用了 ECAIX 的 OpenAI 兼容路徑以及在公開目錄中於出版時期可見的模型 ID。可用性、路由、限制、價格及支援的功能都可能隨時變更。請將目錄和 API 文檔視為當前的權威資源。
快速起步
如果您已經有一個 OpenAI SDK 應用程式,請按照以下步驟進行:
- 瀏覽 DeepSeek v4.1 Flash 模型頁面,並確認該 ID 是可用的。
- 創建一個 ECAIX API 密鑰。
- 將 OpenAI 兼容的基礎 URL 設定為
https://ecaix.com/api/ai/v1。 - 在盡可能保持 SDK 和應用程式代碼不變的情況下進行。
- 執行下方的最小請求。
- 在基本請求成功後,再逐步添加流式輸出、JSON 格式或工具集。
端點與模型 ID
對於 OpenAI 兼容的客戶端,請使用以下資訊:
Base URL: https://ecaix.com/api/ai/v1
Model: deepseek-v4.1-flash
模型 ID 不是一篇博客文章中的永久保證。請在每次新的集成或部署前,從 當前模型目錄 中確認該 ID。如果您需要不同的 DeepSeek 系列成員,請從模型詳細頁面中精確複製 ID,而不是猜測後綴。
端點格式也很重要。SDK 应該接收以 /v1 結尾的基礎路徑;客戶端會在該路徑後添加 /chat/completions 或其他操作路徑。請勿在 base_url 上直接添加 /chat/completions,如果 SDK 已經在請求中添加了它。
Python 使用 OpenAI SDK
在虛擬環境中安裝或升級 OpenAI Python SDK:
python -m pip install --upgrade openai
然後使用 ECAIX 基礎 URL 和 API 密鑰:
const client = new OpenAI({
apiKey: process.env.ECAIX_API_KEY,
baseURL: "https://ecaix.com/api/ai/v1",
});
const response = await client.chat.completions.create({
model: "deepseek-v4.1-flash",
messages: [
{ role: "user", content: "Return one short sentence about API testing." },
],
max_tokens: 128,
});
console.log(response.choices[0].message.content);
請使用服務器端程式碼來執行 API 請求。前端應用程式應該呼叫您自己的後端,而不是在客戶端 JavaScript 中暴露 ECAIX 密鑰。
Curl 請求診斷
當 SDK 失敗時,請移除 SDK 並直接測試端點。將頭部和體積分開儲存,以便區分 HTTP 問題和回應格式問題。
curl -sS -D /tmp/ecaix-deepseek-headers.txt \
-o /tmp/ecaix-deepseek-response.json \
-w '\nHTTP %{http_code}\n' \
"https://ecaix.com/api/ai/v1/chat/completions" \
-H "Authorization: Bearer ${ECAIX_API_KEY}" \
-H "content-type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [
{"role": "user", "content": "Reply with one short sentence."}
],
"max_tokens": 128
}'
請勿將儲存的頭部或回應直接貼上到公開的問題中,而不移除 API 密鑰、請求 ID、提示、存儲庫路徑和客戶資料。
如何診斷回應
按照以下順序進行:
- HTTP 狀態:確定請求是否達到有效的端點。
- 回應體:閱讀提供商或中介的錯誤代碼。
- 模型 ID:從當前模型目錄中精確複製 ID。
- 認證:檢查頭部密鑰、帳戶和權限。
- 請求形狀:將體積縮減至
model、messages和較小的輸出限制。 - 功能字段:逐步添加流式、JSON 或工具。
- SDK 行為:比較 SDK 請求與直接 curl 請求。
這樣可以避免客戶端庫問題被混淆為模型路由或帳戶權限。
流式回應
如果應用程式需要增量輸出,請在正常請求成功後再添加流式:
stream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Summarize API retries in three points."}],
stream=True,
max_tokens=256,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
流式事件的精確行為取決於端點和 SDK。請驗證您的框架如何處理空 delta、最終使用事件、斷開連接和 [DONE] 類型的終止。請勿在測試斷開連接和重試後將流式實現視為生產級別。
結構化輸出與 JSON
如果您需要機器可讀的輸出,請從普通請求開始,然後逐步添加端點和模型支援的最小結構化輸出選項。請使用實際的 JSON 解析器驗證回傳的內容。說「返回 JSON」並不等同於強制執行的回應格式。
import json
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[
{
"role": "user",
"content": "Return a JSON object with keys title and priority."
}
],
response_format={"type": "json_object"},
max_tokens=128,
)
payload = json.loads(response.choices[0].message.content)
print(payload["title"])
response_format 是否被接受可能取決於模型和路徑。如果端點回應不支援參數錯誤,請移除該字段,並在檢查路徑文檔後嘗試另一種格式。
函數呼叫與工具集
工具呼叫需要與文本生成獨立測試。從一個無害的函數開始,並檢查回傳的名稱和參數,再執行任何操作。
tools = [
{
"type": "function",
"function": {
"name": "get_demo_status",
"description": "Return a fixed status for a local compatibility test.",
"parameters": {
"type": "object",
"properties": {},
"additionalProperties": False,
},
},
}
]
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Check the demo status."}],
tools=tools,
tool_choice="auto",
max_tokens=128,
)
print(response.choices[0].message.tool_calls)
一個模型可能會回傳有效的文本回應,但工具呼叫因為參數轉換、不支援參數或客戶端特定行為而失敗。請勿在生產系統上執行回傳的工具參數,直到驗證參數格式並添加授權檢查。
OpenAI 兼容與 Anthropic 兼容路徑
ECAIX 針對不同客戶端提供不同的兼容表面:
| 客戶端或工作流程 | 文檔路徑 | 需驗證的內容 |
|---|---|---|
| OpenAI Python/Node SDK | /api/ai/v1 | Chat Completions、回應、流式輸出、工具集 |
| Anthropic 類型客戶端 | /api/ai/v1/anthropic | 消息字段、頭部、內容塊 |
| Claude Code 第三方工作流程 | /api/ai/v1/anthropic | 提供商特定行為;非官方 Anthropic 支援 |
在選擇路徑前,請閱讀 Chat Completions 文檔、Responses 文檔 和 Anthropic Messages 文檔。同一個模型 ID 在每個兼容表面可能不會暴露相同的字段或行為。
當前模型細節
請使用當前的詳細頁面來檢查能力和可用性:
這些頁面比靜態文章更可靠,用於當前模型 ID、上下文資訊和價格連結。
常見錯誤
| 狀態或症狀 | 可能原因 | 診斷行動 |
|---|---|---|
401 | 缺少或無效的授權令牌 | 檢查 Authorization、環境變量和密鑰狀態 |
403 | 密鑰或帳戶缺少權限 | 檢查帳戶存取和模型可用性 |
404 | 錯誤的基礎 URL 或路徑後綴 | 使用 /api/ai/v1/chat/completions 進行直接 curl 測試 |
400 | 無效的體積或不支援的字段 | 移除可選字段並重試最小化的體積 |
429 | 速率或限額限制 | 記錄回應頭部、減慢速度並檢查帳戶限制 |
5xx | 中介或上游失敗 | 儲存請求時間和回應 ID;根據您的策略重試 |
| 模型未找到 | 拼寫錯誤、移除模型或路由不匹配 | 從 /models 中精確複製模型 ID |