DeepSeek API 使用指南:從取得金鑰到跑通呼叫

一切從一條報錯開始,這個夏天我親眼見了兩次。同事照某篇教學敲了 pip install deepseek-api,pip 回了他一整屏紅字。另一回是裝好了、範例一跑,伺服器回 Model Not Exist——因為教學裡寫的 deepseek-chat,2026 年 7 月 24 日就跟 deepseek-reasoner 一起退役了。這兩種失敗都不怪鍵盤前的人:教學過期了,DeepSeek API 已經往前走了。

本文全部對齊 2026 年 8 月的現行口徑:真正能解析的模型名、真實存在的取金鑰流程、GA 版上線的參數。一篇講完從零到生產級呼叫鏈——金鑰、第一次呼叫、串流、思考模式、多輪對話、結構化輸出、限流。順帶一張糾正表,把流傳甚廣的教學還在教錯的東西逐條對清。

DeepSeek API 是什麼

DeepSeek API 是一個說兩種業界標準方言的 chat 介面:OpenAI 格式和 Anthropic 格式。雙相容就是它的全部設計哲學——你不需要裝新 SDK、學新報文格式、重寫任何東西,把現有 OpenAI 用戶端指到另一個 base URL、換一個模型字串就完事。會調 GPT 就會調 DeepSeek。

三個官方網域各司其職,分清它們比想像中重要——這個主題的搜尋結果裡至少混著八個仿冒站(deep-seek.com、deepseekv4pro.com 之流),既不是文件也不是控制台:

網域用途
platform.deepseek.com控制台:建金鑰、查餘額、看用量
api-docs.deepseek.com文件與指南
api.deepseek.com你的程式真正請求的端點

現行模型名,以及它們背後實際指向的 checkpoint:

模型字串實際 checkpoint定位
deepseek-v4-flashV4-Flash-0731快且便宜,日常主力
deepseek-v4-proV4-Pro-0813深度推理旗艦
deepseek-v4-flash-vision-exp實驗版文字+圖像輸入

這個映射是刻意設計的:呼叫名保持穩定,DeepSeek 在背後把它指到最新 checkpoint。但有兩個名字不再解析deepseek-chatdeepseek-reasoner,2026 年 7 月 24 日全部退役。任何還在敲這兩個名字的教學,描述的都是一個已經不存在的產品。(模型規格、跑分和完整價格見站內 DeepSeek V4 全解。)

取得 DeepSeek API 金鑰

認證就是一個普通的 HTTP Bearer token——一個字串、一個請求標頭。取得方式:登入 platform.deepseek.com,進 API Keys 頁,點建立,立刻複製。金鑰只顯示一次。流程到此為止,沒有更多儀式。

有兩件事值得說透,因為這兩件事上噪音很大。

第一:沒有 OAuth 流程、沒有企業認證表單、沒有權限範圍勾選。有些流傳很廣的教學描述了一套「OAuth 2.0 雙階段認證+實名驗證」——那套流程不存在。哪篇指南要你設定 OAuth 憑證,你讀到的就是小說。

第二:把金鑰當密碼保管,因為它就是能花錢的密碼。生產環境的標準紀律:

# .env —— 永不寫死、永不提交
DEEPSEEK_API_KEY=sk-your-key-here
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("DEEPSEEK_API_KEY")
if not api_key:
    raise RuntimeError("Missing DEEPSEEK_API_KEY")

金鑰只留在伺服器端。發到瀏覽器或打包進 App 的金鑰就不再是秘密了——那是捐款。

第一次呼叫 DeepSeek API

官方首個呼叫範例是裸 HTTP 寫的,值得慢慢讀一遍,因為每個欄位之後都會以 SDK 的形態再出現——這段 curl 我到現在接到任何新帳號都先跑一遍:一槍驗證金鑰、網路、模型名三樣全通,之後出了問題才好排查:

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${DEEPSEEK_API_KEY}" \
  -d '{
        "model": "deepseek-v4-pro",
        "messages": [
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "Hello!"}
        ],
        "thinking": {"type": "enabled"},
        "reasoning_effort": "high",
        "stream": false
      }'

端點是 api.deepseek.com 上的 POST /chat/completions。messages 按角色堆疊——先 system 人設,再使用者輪次。thinking 打開思維鏈開關,reasoning_effort 設定思考強度,stream: false 表示等整個 JSON 回應一次回來。

Python 版

「OpenAI 相容」在實際開發裡買到的東西是這個——裝標準 OpenAI SDK,不是任何第三方「deepseek」套件(其中幾個是非官方的,有一個著名的是純虛構的):

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com",   # 那個轉接頭
)

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "用兩句話解釋 HTTP cookie。"},
    ],
)
print(response.choices[0].message.content)

遷移只改兩行:base_url 和模型字串。其餘一切——重試、型別、串流助手——都是你現有 OpenAI 程式換個識別證繼續上班。用 Anthropic SDK 的程式庫同理,指到 https://api.deepseek.com/anthropic

串流輸出

stream=True,回應以伺服器推送事件(SSE)到達:一串 JSON 塊,每塊帶著裝有幾個新 token 的 delta。頭幾個詞在模型想完全部內容之前就冒出來——這就是聊天「感覺活著」和「感覺在下載檔案」的差別。

stream = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "寫一首關於延遲的俳句。"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

串流與否,回應裡的 usage 欄位都會報 prompt_tokenscompletion_tokens——你的帳單就是從這兩個數字算出來的。現在就養成記日誌的習慣,下文 token 一節講它們意味著什麼。

串流有兩個第一週就回本的習慣——我自己都是付過學費才養成的。給每個請求設明確逾時——一條卡死的連線佔著槽位不放,跟一個特別慢的模型沒有區別,重連好過乾等。串中途斷掉時,重送整個請求:半截輸出只是展示材料,伺服器不記得它,沒有續傳 token 可送。低單價的請求讓這兩個習慣都無痛——這也是「先在 flash 檔上把業務跑起來、實測出差距再升 pro」的一個靜默論據。

思考模式與 Effort:真正要緊的兩個旋鈕

跟舊 API 的一個重大差異:思考模式預設開啟,預設檔位 high。回答之前,模型先走一遍思維鏈再作答——難題準確率上去,延遲跟著上去。

effort 參數是三個真實檔位的油門。low 是市區代步——快速回答、最少盤算。high 是高速巡航,預設甜點位。max 是賽道模式:給證明題、架構決策、疑難除錯用滿額推理預算。還有個值得知道的怪癖——請求 mediumxhigh,平台都會映射成 high。映射表直接來自思考模式指南

你請求的模型實際跑的
lowlow
mediumhigh
highhigh
xhighhigh
maxmax

簡單呼叫想關掉思考,傳開關即可——注意 Python 細節:OpenAI SDK 不認識這個欄位,所以要塞進 extra_body

response = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "9.11 和 9.8 哪個大?"}],
    reasoning_effort="high",
    extra_body={"thinking": {"type": "enabled"}},
)

兩個多數教學跳過的深水細節。

其一,思考模式之內,取樣參數——temperaturetop_ppresence_penaltyfrequency_penalty——全部無效。API 會靜默收下(為了相容既有軟體)然後忽略。我曾為此安靜地耗掉一個下午——調 temperature 死活沒變化,最後在文件裡翻到那行字。你遇到一樣的情況:就是這個原因,不是你程式的 bug。

其二,思維鏈從 reasoning_content 欄位回傳,跟 content 並排。後續輪次裡,歷史 reasoning_content 在請求不帶 tools 參數時會被伺服端忽略——所以放心把舊推理從儲存的上下文裡剝掉,一點不虧。

多輪對話:沒有記憶的服務生

chat 端點沒有記憶,一點都沒有。每個請求都是一位全新顧客:伺服端只讀你送來的 messages 陣列,作答,然後把這一桌忘得乾乾淨淨。所謂多輪對話,是你——用戶端——自己留著對話記錄,每輪把整桌內容重新唸給服務生聽。

messages = [{"role": "user", "content": "世界上最高的山是什麼?"}]

response = client.chat.completions.create(
    model="deepseek-v4-flash", messages=messages
)
messages.append(response.choices[0].message)   # 服務生的回答

messages.append({"role": "user", "content": "第二高呢?"})
response = client.chat.completions.create(
    model="deepseek-v4-flash", messages=messages
)
print(response.choices[0].message.content)

第二輪送出去三條:原始問題、存下來的回答、新問題。這個模式——追加回答、追加新輪次、全量重送——就是對話記憶的全部祕密,也是長 agent 工作階段每輪成本線性上漲的原因。(讓這些越長越長的對話記錄保持高效的提示詞策略,見提示詞技巧。)

結構化 JSON 輸出

當輸出要餵給解析器而不是人眼時,自由散文就是 bug。JSON 模式鎖死輸出形狀,靠三條規則:設回應格式、在提示詞裡寫 "json" 這個詞並給範例、設 max_tokens 上限防止長回答把物件截斷在半路。

system_prompt = """
The user will provide some exam text. Please parse the "question"
and "answer" and output them in JSON format.
EXAMPLE INPUT:
Which is the highest mountain in the world? Mount Everest.
EXAMPLE JSON OUTPUT:
{"question": "...", "answer": "..."}
"""

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": "世界上最長的河是什麼?尼羅河。"},
    ],
    response_format={"type": "json_object"},
    max_tokens=512,
)
print(response.choices[0].message.content)

提示詞裡漏了範例,品質會掉;漏了 max_tokens,一個話癆回答可能停在半個花括號上——那是只在生產環境才炸給你看的 json.loads 崩潰。

限流與 user_id 救生索

並發按帳號計數,跟用哪把金鑰發的請求無關。想像一家餐廳:你的帳號有固定桌數,每個在途請求從發出到收完最後一個位元組都佔一張桌。

模型每帳號並發上限
deepseek-v4-pro500
deepseek-v4-flash2,500
deepseek-v4-flash-vision-exp2,500

越過線就是 HTTP 429——退避重試,別硬衝。要更多桌子?擴容申請免費,平台按真實業務量匹配額度。現行數字以限流頁為準。

如果你在一個帳號下服務很多終端使用者,user_id 把大堂隔成包廂。按請求傳它——字母數字連字號底線、最長 512 字元、別塞隱私資訊——平台按身分隔離三件事:內容安全處理、KV 快取(一個使用者快取過的上下文絕不滲進另一個人的)、排程。OpenAI SDK 裡它也走 extra_body

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "你好!"}],
    extra_body={"user_id": "customer-8801"},
)

對提額帳號,每個 user_id 還有各自的並發上限——一個失控租用戶餓不死其他人。

Token 與帳單

計費按 token,心算很友善:1 個英文字元約 0.3 token,1 個漢字約 0.6。一篇 1000 詞的英文文章,模型還沒作答就先吃掉約 1300 輸入 token。精確數字永遠以回應 usage 欄位回傳的為準——要對帳就看它,別信任何估算器;官方文件另附 tokenizer demo 供離線計算。圖像輸入按尺寸走一套公式、每圖有上限。

每個 token 多少錢、峰時離峰怎麼算——那是定價問題,有自己的答案頁,V4 全解帶著現行價表和生效日期。

Chat API 之外

/chat/completions 是正門,不是整棟房子。文件裡圍繞它還有:

  • GET /models——列出你的金鑰能摸到哪些模型,含 owner 與可用性
  • GET /user/balance——錢包查詢,給儀表板和消費告警用
  • Files API——上傳一次、按 ID 引用(免費)
  • Context Caching——自動前綴快取,命中價是未命中的三十分之一
  • FIM completion——填空中段,給程式碼編輯流用
  • Responses API——更新的回應格式,8 月 13 日起 GA
  • Anthropic 格式介面——同一批模型,…/anthropic 路徑

還有一扇完全不用寫程式的門:編程 Agent。Claude Code、GitHub Copilot、OpenCode 都能純設定把 DeepSeek 設為後端模型。Claude Code 接入教學把環境變數配方從頭到尾走了一遍——如果你的目標是「DeepSeek 進我的終端機」,那就是繞過上面一切的捷徑。

2026 年的常見坑

上面講的一切對撞還在流傳的一切,一張表收口:

舊教學說2026 年現實
pip install deepseek-apifrom deepseek_api import DeepSeekClient不存在這個官方套件。pip install openaibase_urlhttps://api.deepseek.com
model="deepseek-chat" / "deepseek-reasoner"2026 年 7 月 24 日退役。用 deepseek-v4-flashdeepseek-v4-pro
OAuth 2.0、實名驗證、企業認證才可用platform.deepseek.com 拿 Bearer 金鑰,僅此而已
JWT 簽章、HMAC 請求簽章都不存在。Authorization: Bearer 請求標頭
思考模式裡調 temperature思考開啟時靜默無效
把 deep-seek.com / deepseekv4pro.com 當官網官方三件套:platform.deepseek.com、api-docs.deepseek.com、api.deepseek.com

比所有條目更老的元規則:先看教學的發布日期,再看它的程式碼區塊。這個 API 七月退役了模型名、八月調了價——在那之前寫的任何東西都是考古材料。

常見問題

DeepSeek API 怎麼串接?三步:在 platform.deepseek.com 的 API Keys 頁建金鑰;裝 OpenAI SDK(pip install openai);用 base_url="https://api.deepseek.com" 加你的金鑰建構用戶端。第一個呼叫就是標準的 chat completion,model="deepseek-v4-flash"

DeepSeek API 用什麼 SDK?沒有專用 SDK。它同時相容 OpenAI 和 Anthropic 兩家 SDK——複用其中任何一個,只改 base URL(https://api.deepseek.comhttps://api.deepseek.com/anthropic)和模型名。

DeepSeek API 的 base URL 是什麼?OpenAI 格式用 https://api.deepseek.com;Anthropic 格式用 https://api.deepseek.com/anthropic。對話請求送 POST /chat/completions

deepseek-chat 還能用嗎?不能。deepseek-chatdeepseek-reasoner 已於 2026 年 7 月 24 日退役。替代品是 deepseek-v4-flashdeepseek-v4-pro,自動指向最新 checkpoint(V4-Flash-0731 和 V4-Pro-0813)。

API 免費嗎?怎麼查餘額?按量付費,自動上下文快取能攤薄重複輸入的成本。即時餘額一個呼叫就有——GET /user/balance——每個回應的 usage 欄位給出逐次呼叫的 token 數供對帳。

限流多少?429 什麼意思?deepseek-v4-pro 並發 500,deepseek-v4-flash 和視覺模型並發 2500,按帳號計。429 表示越過上限:退避重試。更高上限可透過免費擴容申請拿到。

能用 Anthropic 格式的程式調嗎?能——Anthropic SDK 配 base_url="https://api.deepseek.com/anthropic",模型名不變。工具定義和訊息結構都直接沿用。

從這裡出發三步走:拿一把金鑰,原樣跑通 curl 片段直到看到回覆,然後決定這個模型在你技術棧裡的位置——今晚先寫個腳本,還是讓編程 Agent 幹重活(Claude Code 接入教學)。相容介面真正的承諾不是哪個模型的跑分,而是:整合程式永遠是你的,模型變成一行就能換的決定。