觀點 · 資訊分享

Claude 的 Python SDK 升上 1.0:temperature 參數拿掉、最低要 Python 3.10,升級前先看這幾點

Anthropic 的官方 Python SDK 推出 1.0 版,底層改用 httpx2、移除舊的 Text Completions API 與 temperature 等取樣參數,最低支援版本升到 Python 3.10。直接升級可能會讓程式報錯。

發布
2026-08-21
篇幅
約 4 分鐘 · 1,797 字
結構
7 節 + 3 題常見問題
標籤
#Anthropic#Claude API#Python SDK#httpx2
Claude 的 Python SDK 升上 1.0:temperature 參數拿掉、最低要 Python 3.10,升級前先看這幾點

一句話看懂:Claude 官方的 Python SDK 推出 1.0 正式版,一次清掉很多舊寫法;沒鎖版本的專案,一更新就可能報錯。

Claude Python SDK 推出 1.0資訊圖卡:從 0.x 升上正式版,拿掉一堆舊東西,直接升級可能讓程式報錯

先用白話講:SDK 升大版本是什麼意思?

SDK 是官方幫你包好的「遙控器」,讓你用幾行 Python 就能呼叫 Claude,不用自己處理連線、重試、錯誤格式。

版本號從 0.x 跳到 1.0,就像遙控器換新款:按鈕更整齊,但有些舊按鈕被拆掉了。習慣按舊按鈕的程式,換上新遙控器後就會「按不下去」,也就是報錯。

發生什麼事

Anthropic 在 Claude API 更新日誌(8 月 20 日)宣布 Python SDK v1.0,GitHub 的發布時間是 8 月 20 日 19:58(UTC,台灣時間 8 月 21 日凌晨)。主要變化:

  • 最低支援 Python 3.10(原本是 3.9)
  • 底層換成 httpx2:原本用的 httpx 遷移指南形容為不再積極維護,httpx2 是 Pydantic 團隊維護、API 相容的分支
  • 移除舊的 Text Completions API:client.completions.create() 不見了,一律用 Messages API
  • 移除取樣參數:Messages 相關方法不再接受 temperature、top_p、top_k,傳了會丟出 TypeError
  • 非同步原始回應:.with_raw_response 的結果要 await response.parse()
  • Bedrock 要指定區域:AnthropicBedrock 沒設區域會報錯,不再自動用 us-east-1

哪些程式會壞?

你的寫法 1.0 之後
只傳模型、訊息、timeout 大多不用改
帶 temperature=0.2 報錯,要拿掉或改走 extra_body
自己傳 httpx.Client 進去 建構時就報錯,改用 httpx2
用 OpenTelemetry、Sentry 追蹤請求 不報錯但默默抓不到,最容易漏

給開發者的技術細節

升級指令與舊模型的取樣參數寫法:

# pip install --upgrade "anthropic>=1,<2"

# 如果綁定的是仍支援取樣參數的舊模型
client.messages.create(
    model="<舊模型名稱>",
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好"}],
    extra_body={"temperature": 0.2},
)
  • 遷移指南建議跑一次 pyright 或 mypy,型別檢查器會幾乎把所有要改的地方標出來
  • 用 Claude Code 的話,指南提供 /claude-api upgrade python 指令讓它幫你改,再自己看 diff
  • 追蹤與模擬工具(respx、pytest-httpx、vcrpy 等)要在程式最前面呼叫 httpx2.alias_httpx()
  • 注意:目前 GitHub 上的遷移指南開頭已經在講後續的 v2,看文件時確認自己讀的是「0.x 升 v1」那一段

我的看法

這次最危險的不是會報錯的地方,而是不會報錯的地方。程式拋 TypeError 你一跑就知道;但追蹤工具默默抓不到 API 請求,可能要等到出事要查 log 才發現一片空白。

接案時我會建議:requirements.txt 或 pyproject.toml 一律把 SDK 鎖在明確範圍(例如先寫 anthropic<1 擋住大版本),排一個時間專門升級,升完確認監控面板還看得到請求,再上線。另外,temperature 被拿掉也提醒我們:AI 模型的參數會隨世代改變,程式裡寫死的「調參習慣」要定期檢查。

名詞小辭典

  • SDK:官方提供的程式套件,把呼叫 API 的細節包好,讓開發者少寫很多程式碼。
  • temperature:控制 AI 回答「隨機程度」的參數,數字越高越有變化。
  • httpx:Python 常用的 HTTP 連線套件,SDK 靠它把請求送到伺服器。
  • 型別檢查器:在執行前掃描程式碼、找出參數或型別寫錯的工具,例如 pyright、mypy。

資料來源

常見問題

為什麼連 temperature 都拿掉了?
遷移指南說明,目前的模型已經不使用這些取樣參數,所以從 SDK 方法的參數裡移除。如果你綁定的是還支援它們的舊模型,可以改用 extra_body 把參數原樣送出。
我只是用 client.messages.create 簡單呼叫,需要改嗎?
如果只傳一般值(模型、訊息、timeout 這類),而且沒有帶 temperature、top_p、top_k,大多不用改。要改的是自己傳 httpx 物件、用非同步原始回應、或用 Bedrock 沒設區域的程式。
升級後追蹤工具抓不到 API 請求怎麼辦?
OpenTelemetry、Sentry、respx 這類工具是修補 httpx 套件,而 SDK 已改用 httpx2,所以會默默抓不到。官方建議在程式最一開始呼叫 httpx2.alias_httpx(),讓 import httpx 指向 httpx2。
LINE