Claude API Python 入門:安裝 SDK、第一個請求、流式輸出與多輪對話

用官方 anthropic Python SDK 調 Claude:安裝與 API Key 配置、第一個 messages.create 請求、system 提示詞、多輪對話(API 無狀態)、流式輸出、錯誤處理與重試、讀取 token 用量。附可運行的命令行聊天示例。

NNathaniel bigo··原創首發·AI 輔助撰寫
7 分鐘讀完
資料核對於 2026-10-07 · 依據官方文檔與公開資料整理 其他 帳號
本文根據 Claude API 官方文檔(快速開始、Python SDK、Working with messages、Streaming)整理,核對日期 2026-10-07。示例代碼基於官方示例改寫;模型 ID 會更新,以官方 Models overview 為準。

適用於誰

  • 會一點 Python,想在自己的腳本或後端裏調用 Claude 的開發者;
  • 搜「claude api python」「python sdk example」「tutorial」的人;
  • 從 OpenAI API 遷移過來,想知道 Claude 的寫法有什麼不同的人。

還沒有 API Key 的,先看本站《Claude API Key 怎麼獲取:Claude Console 創建密鑰、充值與用量查看》。

結論先說

  1. 安裝:pip install anthropic,要求 Python 3.10 及以上。
  2. 把 API Key 設成環境變量 ANTHROPIC_API_KEY,SDK 會自動讀取,代碼裏不用寫密鑰。
  3. 核心只有一個調用:client.messages.create(model=..., max_tokens=..., messages=[...]);max_tokens 是必填的。
  4. Messages API 是無狀態的:多輪對話要每次把完整歷史一起發過去。
  5. 回覆在 message.content(一個內容塊列表)裏,用量在 message.usage 裏;長回覆用流式輸出體驗更好。

步驟

1. 準備環境

bash
export ANTHROPIC_API_KEY="你的API Key"     # Windows PowerShell: $env:ANTHROPIC_API_KEY="你的API Key"

mkdir claude-quickstart && cd claude-quickstart
python3 -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install anthropic

官方建議本地開發時可以用 python-dotenv 把密鑰放進 .env 文件,並確保 .env 不進版本控制。

2. 第一個請求

新建 quickstart.py:

python
import anthropic

client = anthropic.Anthropic()  # 自動讀取環境變量 ANTHROPIC_API_KEY

message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1000,
    messages=[
        {"role": "user", "content": "用三句話解釋什麼是向量數據庫"}
    ],
)

for block in message.content:
    if block.type == "text":
        print(block.text)

print(message.usage)        # 例如 Usage(input_tokens=25, output_tokens=180)
print(message.stop_reason)  # end_turn 表示正常結束;max_tokens 表示被長度上限截斷

運行 python quickstart.py。要點:

  • content 是一個內容塊列表,普通回答是 type == "text" 的塊;用到工具、思考等功能時還會出現其他類型的塊,所以按類型取文本更穩妥;
  • stop_reason 是 max_tokens 時說明回答被截斷了,調大 max_tokens 或讓模型寫短一點。

3. 加上系統提示詞(system)

系統提示詞用頂層的 system 參數,不放進 messages:

python
message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    system="你是一名耐心的 Python 老師,回答要配一個最小可運行的例子,用中文回答。",
    messages=[{"role": "user", "content": "列表推導式怎麼用?"}],
)

4. 多輪對話:每次發送完整歷史

官方說明 Messages API 是無狀態的,伺服器不記得上一輪說了什麼,你要自己儲存歷史,每次連同新問題一起發送(user 和 assistant 交替):

python
messages = [
    {"role": "user", "content": "你好,Claude"},
    {"role": "assistant", "content": "你好!有什麼可以幫你?"},
    {"role": "user", "content": "能給我介紹一下大語言模型嗎?"},
]
reply = client.messages.create(model="claude-opus-5-5", max_tokens=1024, messages=messages)

一個可以直接運行的命令行聊天小程式(示例代碼):

python
import anthropic

client = anthropic.Anthropic()
history = []

while True:
    user_input = input("你:").strip()
    if user_input in ("exit", "quit"):
        break
    history.append({"role": "user", "content": user_input})

    reply = client.messages.create(
        model="claude-opus-5-5",
        max_tokens=1024,
        system="你是一個簡潔的中文助手。",
        messages=history,
    )
    text = "".join(b.text for b in reply.content if b.type == "text")
    print("Claude:", text)
    history.append({"role": "assistant", "content": text})

歷史越長,每次請求的輸入 token 越多、費用越高。長對話可以考慮只保留最近若干輪,或者用提示詞緩存降低重複部分的成本(詳見本站《Claude 提示詞緩存(Prompt Caching)入門:緩存時間、價格倍率與命中率》)。

5. 流式輸出

回覆較長時,用流式輸出邊生成邊顯示。SDK 提供了更方便的 messages.stream 幫助方法:

python
with client.messages.stream(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "寫一首關於秋天的七言絕句"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    print()
    final = stream.get_final_message()   # 結束後拿到完整的 message 對象
    print(final.usage)

也可以用 client.messages.create(..., stream=True) 自己遍歷原始事件,內存佔用更小,但不會幫你拼出最終消息。

6. 異步調用

python
import asyncio
from anthropic import AsyncAnthropic

client = AsyncAnthropic()

async def main():
    message = await client.messages.create(
        model="claude-opus-5-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": "你好"}],
    )
    print(message.content)

asyncio.run(main())

7. 錯誤處理、重試與超時

python
import anthropic

try:
    message = client.messages.create(
        model="claude-opus-5-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": "你好"}],
    )
except anthropic.APIConnectionError as e:
    print("連不上伺服器", e.__cause__)
except anthropic.RateLimitError:
    print("觸發速率限制(429),稍後重試")
except anthropic.APIStatusError as e:
    print("其他錯誤", e.status_code)
狀態碼異常類型
400BadRequestError
401AuthenticationError(密鑰不對)
403PermissionDeniedError
404NotFoundError(請求的資源不存在)
429RateLimitError
≥500InternalServerError

官方 SDK 的預設行為:連接錯誤、408、409、429 和 5xx 預設自動重試 2 次(指數退避),可以用 Anthropic(max_retries=0) 修改;請求預設超時 10 分鐘,可以用 Anthropic(timeout=20.0) 修改。每個響應都有 _request_id,反饋問題時附上它。

從 OpenAI 遷移要注意的幾點

  • 系統提示詞用頂層 system 參數,而不是 role: "system" 的第一條消息(官方說明 system 消息不能作為 messages 的第一條);
  • max_tokens 必填;
  • 回覆是內容塊列表,不是單個字符串;
  • 官方說明 Claude 4.6 及以後的模型不支持「預填充(prefill)回覆開頭」,用了會返回 400 錯誤,需要固定輸出格式時改用結構化輸出或在系統提示詞裏說明。

常見問題

Q:報 401 / AuthenticationError?

API Key 沒設定、寫錯或已被刪除。確認環境變量 ANTHROPIC_API_KEY 在運行腳本的終端裏生效(新開的終端要重新設定)。

Q:報「credit balance is too low」之類的錯誤?

Console 的預付費額度用完了,到 Console 的 Settings → Billing 補充。

Q:模型名該寫什麼?

用官方 Models overview 頁列出的 API ID。各模型的定位和區別詳見本站《Claude 模型有哪些、有什麼區別:Opus、Sonnet、Haiku 怎麼選(2026)》。

Q:想讓 Claude 調用我自己的函數怎麼辦?

用工具調用(Tool Use),詳見本站《Claude Tool Use(工具調用 / Function Calling)入門:定義工具與返回 tool_result》。想做能自己讀文件、跑命令的智能體,可以看 Claude Agent SDK。

Q:Claude API 在中國大陸能用嗎?

Claude API 只在 Anthropic 支持的國家和地區提供,中國大陸目前不在列表中(https://www.anthropic.com/supported-countries ),請遵守所在地法律和服務條款。

參考資料

  • Get started with Claude(官方):https://platform.claude.com/docs/en/get-started
  • Python SDK(官方):https://platform.claude.com/docs/en/cli-sdks-libraries/sdks/python
  • Working with the Messages API(官方):https://platform.claude.com/docs/en/build-with-claude/working-with-messages
  • Streaming messages(官方):https://platform.claude.com/docs/en/build-with-claude/streaming
  • Models overview(官方):https://platform.claude.com/docs/en/about-claude/models/overview
需要開通或續費?Claude Pro 充值 →

Nathaniel 的更多內容

  1. 01

    AI 學習路線:零基礎從哪開始,6 個階段、每階段該讀哪幾篇教學(2026)

    AI 學習路線怎麼走?給零基礎的人一條循序漸進的路徑:先選一個助手用順,再學提問,再用進日常工作,按需學做圖做影片,守住私隱與版權,最後進階自動化和編程。每個階段都配了本站對應的教學。

    其他 AI 工具0
  2. 02

    AI 瀏覽器有哪些:Perplexity Comet、Opera Neon、Dia、Brave Leo 與 Edge Copilot 的官方說法對照

    AI 瀏覽器有哪些?按官方頁面整理 Perplexity Comet、Opera Neon、Dia、Brave Leo 和 Edge 裏的 Copilot:官方自述的定位、支持的平台、免費還是訂閱,以及 Gemini、Claude 的 Chrome 方案和已停用的 ChatGPT Atlas。

    其他 AI 工具0
  3. 03

    即夢國際版 Dreamina 是什麼:官方站入口、能生成什麼、免費積分和模型(2026)

    即夢國際版 Dreamina 是什麼?官方站是 dreamina.capcut.com,是一個圖片、影片和數字人一體的 AI 創作平台。按官方首頁和 FAQ 講:能生成什麼、免費用戶每天 120 積分、列出的 Seedance 與 Seedream 模型,以及和國內即夢怎麼區分。

    其他 AI 工具0
  4. 04

    Kimi K3 Coding Plan 是什麼、怎麼用:Kimi Code 會員、模型 ID、套餐價格和額度規則

    Kimi K3 Coding Plan 是什麼?按 Kimi 官方文檔核對:官方現在叫 Kimi Code,是 Kimi 會員權益裏的編程服務,Plus 及以上才有;講 K3 等模型 ID、國內新套餐價格、三種客戶端、第三方工具接入和額度規則。

    Kimi0
  5. 05

    DeepSeek V4 Pro 和 Flash 的區別與 API 價格:官方價格頁逐項對照(高峰與空閒時段)

    DeepSeek V4 Pro 和 Flash 有什麼區別、API 怎麼收費?按 DeepSeek 官方價格頁(2026-10-19 查詢)列出兩個模型的版本、上下文、圖像理解、並發和每百萬 token 價格,說明高峰與空閒時段的計費差別和舊模型名怎麼處理。

    其他 AI 工具0
  6. 06

    GPT-6 Pro(Astra)怎麼用、哪些套餐有:怎麼選到 Pro 檔、用量限制和 Pro 三檔價格

    GPT-6 Pro(Astra)怎麼用、哪些套餐有?按 OpenAI 幫助中心核對:聊天裏 Pro 檔給 Pro 100、Pro 200、Business 和 Enterprise;Plus 在 Work 和 Codex 裏含 Astra。講怎麼選到、用量上限和官方 Pro 價格。

    ChatGPT0

同產品的其他教學

  1. 01

    Claude Pro 和 Max 的區別:用量、價格、Fable 模型和每月 API 額度怎麼選

    Claude Pro 和 Max 有什麼區別?按官方定價頁和幫助中心核對:Max 有 5x、20x 兩檔用量,Pro 與 Max 在價格、Fable 模型、每月 API 額度和計費週期上的差別,以及什麼情況下 Pro 夠用、什麼情況下該升 Max。

    Claude0
  2. 02

    Claude 登入不了、用不了、打不開怎麼辦:按官方幫助中心逐條排查

    Claude 無法登入、無法使用、無法打開怎麼辦?按官方幫助中心的順序排查:收不到登入電郵、登入報錯、Google 登入出問題、系統繁忙、額度用完、官方故障,以及所在地區是否在官方支持名單裏。

    Claude0
  3. 03

    Claude 怎麼註冊:官方註冊流程、手機驗證要求,以及提示無法註冊時官方怎麼說

    Claude 怎麼註冊?打開 claude.ai,用 Google 或電郵登入連結創建帳號,再用支持地區的手機號收短訊驗證碼。講清官方的註冊條件、手機驗證的限制,以及收不到驗證碼、號碼被用過多次時官方的處理辦法。

    Claude0
  4. 04

    Claude 怎麼用:新手入門,從打開聊天到寫出第一個好問題

    Claude 怎麼用?按官方幫助中心整理的新手路徑:在網頁、桌面版或手機 App 打開聊天,像對同事一樣寫需求,用輸入框的「+」和「/」找功能,點模型名換模型,免費版有每 5 小時重置的上限。

    Claude0
  5. 05

    Claude 怎麼設定成中文:介面語言、回答語言和語音語言分別怎麼設

    Claude 怎麼設定中文?官方幫助中心列出的 11 種介面語言裏目前沒有中文,但 Claude 會用你提問的語言回答,直接用中文問即可;想固定用中文,可在設定的 Instructions for Claude 裏寫一句。語音模式的語言要單獨選。

    Claude0
  6. 06

    MCP Inspector 怎麼用:安裝、啟動命令、調試 MCP 伺服器與 v2 的變化

    MCP Inspector 是什麼、怎麼安裝和使用?按 MCP 官方文檔講清網頁、命令行、終端介面三種模式的啟動命令,怎麼連本地和遠程伺服器、怎麼傳環境變量,密鑰存在哪,以及 v2 相比舊教學在端口、令牌變量名和 Node 版本上的變化。

    Claude其他 AI 工具0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~