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

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

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

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

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

先說(shuō)結(jié)論

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

我個(gè)人日常開(kāi)發(fā)用方案二最多,因?yàn)楦膫€(gè) model 參數(shù)就能在 Claude 和 GPT-5.5 之間切換,不用維護(hù)兩套代碼。

環(huán)境準(zhǔn)備

Python 3.9+,裝兩個(gè)包就行:

pip install anthropic openai

API Key 的獲取——去 Anthropic Console 注冊(cè),綁卡之后在 Settings → API Keys 里生成。沒(méi)什么好說(shuō)的,但有個(gè)細(xì)節(jié):Anthropic 的 Key 格式是 sk-ant-api03- 開(kāi)頭的,別跟 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 寫(xiě)一個(gè)快速排序,要有注釋"}
 ]
)

print(message.content[0].text)

跑起來(lái)沒(méi)什么懸念。但我第一次調(diào)的時(shí)候遇到了一個(gè)報(bào)錯(cuò):

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

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

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

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 號(hào)晚上測(cè)了幾次,首 token 到達(dá)時(shí)間大概在 800ms-1.2s 之間,波動(dòng)挺大的。

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

這個(gè)方案是我用得最多的。原因很簡(jiǎn)單——我手上同時(shí)有用 Claude 和 GPT-5.5 的項(xiàng)目,用 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": "你是一個(gè)資深 Python 開(kāi)發(fā)者"},
 {"role": "user", "content": "幫我寫(xiě)一個(gè) Redis 緩存裝飾器"}
 ]
)

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

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

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

Streaming 版本:

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

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

方案三:HTTP 直接請(qǐng)求

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

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ù)庫(kù)?簡(jiǎn)單解釋"}
 ]
}

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

這里有個(gè)坑:anthropic-version 這個(gè) header 是必填的,不傳會(huì)報(bào) 400。版本號(hào)不是隨便寫(xiě),要用 Anthropic 文檔里列出的有效版本。我第一次隨手寫(xiě)了個(gè) 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 不填會(huì)直接報(bào)錯(cuò),不會(huì)給你默認(rèn)值。我從 GPT 遷移過(guò)來(lái)的代碼全部掛了一遍,挨個(gè)加上這個(gè)參數(shù),挺煩人的。

2. 圖片傳參格式

如果要用 Claude 的視覺(jué)能力,圖片要 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": "這張圖里畫(huà)的是什么?"}
 ]
 }]
)

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

3. 429 限流

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

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)實(shí)),要么加個(gè) 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 長(zhǎng)度問(wèn)題

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

小結(jié)

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

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

相關(guān)文章

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

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

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

    Python編程密碼學(xué)文件加密與解密代碼解析

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

    Keras目標(biāo)檢測(cè)mtcnn?facenet搭建人臉識(shí)別平臺(tái)

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

    在Python中使用全局日志時(shí)需要注意的問(wèn)題

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

    粗暴解決CUDA out of memory的問(wèn)題

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

华阴市| 同江市| 南宫市| 金湖县| 北安市| 平塘县| 勐海县| 泾阳县| 和龙市| 蒲江县| 容城县| 遵化市| 茂名市| 五指山市| 元谋县| 汝南县| 子洲县| 汝南县| 金川县| 灌云县| 保靖县| 潞西市| 宁城县| 南投市| 鹤岗市| 清徐县| 贞丰县| 获嘉县| 武鸣县| 三台县| 朝阳县| 西和县| 日土县| 原阳县| 彭泽县| 玛沁县| 扎鲁特旗| 开江县| 龙里县| 满洲里市| 元江|