Claude API Python 入门:安装 SDK、第一个请求、流式输出与多轮对话

用官方 anthropic Python SDK 调 Claude:安装与 API Key 配置、第一个 messages.create 请求、system 提示词、多轮对话(API 无状态)、流式输出、错误处理与重试、读取 token 用量。附可运行的命令行聊天示例。

NNathaniel bigo··原创首发·AI 辅助撰写
7 分钟读完
资料核对于 2026-10-07 · 依据官方文档与公开资料整理 其他 账号
本文根据 Claude API 官方文档(快速开始、Python SDK、Working with messages、Streaming)整理,核对日期 2026-10-07。示例代码基于官方示例改写;模型 ID 会更新,以官方 Models overview 为准。

适用于谁

  • 会一点 Python,想在自己的脚本或后端里调用 Claude 的开发者;
  • 搜「claude api python」「python sdk example」「tutorial」的人;
  • 从 OpenAI API 迁移过来,想知道 Claude 的写法有什么不同的人。

还没有 API Key 的,先看本站《Claude API Key 怎么获取:Claude Console 创建密钥、充值与用量查看》。

结论先说

  1. 安装:pip install anthropic,要求 Python 3.10 及以上。
  2. 把 API Key 设成环境变量 ANTHROPIC_API_KEY,SDK 会自动读取,代码里不用写密钥。
  3. 核心只有一个调用:client.messages.create(model=..., max_tokens=..., messages=[...]);max_tokens 是必填的。
  4. Messages API 是无状态的:多轮对话要每次把完整历史一起发过去。
  5. 回复在 message.content(一个内容块列表)里,用量在 message.usage 里;长回复用流式输出体验更好。

步骤

1. 准备环境

bash
export ANTHROPIC_API_KEY="你的API Key"     # Windows PowerShell: $env:ANTHROPIC_API_KEY="你的API Key"

mkdir claude-quickstart && cd claude-quickstart
python3 -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install anthropic

官方建议本地开发时可以用 python-dotenv 把密钥放进 .env 文件,并确保 .env 不进版本控制。

2. 第一个请求

新建 quickstart.py:

python
import anthropic

client = anthropic.Anthropic()  # 自动读取环境变量 ANTHROPIC_API_KEY

message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1000,
    messages=[
        {"role": "user", "content": "用三句话解释什么是向量数据库"}
    ],
)

for block in message.content:
    if block.type == "text":
        print(block.text)

print(message.usage)        # 例如 Usage(input_tokens=25, output_tokens=180)
print(message.stop_reason)  # end_turn 表示正常结束;max_tokens 表示被长度上限截断

运行 python quickstart.py。要点:

  • content 是一个内容块列表,普通回答是 type == "text" 的块;用到工具、思考等功能时还会出现其他类型的块,所以按类型取文本更稳妥;
  • stop_reason 是 max_tokens 时说明回答被截断了,调大 max_tokens 或让模型写短一点。

3. 加上系统提示词(system)

系统提示词用顶层的 system 参数,不放进 messages:

python
message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    system="你是一名耐心的 Python 老师,回答要配一个最小可运行的例子,用中文回答。",
    messages=[{"role": "user", "content": "列表推导式怎么用?"}],
)

4. 多轮对话:每次发送完整历史

官方说明 Messages API 是无状态的,服务器不记得上一轮说了什么,你要自己保存历史,每次连同新问题一起发送(user 和 assistant 交替):

python
messages = [
    {"role": "user", "content": "你好,Claude"},
    {"role": "assistant", "content": "你好!有什么可以帮你?"},
    {"role": "user", "content": "能给我介绍一下大语言模型吗?"},
]
reply = client.messages.create(model="claude-opus-5-5", max_tokens=1024, messages=messages)

一个可以直接运行的命令行聊天小程序(示例代码):

python
import anthropic

client = anthropic.Anthropic()
history = []

while True:
    user_input = input("你:").strip()
    if user_input in ("exit", "quit"):
        break
    history.append({"role": "user", "content": user_input})

    reply = client.messages.create(
        model="claude-opus-5-5",
        max_tokens=1024,
        system="你是一个简洁的中文助手。",
        messages=history,
    )
    text = "".join(b.text for b in reply.content if b.type == "text")
    print("Claude:", text)
    history.append({"role": "assistant", "content": text})

历史越长,每次请求的输入 token 越多、费用越高。长对话可以考虑只保留最近若干轮,或者用提示词缓存降低重复部分的成本(详见本站《Claude 提示词缓存(Prompt Caching)入门:缓存时间、价格倍率与命中率》)。

5. 流式输出

回复较长时,用流式输出边生成边显示。SDK 提供了更方便的 messages.stream 帮助方法:

python
with client.messages.stream(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "写一首关于秋天的七言绝句"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    print()
    final = stream.get_final_message()   # 结束后拿到完整的 message 对象
    print(final.usage)

也可以用 client.messages.create(..., stream=True) 自己遍历原始事件,内存占用更小,但不会帮你拼出最终消息。

6. 异步调用

python
import asyncio
from anthropic import AsyncAnthropic

client = AsyncAnthropic()

async def main():
    message = await client.messages.create(
        model="claude-opus-5-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": "你好"}],
    )
    print(message.content)

asyncio.run(main())

7. 错误处理、重试与超时

python
import anthropic

try:
    message = client.messages.create(
        model="claude-opus-5-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": "你好"}],
    )
except anthropic.APIConnectionError as e:
    print("连不上服务器", e.__cause__)
except anthropic.RateLimitError:
    print("触发速率限制(429),稍后重试")
except anthropic.APIStatusError as e:
    print("其他错误", e.status_code)
状态码异常类型
400BadRequestError
401AuthenticationError(密钥不对)
403PermissionDeniedError
404NotFoundError(请求的资源不存在)
429RateLimitError
≥500InternalServerError

官方 SDK 的默认行为:连接错误、408、409、429 和 5xx 默认自动重试 2 次(指数退避),可以用 Anthropic(max_retries=0) 修改;请求默认超时 10 分钟,可以用 Anthropic(timeout=20.0) 修改。每个响应都有 _request_id,反馈问题时附上它。

从 OpenAI 迁移要注意的几点

  • 系统提示词用顶层 system 参数,而不是 role: "system" 的第一条消息(官方说明 system 消息不能作为 messages 的第一条);
  • max_tokens 必填;
  • 回复是内容块列表,不是单个字符串;
  • 官方说明 Claude 4.6 及以后的模型不支持「预填充(prefill)回复开头」,用了会返回 400 错误,需要固定输出格式时改用结构化输出或在系统提示词里说明。

常见问题

Q:报 401 / AuthenticationError?

API Key 没设置、写错或已被删除。确认环境变量 ANTHROPIC_API_KEY 在运行脚本的终端里生效(新开的终端要重新设置)。

Q:报「credit balance is too low」之类的错误?

Console 的预付费额度用完了,到 Console 的 Settings → Billing 补充。

Q:模型名该写什么?

用官方 Models overview 页列出的 API ID。各模型的定位和区别详见本站《Claude 模型有哪些、有什么区别:Opus、Sonnet、Haiku 怎么选(2026)》。

Q:想让 Claude 调用我自己的函数怎么办?

用工具调用(Tool Use),详见本站《Claude Tool Use(工具调用 / Function Calling)入门:定义工具与返回 tool_result》。想做能自己读文件、跑命令的智能体,可以看 Claude Agent SDK。

Q:Claude API 在中国大陆能用吗?

Claude API 只在 Anthropic 支持的国家和地区提供,中国大陆目前不在列表中(https://www.anthropic.com/supported-countries ),请遵守所在地法律和服务条款。

参考资料

  • Get started with Claude(官方):https://platform.claude.com/docs/en/get-started
  • Python SDK(官方):https://platform.claude.com/docs/en/cli-sdks-libraries/sdks/python
  • Working with the Messages API(官方):https://platform.claude.com/docs/en/build-with-claude/working-with-messages
  • Streaming messages(官方):https://platform.claude.com/docs/en/build-with-claude/streaming
  • Models overview(官方):https://platform.claude.com/docs/en/about-claude/models/overview
需要开通或续费?Claude Pro 充值 →

Nathaniel 的更多内容

  1. 01

    ChatGPT 图片识别怎么用:上传照片、截图提问与识别不准的处理

    ChatGPT 能看懂照片、截图、图表和手写笔记。本文按官方帮助中心讲清怎么上传图片(含粘贴和拖拽)、支持的格式和 20MB 限制、能不能传视频,以及官方列出的十条识别局限(中日韩文字、旋转、图表线型、计数等)和对应的提问技巧。

    ChatGPT0
  2. 02

    AI绘画提示词怎么写:主体、风格、构图、光线的通用公式与词汇表

    AI 绘画提示词到底怎么写?本文综合 OpenAI、Google、Midjourney 三家官方提示指南,总结一套通用公式(主体 + 动作 + 场景 + 构图 + 光线 + 风格 + 约束),附中英对照词汇表,并讲清 ChatGPT / Nano Banana 与 Midjourney 写法的差别。

    ChatGPT其他 AI 工具0
  3. 03

    Claude Code 权限模式详解:auto、手动、plan、bypass 与权限规则配置

    Claude Code 六种权限模式各自放行什么、怎么用 Shift+Tab 切换、auto 模式为什么提示不可用、allow / ask / deny 规则怎么写,以及 bypass 模式的风险。

    Claude0
  4. 04

    ChatGPT 套餐对比:Free、Go、Plus、Pro、Business 有什么区别(2026)

    ChatGPT 现在有 Free、Go、Plus、Pro(Pro 100 / 200 / 500)和面向团队的 Business。本文按官方价格页和帮助中心整理各套餐在模型、上下文、Work、Codex、生图、语音等方面的区别,并给出按用途选择的建议。

    ChatGPT0
  5. 05

    MCP 是什么:Model Context Protocol 入门,以及在 Claude 里怎么用

    MCP(模型上下文协议)是 Anthropic 发起的开放标准,让 AI 应用统一连接文件、数据库和各种工具。本文讲清它的结构、两种传输方式,以及在 claude.ai、桌面版、Claude Code、API 里怎么用。

    Claude0
  6. 06

    Midjourney 怎么用:网页版从登录到出图的完整流程

    第一次用 Midjourney 不知道从哪下手?本文按官方文档讲清网页版怎么登录、订阅、在 Imagine 栏写提示词出图,以及变体、放大、编辑、转视频和默认设置怎么调,附常见问题。

    其他 AI 工具0

同产品的其他教程

  1. 01

    Claude Excel 怎么用:Claude for Excel 加载项安装与表格分析

    Claude for Excel 加载项哪些套餐能用、支持哪些 Excel 版本、怎么安装,能做公式解释、改假设、查错、建模型等什么事,有哪些限制;Free 用户怎么用对话分析表格。

    Claude0
  2. 02

    Claude API Key 怎么获取:Claude Console 创建密钥、充值与用量查看

    Claude API Key 在 Claude Console(platform.claude.com)里创建。本文讲注册、创建密钥、三种密钥类型、预付费额度怎么买、用量页怎么看、密钥安全,以及 Claude Pro 订阅为什么不包含 API。

    Claude0
  3. 03

    Claude Code 上下文满了怎么办:/compact、/clear 与省 token 技巧

    Claude Code 上下文快满、提示 compacting conversation、token 消耗太快时怎么办?本文讲清 /context、/compact、/clear 的区别,压缩后哪些内容会保留,以及官方推荐的一系列省 token 做法。

    Claude0
  4. 04

    Claude Artifacts 是什么、怎么用:创建、分享与导出(2026 新版)

    Claude Artifacts(作品)是什么?2026 年 9 月改版后怎么在对话里做文档、幻灯片、设计和小工具,怎么分享链接、导出成 Word / PPT / PDF / HTML,旧版 Artifacts 还能不能用,一篇讲清。

    Claude0
  5. 05

    CLAUDE.md 怎么写:最佳实践、模板与 AGENTS.md 的区别

    CLAUDE.md 是什么、放在哪、写什么不写什么?附可复制模板,并讲清 AGENTS.md 是什么、Claude Code 和 Codex 分别怎么读这两个文件,以及一个仓库里怎么让两者共存。

    ClaudeCodex0
  6. 06

    Claude 使用限制与额度:用量怎么看、什么时候重置(Free / Pro / Max / Claude Code)

    Claude 的「5 小时会话额度」和「每周额度」分别怎么算、在哪里看、什么时候重置?Free、Pro、Max 有什么区别,Claude Code 提示额度用完时该怎么办,一篇讲清。

    Claude0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~