最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python調(diào)用Claude API的三種方案實測

 更新時間:2026年04月29日 08:26:26   作者:鍵盤飛飛  
文章主要介紹了如何調(diào)用Anthropic公司的ClaudeSonnet4.6模型的API,提供了三種方法,包括Anthropic官方Python SDK、OpenAI兼容接口以及直接通過HTTP請求,詳細解釋了每種方法的適用場景、代碼實現(xiàn)及注意事項,并總結(jié)了調(diào)用過程中遇到的問題和解決方案

上個月幫朋友的創(chuàng)業(yè)團隊搭一個客服摘要系統(tǒng),指定要用 Claude Sonnet 4.6 做底層模型。我尋思這不簡單嘛,結(jié)果從注冊到真正跑通第一個請求,前前后后折騰了大半天。主要是 Anthropic 官方的 SDK 和 OpenAI 兼容接口混在一起,文檔又散落在好幾個地方,踩了不少坑。這篇把我實際跑通的 3 種調(diào)用方式全部整理出來,代碼直接能復(fù)制跑。

調(diào)用 Claude API 有三種主流方式:Anthropic 官方 Python SDK、OpenAI 兼容接口、以及通過 HTTP 直接請求。SDK 最省心,OpenAI 兼容接口方便從 GPT 遷移,HTTP 方式最靈活。下面逐個講。

先說結(jié)論

方案上手難度適用場景是否支持 Streaming
Anthropic 官方 SDK最簡單純用 Claude 的項目?
OpenAI 兼容接口簡單從 GPT 遷移、多模型切換?
HTTP 直接請求稍麻煩不想裝 SDK、Serverless 場景?

我個人日常開發(fā)用方案二最多,因為改個 model 參數(shù)就能在 Claude 和 GPT-5.5 之間切換,不用維護兩套代碼。

環(huán)境準備

Python 3.9+,裝兩個包就行:

pip install anthropic openai

API Key 的獲取——去 Anthropic Console 注冊,綁卡之后在 Settings → API Keys 里生成。沒什么好說的,但有個細節(jié):Anthropic 的 Key 格式是 sk-ant-api03- 開頭的,別跟 OpenAI 的搞混了。

方案一:Anthropic 官方 SDK

最正統(tǒng)的調(diào)用方式,代碼很短:

import anthropic

client = anthropic.Anthropic(api_key="sk-ant-api03-xxxxx")

message = client.messages.create(
 model="claude-sonnet-4-6-20260414",
 max_tokens=1024,
 messages=[
 {"role": "user", "content": "用 Python 寫一個快速排序,要有注釋"}
 ]
)

print(message.content[0].text)

跑起來沒什么懸念。但我第一次調(diào)的時候遇到了一個報錯:

anthropic.AuthenticationError: Error code: 401 - {'type': 'error', 'error': {'type': 'authentication_error', 'message': 'invalid x-api-key'}}

查了半天,發(fā)現(xiàn)是我把 Key 粘貼的時候多了一個空格。這種低級錯誤排查起來最浪費時間。

Streaming 版本也貼一下,做聊天界面的時候基本都要用:

with client.messages.stream(
 model="claude-sonnet-4-6-20260414",
 max_tokens=1024,
 messages=[{"role": "user", "content": "解釋一下 RLHF 是什么"}]
) as stream:
 for text in stream.text_stream:
 print(text, end="", flush=True)

響應(yīng)延遲方面,我 4 月 22 號晚上測了幾次,首 token 到達時間大概在 800ms-1.2s 之間,波動挺大的。

方案二:OpenAI 兼容接口(推薦)

這個方案是我用得最多的。原因很簡單——我手上同時有用 Claude 和 GPT-5.5 的項目,用 OpenAI SDK 統(tǒng)一調(diào)用,切模型只改一行代碼。

from openai import OpenAI

client = OpenAI(
 api_key="sk-ant-api03-xxxxx",
 base_url="https://api.ofox.ai/v1"
)

response = client.chat.completions.create(
 model="claude-sonnet-4-6-20260414",
 max_tokens=1024,
 messages=[
 {"role": "system", "content": "你是一個資深 Python 開發(fā)者"},
 {"role": "user", "content": "幫我寫一個 Redis 緩存裝飾器"}
 ]
)

print(response.choices[0].message.content)

注意這里 base_url 指向的是聚合 API 網(wǎng)關(guān)。聚合平臺可以選 OpenRouter、Together AI、ofox.ai 這幾家,OpenRouter 收 5.5% 手續(xù)費,ofox.ai 是 0% 加價對齊官方價格,看自己需求選。

這個方案有個好處:你之前寫的所有 OpenAI 調(diào)用代碼,把 model 換成 Claude 的模型名就能跑,system 消息也正常支持(Anthropic 原生 SDK 里 system 消息要單獨傳參數(shù),不在 messages 列表里)。

Streaming 版本:

stream = client.chat.completions.create(
 model="claude-sonnet-4-6-20260414",
 max_tokens=1024,
 messages=[{"role": "user", "content": "寫一篇 500 字的技術(shù)博客大綱"}],
 stream=True
)

for chunk in stream:
 if chunk.choices[0].delta.content:
 print(chunk.choices[0].delta.content, end="", flush=True)

方案三:HTTP 直接請求

有些場景不想裝 SDK——比如在 Cloudflare Workers 或者一些極簡的 Lambda 函數(shù)里。直接用 requests 發(fā)請求:

import requests
import json

url = "https://api.anthropic.com/v1/messages"
headers = {
 "x-api-key": "sk-ant-api03-xxxxx",
 "anthropic-version": "2023-06-01",
 "content-type": "application/json"
}

payload = {
 "model": "claude-sonnet-4-6-20260414",
 "max_tokens": 1024,
 "messages": [
 {"role": "user", "content": "什么是向量數(shù)據(jù)庫?簡單解釋"}
 ]
}

response = requests.post(url, headers=headers, json=payload, timeout=30)
result = response.json()
print(result["content"][0]["text"])

這里有個坑:anthropic-version 這個 header 是必填的,不傳會報 400。版本號不是隨便寫,要用 Anthropic 文檔里列出的有效版本。我第一次隨手寫了個 2026-01-01,直接返回:

{"type":"error","error":{"type":"invalid_request_error","message":"Invalid API version: 2026-01-01. Valid versions: 2023-06-01, 2024-10-22, ..."}}

反正記住用 2023-06-01 就行,雖然看著舊但一直能用。

整體調(diào)用鏈路

graph LR
 A[你的 Python 代碼] --> B{選擇調(diào)用方式}
 B -->|方案一| C[Anthropic SDK]
 B -->|方案二| D[OpenAI SDK + 聚合網(wǎng)關(guān)]
 B -->|方案三| E[HTTP requests]
 C --> F[Anthropic API]
 D --> G[聚合網(wǎng)關(guān) API]
 G --> F
 E --> F
 F --> H[Claude Sonnet 4.6 / Opus 4.7]

踩坑記錄

1. max_tokens 是必填參數(shù)

跟 OpenAI 不一樣,Claude API 的 max_tokens 不填會直接報錯,不會給你默認值。我從 GPT 遷移過來的代碼全部掛了一遍,挨個加上這個參數(shù),挺煩人的。

2. 圖片傳參格式

如果要用 Claude 的視覺能力,圖片要 base64 編碼后放在 messages 里:

message = client.messages.create(
 model="claude-sonnet-4-6-20260414",
 max_tokens=1024,
 messages=[{
 "role": "user",
 "content": [
 {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": base64_string}},
 {"type": "text", "text": "這張圖里畫的是什么?"}
 ]
 }]
)

注意 content 從字符串變成了列表,第一次寫容易忘。

3. 429 限流

高并發(fā)調(diào)的時候經(jīng)常遇到 429。Anthropic 的限流策略是按 Tier 分級的,剛注冊的賬號 Tier 1 只有每分鐘 50 次請求。我跑批量摘要任務(wù)的時候直接撞上了:

anthropic.RateLimitError: Error code: 429 - {'type': 'error', 'error': {'type': 'rate_limit_error', 'message': 'Number of request tokens has exceeded your per-minute rate limit'}}

解決辦法要么升 Tier(充值越多 Tier 越高,很現(xiàn)實),要么加個 retry 邏輯,我用的 tenacity:

from tenacity import retry, wait_exponential, stop_after_attempt

@retry(wait=wait_exponential(min=1, max=60), stop=stop_after_attempt(5))
def call_claude(prompt):
 return client.messages.create(
 model="claude-sonnet-4-6-20260414",
 max_tokens=1024,
 messages=[{"role": "user", "content": prompt}]
 )

4. system prompt 長度問題

Anthropic 文檔說 system prompt 支持很長的內(nèi)容,但我實測超過 4000 token 之后響應(yīng)質(zhì)量會有點飄,不知道是不是個例。目前我的做法是 system prompt 控制在 2000 token 以內(nèi),復(fù)雜的上下文塞到 user message 里。不確定這是不是最佳實踐,有經(jīng)驗的老哥可以評論區(qū)說說。

小結(jié)

三種方案各有各的用處。純 Claude 項目用官方 SDK 最省心;多模型切換或者從 GPT 遷移過來,OpenAI 兼容接口改動最??;極簡部署環(huán)境就直接 HTTP。我的建議是先用方案二跑通,后面有特殊需求再切方案一或三。

以上就是使用Python調(diào)用Claude API的三種方案實測的詳細內(nèi)容,更多關(guān)于Python調(diào)用Claude API的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于Python實現(xiàn)繪制屬于你的世界地圖

    基于Python實現(xiàn)繪制屬于你的世界地圖

    Python之所以這么流行,是因為它不僅能夠應(yīng)用于科技領(lǐng)域,還能用來做許多其他學科的研究工具,繪制地圖便是其功能之一。本文我們將用matplot工具包之一的  mpl_toolkits  來繪制世界地圖,需要的可以參考一下
    2022-11-11
  • Python編程密碼學文件加密與解密代碼解析

    Python編程密碼學文件加密與解密代碼解析

    這篇文章主要為大家介紹了Python編程密碼學文件加密與解密,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Keras目標檢測mtcnn?facenet搭建人臉識別平臺

    Keras目標檢測mtcnn?facenet搭建人臉識別平臺

    這篇文章主要為大家介紹了Keras目標檢測mtcnn?facenet搭建人臉識別平臺,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 在Python中使用全局日志時需要注意的問題

    在Python中使用全局日志時需要注意的問題

    這篇文章主要介紹了在Python中使用全局日志時需要注意的問題, 作者由uliweb使用時遇到的問題分析全局日志出現(xiàn)錯誤時的解決方法,需要的朋友可以參考下
    2015-05-05
  • 粗暴解決CUDA out of memory的問題

    粗暴解決CUDA out of memory的問題

    這篇文章主要介紹了粗暴解決CUDA out of memory的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • django inspectdb 操作已有數(shù)據(jù)庫數(shù)據(jù)的使用步驟

    django inspectdb 操作已有數(shù)據(jù)庫數(shù)據(jù)的使用步驟

    這篇文章主要介紹了django inspectdb 操作已有數(shù)據(jù)庫數(shù)據(jù)的使用步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • python實現(xiàn)讀取大文件并逐行寫入另外一個文件

    python實現(xiàn)讀取大文件并逐行寫入另外一個文件

    下面小編就為大家分享一篇python實現(xiàn)讀取大文件并逐行寫入另外一個文件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python繪制餅圖和直方圖的方法

    python繪制餅圖和直方圖的方法

    這篇文章主要為大家詳細介紹了python繪制餅圖和直方圖的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Python 用__new__方法實現(xiàn)單例的操作

    Python 用__new__方法實現(xiàn)單例的操作

    這篇文章主要介紹了Python 用__new__方法實現(xiàn)單例的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 使用 Python 列出串口的實現(xiàn)方法

    使用 Python 列出串口的實現(xiàn)方法

    有時在編程時,我們需要獲取有關(guān)系統(tǒng)中可用通信端口的信息, 我們將討論如何使用 Python 來做到這一點,將討論使用串口或 com 端口的通信, 我們將深入探索 Python 包,以幫助我們獲得系統(tǒng)的可用通信端口,感興趣的朋友一起看看吧
    2023-08-08

最新評論

定西市| 运城市| 思南县| 嘉峪关市| 济源市| 杭州市| 盘山县| 梁河县| 集安市| 奎屯市| 巧家县| 屏南县| 旬邑县| 化德县| 芦溪县| 肃北| 长兴县| 芦山县| 江源县| 连云港市| 洪湖市| 济源市| 资源县| 揭东县| 陆川县| 施秉县| 金平| 广元市| 湖北省| 克什克腾旗| 石台县| 吉安县| 兴和县| 绥江县| 齐齐哈尔市| 招远市| 靖宇县| 安化县| 夏河县| 门头沟区| 白玉县|