上周在折腾一个文档摘要小工具,想接 Claude Opus 4.6 的 API。结果官网注册到一半,弹出来一个要上传身份证的页面,给我整不会了。搜了一圈发现最近 Anthropic 在搞 KYC 合规验证,不少人卡在这一步。折腾了两天,把能走通的路都试了一遍,写下来给同样被卡住的兄弟们省点时间。
直接说结论:2026 年要调用 Claude API,最省事的方式是通过 API 聚合平台(比如 ofox.ai),改一行base_url就能用,不用单独处理 Anthropic 的注册和鉴权流程。如果你非要走官方直连,下面也有完整步骤,但要做好心理准备——流程比以前麻烦了不少。
先说结论
| 方案 | 上手难度 | 延迟 | 稳定性 | 适合谁 |
|---|---|---|---|---|
| 方案一:Anthropic 官方直连 | ⭐⭐⭐⭐ | ~500ms | 偶尔波动 | 有信用卡、能过 KYC 的 |
| 方案二:云厂商托管(AWS Bedrock) | ⭐⭐⭐⭐⭐ | ~400ms | 稳 | 已有 AWS 账号的企业用户 |
| 方案三:API 聚合平台 | ⭐ | ~300ms | 多节点冗余,稳 | 想快速跑起来的个人开发者 |
环境准备
不管走哪条路,本地环境都一样:
# Python 3.9+pipinstallopenai anthropic为什么装了openai的包?因为方案二和方案三都兼容 OpenAI 的 SDK 协议,后面会用到。
方案一:Anthropic 官方直连
最"正统"的路子。
1. 注册 Anthropic Console 账号
去 console.anthropic.com 注册。2026 年的新变化是部分地区会触发身份验证(就是我开头说的那个上传身份证的流程),碰到了就按提示传,审核大概 1-3 个工作日。
2. 创建 API Key
进 Dashboard → API Keys → Create Key,复制保存好。
3. 写代码调用
importanthropic client=anthropic.Anthropic(api_key="sk-ant-xxxxx"# 换成你自己的 Key)message=client.messages.create(model="claude-sonnet-4-20250514",max_tokens=1024,messages=[{"role":"user","content":"用一句话解释什么是 RAG"}])print(message.content[0].text)能跑通,响应大概 500ms。但注册那一关就劝退了不少人,信用卡绑定也只支持 Visa/Mastercard,没有支付宝选项。
踩坑点:model参数的命名规则改过好几次了。之前写claude-3-sonnet的那些教程全过时了,2026 年最新的模型 ID 要去官方文档确认,别照着旧博客抄。
方案二:AWS Bedrock 托管
已经有 AWS 账号的话,这条路挺顺的。
importboto3importjson bedrock=boto3.client(service_name='bedrock-runtime',region_name='us-east-1')body=json.dumps({"anthropic_version":"bedrock-2023-05-31","max_tokens":1024,"messages":[{"role":"user","content":"用一句话解释什么是 RAG"}]})response=bedrock.invoke_model(modelId="anthropic.claude-sonnet-4-20250514-v1:0",body=body)result=json.loads(response['body'].read())print(result['content'][0]['text'])稳定性确实好,毕竟 AWS 的 SLA 在那摆着。但 Bedrock 的计费逻辑比较绕,而且要先在 AWS Console 里申请模型访问权限,审批周期不定。
踩坑点:modelId这个字段,不同区域可用的模型版本不一样。我第一次写了个us-west-2的 region,发现那个区还没上最新版 Claude,报了ValidationException,排查了半小时才发现是区域问题。
方案三:API 聚合平台(我现在用的方案)
说实话这是折腾完前两种方案之后才试的,早知道直接从这开始了。
原理很简单,聚合平台把各家模型的 API 统一封装成 OpenAI 兼容协议,换个base_url和 Key 就行。我用的是 ofox.ai,一个 API Key 可以调 Claude Opus 4.6、Sonnet 4.6、GPT-5、Gemini 3、DeepSeek V3 等 50 多个模型,支持支付宝/微信付款,按量计费。
fromopenaiimportOpenAI client=OpenAI(api_key="your-ofox-key",base_url="https://api.ofox.ai/v1")# 调 Clauderesponse=client.chat.completions.create(model="claude-sonnet-4-20250514",max_tokens=1024,messages=[{"role":"user","content":"用一句话解释什么是 RAG"}])print(response.choices[0].message.content)想换模型,改一行:
# 换成 GPT-5response=client.chat.completions.create(model="gpt-5",max_tokens=1024,messages=[{"role":"user","content":"用一句话解释什么是 RAG"}])# 换成 DeepSeek V3response=client.chat.completions.create(model="deepseek-chat",max_tokens=1024,messages=[{"role":"user","content":"用一句话解释什么是 RAG"}])延迟大概 300ms,比官方直连还快一点,应该是多节点就近路由的原因。Streaming 和 Function Calling 都试过,没问题。
踩坑点:模型名称要按平台文档写,有些聚合平台的模型 ID 和官方的不完全一致,第一次调之前先看下文档里的模型列表。
调用链路一图看懂
方案三的好处就是聚合网关帮你处理了各家的鉴权差异,代码始终是 OpenAI SDK 的写法,切模型只改model参数。
Streaming 流式输出示例
做聊天应用的话,流式输出是刚需。贴个完整示例:
fromopenaiimportOpenAI client=OpenAI(api_key="your-ofox-key",base_url="https://api.ofox.ai/v1")stream=client.chat.completions.create(model="claude-sonnet-4-20250514",max_tokens=2048,stream=True,messages=[{"role":"system","content":"你是一个技术文档助手"},{"role":"user","content":"解释 Python 的 GIL 锁,200字以内"}])forchunkinstream:ifchunk.choices[0].delta.content:print(chunk.choices[0].delta.content,end="",flush=True)print()# 换行跑起来一个字一个字往外蹦,体验和 ChatGPT 网页版一样。
在 Cursor 里配置 Claude API
最近 Cursor 用的人很多,顺便说下怎么接自己的 Claude API:
- 打开 Cursor → Settings → Models
- 找到 OpenAI API Key 配置项
- API Key 填你的 Key
- Base URL 填
https://api.ofox.ai/v1 - 模型选
claude-sonnet-4-20250514
保存后在 Chat 和 Composer 里就能用 Claude 了。比用 Cursor 自带额度划算,也不受次数限制。
踩坑记录
content字段格式问题
Anthropic 原生 API 的content支持数组格式(用于多模态),但有些聚合平台早期版本只支持字符串。如果要传图片(Vision),先确认平台支持image_url类型的 content block。
max_tokens必填
Claude 的 API 和 OpenAI 不一样,max_tokens是必填参数,不传会报错。从 GPT 转过来的人很容易忽略这个。
System Prompt 的位置
用 Anthropic 原生 SDK 时,system prompt 是单独的system参数,不在messages数组里。走 OpenAI 兼容协议时,放在messages里就行,聚合平台会自动转换。
429 限频
官方直连请求太快会触发 429。聚合平台一般有多供应商冗余(同时走 Azure 和 Bedrock),被限频的概率低很多。
小结
三种方案各有适用场景:
- 就想快速把项目跑起来 → 方案三,5 分钟搞定
- 公司有合规要求,必须走官方 → 方案一或方案二
- 已经在 AWS 生态里了 → 方案二最顺
我自己日常开发全走方案三,主要是切模型太方便——写 prompt 的时候经常要对比 Claude 和 GPT-5 的输出效果,一个 Key 来回切,不用维护两套鉴权逻辑。
有问题评论区聊,踩到新坑我会更新。