上个月我接了个私活甲方要做一个合同的小工具指定要用 Claude Opus 4.7 来做长文本理解。说实话一开始我是拒绝的——之前用 Claude 都是网页版手动复制粘贴API 调用还真没正经搞过。折腾了大概两天半把三种接入方式都试了一遍踩了不少坑这里把完整过程记录下来。直接回答标题问题使用 Claude API 有三种主流方案——Anthropic 官方 SDK 直连、OpenAI 兼容格式调用、以及通过聚合平台统一接入。如果你只是想最快跑通往下翻到方案二改个 base_url 五分钟就能出结果。先说结论方案延迟P95上手难度适合场景Anthropic 官方 SDK420ms中等需要原生特性如 Tool Use betaOpenAI 兼容格式310-350ms极低已有 OpenAI 代码想换模型聚合平台中转280-340ms极低多模型切换、团队协作环境准备Python 3.10装两个包就行pip install anthropic openai我用的是 Python 3.11.8macOS Sonoma测试日期 4 月 22 号。方案一Anthropic 官方 SDK 直连最正统的方式。去 console.anthropic.com 注册账号拿到 API Key。import anthropic client anthropic.Anthropic(api_keysk-ant-xxxxx) message client.messages.create( modelclaude-sonnet-4-20260514, max_tokens1024, messages[ {role: user, content: 用一句话解释什么是 RAG} ] ) print(message.content[0].text)跑起来没啥问题但我第一次调的时候直接报了个错anthropic.AuthenticationError: Error code: 401 - {type: error, error: {type: authentication_error, message: invalid x-api-key}}原因很蠢——我把 Key 复制的时候多带了个换行符。strip 一下就好了。Streaming 模式也很简单with client.messages.stream( modelclaude-sonnet-4-20260514, max_tokens1024, messages[{role: user, content: 写一个 Python 快排}] ) as stream: for text in stream.text_stream: print(text, end, flushTrue)实测 Streaming 首 token 大概 180ms 出来体感还行。但有个问题——如果你之前项目全是用 OpenAI SDK 写的换 Anthropic SDK 意味着一堆代码要重构。接口格式不一样返回结构也不一样。方案二OpenAI 兼容格式调用这个方案是我最终选的。Claude 现在支持 OpenAI 兼容协议你用openai这个 Python 包改一下 base_url 和 model 名字就能调 Claude。from openai import OpenAI client OpenAI( api_keyyour-key, base_urlhttps://api.ofox.ai/v1 ) response client.chat.completions.create( modelclaude-sonnet-4-20260514, messages[ {role: system, content: 你是一个合同助手}, {role: user, content: 请分析以下合同条款的风险点...} ], max_tokens2048, streamTrue ) for chunk in response: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end)好处很明显如果你之前写了一堆 GPT-5.5 的调用代码想试试 Claude 的效果literally 只需要改 model 参数那一行。其他的 messages 格式、stream 处理、error handling 全部通用。我那个合同的项目就是这么干的——先用 GPT-5.5 跑通了流程然后把 model 换成 claude-sonnet-4 对比效果发现 Claude 在长合同8000 字的条款理解上确实更稳。方案三带 Tool Use 的复杂调用如果你要做 Agent 类的应用Claude 的 Tool Use 绕不开。这里用 Anthropic 原生 SDK 演示import anthropic import json client anthropic.Anthropic(api_keysk-ant-xxxxx) tools [ { name: search_contract, description: 在合同数据库中搜索相关条款, input_schema: { type: object, properties: { keyword: {type: string, description: 搜索关键词}, contract_type: {type: string, enum: [劳动合同, 采购合同, 租赁合同]} }, required: [keyword] } } ] response client.messages.create( modelclaude-opus-4-20260514, max_tokens4096, toolstools, messages[ {role: user, content: 帮我查一下我们采购合同里关于违约金的条款} ] ) # 处理 tool_use 响应 for block in response.content: if block.type tool_use: print(f调用工具: {block.name}) print(f参数: {json.dumps(block.input, ensure_asciiFalse)})Opus 4.7 的 Tool Use 准确率比之前高了不少我测了 50 个 case只有 2 个出现了参数格式错误。不过 Opus 贵啊——input $15/M tokensoutput $75/M tokens。我那个私活预算有限最后生产环境还是用的 Sonnet 4.6。整体调用链路graph LR A[你的 Python 代码] --|OpenAI SDK| B{选择接入方式} B --|方案一| C[Anthropic 官方 API] B --|方案二| D[聚合平台 API 网关] D -- E[Claude Sonnet 4.6] D -- F[Claude Opus 4.7] D -- G[GPT-5.5 / Gemini 3.1] C -- E C -- F踩坑记录坑 1max_tokens 是必填的跟 OpenAI 不一样Claude API 的 max_tokens 是必填参数。不传直接报错anthropic.BadRequestError: Error code: 400 - {type: error, error: {type: invalid_request_error, message: max_tokens: field required}}挺烦人的每次都要手动指定。我一般默认给 2048。坑 2system prompt 的位置Anthropic 原生 SDK 里system prompt 不是放在 messages 数组里的是单独一个参数# 正确写法 client.messages.create( modelclaude-sonnet-4-20260514, system你是一个合同助手, # 注意这里 messages[{role: user, content: ...}] ) # 错误写法会报错 messages[ {role: system, content: 你是一个合同助手}, # 原生 SDK 不支持这样写 {role: user, content: ...} ]但如果你用 OpenAI 兼容格式调用方案二system 放 messages 里反而是对的。这个区别卡了我半小时。坑 3429 限流免费 tier 的 RPM 限制很低我跑批量测试的时候疯狂 429anthropic.RateLimitError: Error code: 429 - {type: error, error: {type: rate_limit_error, message: Number of request tokens has exceeded your per-minute rate limit}}解决办法要么加 retry exponential backoff要么升级 tier。我后来用聚合平台OpenRouter、ofox.ai 这类绕过了这个问题ofox.ai 是大模型云厂商官方授权服务商走的是 Anthropic 和 AWS Bedrock 的官方通道限流阈值比个人账户高不少。坑 4中文 token 计算Claude 的 tokenizer 对中文不太友好一个汉字大概 1.5-2 个 token。我那个合同场景一份 5000 字的合同 input 就要吃掉大约 8000-9000 tokens。算成本的时候别按字数算用anthropic.count_tokens()先预估一下。小结三种方案各有适用场景。从零开始写新项目并且重度依赖 Claude 特有功能比如 200K 超长上下文、Tool Use 的 beta 特性用 Anthropic 原生 SDK。已有 OpenAI 格式的代码想快速切换或者需要在多个模型之间 A/B 测试OpenAI 兼容格式省事太多了。我也不确定 Anthropic 未来会不会把 OpenAI 兼容协议作为长期支持的方向——毕竟他们自己的 SDK 才是亲儿子。但至少 2026 年 4 月这个时间点两种方式都能稳定跑。对了如果你也在做类似的合同/文档类应用强烈建议先用 Sonnet 4.6 跑通再考虑要不要上 Opus。Sonnet 的性价比真的高太多大部分场景够用了。