上周在折腾一个文档摘要小工具,想接 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+
pip install openai anthropic
为什么装了 openai 的包?因为方案二和方案三都兼容 OpenAI 的 SDK 协议,后面会用到。
方案一:Anthropic 官方直连
最"正统"的路子。
1. 注册 Anthropic Console 账号
去 console.anthropic.com 注册。2026 年的新变化是部分地区会触发身份验证(就是我开头说的那个上传身份证的流程),碰到了就按提示传,审核大概 1-3 个工作日。
2. 创建 API Key
进 Dashboard → API Keys → Create Key,复制保存好。
3. 写代码调用
import anthropic
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 账号的话,这条路挺顺的。
import boto3
import json
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 多个模型,支持支付宝/微信付款,按量计费。
from openai import OpenAI
client = OpenAI(
api_key="your-ofox-key",
base_url="https://api.ofox.ai/v1"
)
# 调 Claude
response = client.chat.completions.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "用一句话解释什么是 RAG"}
]
)
print(response.choices[0].message.content)
想换模型,改一行:
# 换成 GPT-5
response = client.chat.completions.create(
model="gpt-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "用一句话解释什么是 RAG"}
]
)
# 换成 DeepSeek V3
response = client.chat.completions.create(
model="deepseek-chat",
max_tokens=1024,
messages=[
{"role": "user", "content": "用一句话解释什么是 RAG"}
]
)
延迟大概 300ms,比官方直连还快一点,应该是多节点就近路由的原因。Streaming 和 Function Calling 都试过,没问题。
踩坑点:模型名称要按平台文档写,有些聚合平台的模型 ID 和官方的不完全一致,第一次调之前先看下文档里的模型列表。
调用链路一图看懂
graph LR
A[你的代码 - OpenAI SDK] -->|base_url 指向| B{选择方案}
B -->|方案一| C[api.anthropic.com]
B -->|方案二| D[AWS Bedrock]
B -->|方案三| E[api.ofox.ai/v1]
E --> F[Claude Opus 4.6]
E --> G[Claude Sonnet 4.6]
E --> H[GPT-5 / Gemini 3 / DeepSeek V3]
C --> F
D --> F
方案三的好处就是聚合网关帮你处理了各家的鉴权差异,代码始终是 OpenAI SDK 的写法,切模型只改 model 参数。
Streaming 流式输出示例
做聊天应用的话,流式输出是刚需。贴个完整示例:
from openai import OpenAI
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字以内"}
]
)
for chunk in stream:
if chunk.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 来回切,不用维护两套鉴权逻辑。
有问题评论区聊,踩到新坑我会更新。