在 Python 中使用 Anthropic Claude API
anthropic.Anthropic()、messages.create()、内容块、扩展思考和流式传输。
在 Python 中使用 Anthropic Claude API 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
Anthropic SDK
Anthropic 的 Claude 模型通过 anthropic Python 软件包访问。请使用 pip install anthropic 安装。Claude 擅长长上下文推理、仔细遵循指令以及使用工具。
pip install anthropic
import anthropic创建客户端
请使用 anthropic.Anthropic() 构建客户端。默认情况下,它会从 ANTHROPIC_API_KEY 环境变量读取您的密钥,从而避免将凭据写入代码。
import anthropic
client = anthropic.Anthropic()
# Or explicitly
client = anthropic.Anthropic(api_key="sk-ant-...")Messages API
Claude 使用 client.messages.create()。与 OpenAI 不同,系统提示词是单独的参数,而不是列表中的一条消息。messages 列表只保存用户和助手的对话轮次。
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
system="You are a concise expert.",
messages=[{"role": "user", "content": "Explain RAG in one sentence."}]
)max_tokens 为必填项
一个关键区别是:在 Anthropic API 中,max_tokens 是必填的。它限制 Claude 在回复中最多生成的令牌数。请将其设置为足以容纳预期输出的值,同时它也能防止成本失控。
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=2048,
messages=[{"role": "user", "content": "Write a haiku about Python."}]
)读取回复
Claude 会返回一个由内容块组成的 content 列表。对于纯文本,回复位于 message.content[0].text。之所以使用列表,是因为一条回复可能包含多个内容块,例如文本和工具使用请求。
print(message.content[0].text)
# Inspect block type
print(message.content[0].type) # "text"对话历史
与其他聊天 API 一样,Claude 没有状态。要继续对话,您需要自行将助手回复和下一轮用户消息 append 到 messages 中。
messages = [{"role": "user", "content": "Hello"}]
resp = client.messages.create(model="claude-opus-4-8", max_tokens=512, messages=messages)
messages.append({"role": "assistant", "content": resp.content[0].text})
messages.append({"role": "user", "content": "Tell me more"})使用上下文管理器进行流式传输
对于实时输出,Claude 提供了 client.messages.stream(),可通过 with 语句将其用作上下文管理器。这样可以安全地打开和关闭连接。
with client.messages.stream(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Count to five."}]
) as stream:
pass # iterate inside遍历文本流
在 with 代码块中,遍历 stream.text_stream,即可在 Claude 生成文本时接收文本增量。每一项都是可以直接打印的字符串。
with client.messages.stream(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Count to five."}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)获取最终消息
流式传输结束后,调用 stream.get_final_message() 获取完整组装的消息对象,其中包括用量数据和完整的内容块。
with client.messages.stream(model="claude-opus-4-8", max_tokens=1024,
messages=[{"role": "user", "content": "Hi"}]) as stream:
for text in stream.text_stream:
print(text, end="")
final = stream.get_final_message()令牌用量
回复包含一个 usage 对象,其中有 input_tokens 和 output_tokens。请注意,它们的命名与 OpenAI 不同(OpenAI 使用 prompt/completion),但含义相同:跟踪每次调用的成本。
print(message.usage.input_tokens)
print(message.usage.output_tokens)OpenAI 与 Anthropic 的区别
请记住以下主要区别:Anthropic 将系统提示词放在单独的参数中,要求提供 max_tokens,从 content[0].text 读取文本,并通过 with 上下文管理器进行流式传输。了解这些区别后,您就能更有信心地在不同提供商之间切换。
快速检查
测试您对 Anthropic 的了解。
回顾:Python 中的 Claude
您创建了 anthropic.Anthropic() 客户端,并使用必填的 max_tokens 和单独的 system 提示词调用了 messages.create()。您从 content[0].text 读取回复,并通过 usage.input_tokens / output_tokens 跟踪成本。
进行流式传输时,您将 client.messages.stream() 用作 with 上下文管理器,遍历 text_stream,并使用 get_final_message() 获取组装后的结果。
常见问题解答
「在 Python 中使用 Anthropic Claude API」课时是免费的吗?
是的 — 「在 Python 中使用 Anthropic Claude API」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「在 Python 中使用 Anthropic Claude API」这节课中我会学到什么?
anthropic.Anthropic()、messages.create()、内容块、扩展思考和流式传输。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「在 Python 中使用 Anthropic Claude API」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- OpenAI API:chat.completions 与流式传输
- 在 Python 中使用 Anthropic Claude API
- 使用 LLM 进行函数调用与工具使用
- 面向生产环境 LLM 应用的提示词工程