首页 / 开源热榜 / Anthropic Python SDK / 使用教程

Anthropic Python SDK 中文教程:先跑通 Messages,再补流式、重试和迁移

官方资料核对:2026-09-23 · 文档核对,未安装、未发送 API 请求

anthropic-sdk-python 是 Anthropic 官方 Python SDK,包名是 anthropic。截至本次核对,最新正式版本为 v1.8.0,要求 Python 3.10 或更高。

旧教程最容易错的两点:Python 3.9 已不在 1.x 支持范围;1.x HTTP 层改用 httpx2。依赖旧 httpx patch 的 tracing、APM 和 mock 需要迁移。

1. 建立独立环境并固定 1.x

python3.10 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install "anthropic>=1,<2"

python -c "import anthropic; print(anthropic.__version__)"

不要把 API key 写进源码。官方文档建议从 ANTHROPIC_API_KEY 环境变量读取。团队环境还应使用自己的密钥管理方式和访问控制。

2. 最小 Messages 请求

import os
from anthropic import Anthropic

with Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"]) as client:
    message = client.messages.create(
        model="claude-opus-5-5",
        max_tokens=256,
        messages=[{"role": "user", "content": "用一句话解释幂等。"}],
    )
    for block in message.content:
        if block.type == "text":
            print(block.text)
    print("request_id=", message._request_id)

模型名来自当前官方示例,账户是否有权限仍以控制台和 API 返回为准。_request_id 虽以下划线开头,但官方明确把它列为公开属性,生产日志应记录它。

3. 错误、重试和超时要一起设计

import anthropic

try:
    message = client.with_options(
        max_retries=2,
        timeout=30.0,
    ).messages.create(...)
except anthropic.APIConnectionError as exc:
    print("network", exc.__cause__)
except anthropic.RateLimitError:
    print("rate limited")
except anthropic.APIStatusError as exc:
    print(exc.status_code, exc.response)

官方 SDK 默认对连接错误、408、409、429 和 5xx 重试两次,默认请求超时为 10 分钟。重试会增加实际等待时间;如果你的调用会触发外部写操作,业务层仍要设计幂等键或去重机制。

4. 长请求优先使用流式响应

stream = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=2048,
    messages=[{"role": "user", "content": "解释这份报告。"}],
    stream=True,
)

for event in stream:
    print(event.type)

官方提醒:高 max_tokens 的非流式请求可能被中间网络断开。SDK 在预计非流式请求超过约 10 分钟时会抛出 ValueError。只把 timeout 调得很大,可能让失败更晚发生并触发重复重试。

5. 从 0.x 迁移的检查表

完整破坏性变更以官方 MIGRATION.md 为准。

6. 和 OpenAI Python SDK 怎么比较

相比 OpenAI 官方 openai-python,两者都要求 Python 3.10+,都有同步、异步、类型化响应和 HTTPX2。Anthropic SDK 的主要入口是 client.messages.create,并提供 Bedrock、Vertex、Claude Platform on AWS 与 Foundry 客户端;OpenAI SDK 以 Responses API 为主要生成入口,同时保留 Chat Completions。

它们的对象结构、模型、工具事件和托管平台不同。迁移供应商时需要重写适配层与测试,不能只替换包名。

7. v1.8.0 更新了什么

v1.8.0 于 2026-09-22 发布,加入 claude-opus-5-5、inline tool definitions 和 MCP tool-list pinning 的 beta 支持;还修复 Python 3.13 在未关闭 stream 时退出可能崩溃,以及工具和 compaction 相关问题。beta 功能仍需相应 header 与可用权限。

8. 验证状态与验证边界

验证状态:本轮核对官方 README、v1.8.0 Release、pyproject.toml、MIGRATION.md 和 Claude Platform Python SDK 文档。没有安装包,也没有使用密钥调用 API。

验证边界:未验证认证、计费、模型权限、网络、流式事件、工具、批处理、文件上传、云平台客户端或任何 0.x 项目的真实迁移。代码片段依据官方接口整理,需要在自己的测试账户和固定版本中运行。

这里仅补原教程没有展开的事实和边界。安装命令与操作步骤仍以前文为准。

先判断这个项目是否适合你

近期变化与关注原因

它是 Python 应用接入 Claude API 的官方路径,并随模型、工具和 Managed Agents 等接口快速发布。近期 1.x 升级同时改变最低 Python 版本和 HTTP 底层,对已有监控、mock、自定义 transport 与旧 Completions 代码都有实际迁移影响。

适合谁用

适合 Python 后端、批处理、数据管道、工具调用应用和需要 Bedrock/Vertex/Foundry 适配的 Claude 集成。它只负责 API 客户端,不替应用解决提示设计、权限、业务状态、幂等、预算、数据保留和人工审核。

采用建议

新项目可以把 anthropic 1.x 作为 Claude API 的标准 Python 接入层,但应固定次版本范围、记录请求 ID,并显式设计超时、重试和流式处理。已有 0.x 项目先做迁移分支,重点检查 Python 版本、httpx2、监控与 mock,再上线。

原教程未展开的系统信息

核心功能

  • 同步、异步与 SSE

    Anthropic 和 AsyncAnthropic 使用对应接口;Messages API 可返回完整结果,也可通过 SSE 流式迭代事件。

  • 类型化错误与请求 ID

    连接、鉴权、权限、限流和服务端错误都有明确异常类型,响应对象公开 _request_id 便于日志与支持排查。

架构与数据流

SDK 由类型化资源客户端、请求参数 TypedDict、Pydantic 响应模型和 HTTPX2 传输层组成。Anthropic/AsyncAnthropic 管理认证、默认 header、重试、超时与资源生命周期;messages、files、batches 等资源暴露同步和异步方法;SSE helpers 把流事件组合成可迭代接口。1.x 仍支持 Pydantic v1 和 v2。

常见问题

anthropic 1.x 还支持 Python 3.9 吗?

不支持。官方 v1 迁移指南把最低版本从 Python 3.9 提到 3.10。旧环境应先升级 Python,再安装 anthropic>=1,<2。

从 anthropic 0.x 升到 1.x 只需要改版本号吗?

不一定。除了 Python 3.10,v1 还迁移到 httpx2,移除旧 Text Completions 和部分旧参数,并改变 raw response 的一些读取方式。要按 MIGRATION.md 和类型检查结果逐项修改。

Anthropic Python SDK 会自动重试哪些错误?

官方文档称连接错误、408、409、429 和 5xx 默认重试两次。可以在客户端或单次请求设置 max_retries;有副作用的业务逻辑仍要自行保证幂等。

长输出应该提高 10 分钟默认超时吗?

先使用流式 Messages API。官方提醒非流式长请求可能被中间网络断开,并会在预计超过约 10 分钟时抛出 ValueError;确有需要再同时评估 timeout、重试和重复请求风险。