Claude API Python 教程 2026 — 完整代码示例 | APIMaster.ai
用 Python 调用 Claude API 完整教程:安装、基础对话、流式输出、多轮对话、图片识别、工具调用。通过 APIMaster.ai 在国内,使用 Claude Python API。
Claude API Python 教程
本文提供使用 Python 调用 Claude API 的完整代码示例,覆盖基础用法到进阶功能。全部示例通过 APIMaster.ai 接入,国内可直连使用。
安装依赖
pip install anthropic # Anthropic 官方 SDK
pip install openai # OpenAI 兼容模式(可选)
初始化客户端
import anthropic
client = anthropic.Anthropic(
api_key="你的 APIMaster Key",
base_url="https://apimaster.ai", # Anthropic SDK 不加 /v1
)
或使用 OpenAI 兼容模式(如果你有现成的 OpenAI 代码):
from openai import OpenAI
client = OpenAI(
api_key="你的 APIMaster Key",
base_url="https://apimaster.ai/v1",
)
基础对话
import anthropic
client = anthropic.Anthropic(
api_key="你的 APIMaster Key",
base_url="https://apimaster.ai",
)
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "用 Python 实现一个快速排序算法,并解释原理。"}
],
)
print(response.content[0].text)
System Prompt(角色设定)
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=512,
system="你是一位资深 Python 工程师,回答简洁,优先提供可运行的代码示例。",
messages=[
{"role": "user", "content": "如何高效读取超大 CSV 文件?"}
],
)
print(response.content[0].text)
多轮对话
对话历史 = []
def 发送消息(用户输入):
对话历史.append({"role": "user", "content": 用户输入})
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=对话历史,
)
回答 = response.content[0].text
对话历史.append({"role": "assistant", "content": 回答})
return 回答
print(发送消息("Python 里的装饰器是什么?"))
print(发送消息("能给我一个实际应用场景的例子吗?"))
流式输出(推荐用于生成长文本)
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "写一篇 500 字的技术博客:Python 异步编程入门。"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
print() # 换行
图片识别(Vision)
import base64
# 读取本地图片
with open("screenshot.png", "rb") as f:
图片数据 = base64.standard_b64encode(f.read()).decode("utf-8")
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=512,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": 图片数据,
},
},
{"type": "text", "text": "描述这张截图里的内容,如果有代码请分析其功能。"},
],
}
],
)
print(response.content[0].text)
工具调用(Function Calling)
工具列表 = [
{
"name": "查询数据库",
"description": "执行 SQL 查询并返回结果",
"input_schema": {
"type": "object",
"properties": {
"sql": {"type": "string", "description": "要执行的 SQL 语句"},
"数据库": {"type": "string", "enum": ["用户库", "订单库", "商品库"]},
},
"required": ["sql", "数据库"],
},
}
]
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=256,
tools=工具列表,
messages=[{"role": "user", "content": "查询今天新增的用户数量。"}],
)
if response.stop_reason == "tool_use":
工具调用 = next(b for b in response.content if b.type == "tool_use")
print(f"要调用的工具:{工具调用.name}")
print(f"参数:{工具调用.input}")
异步调用(高并发场景)
import asyncio
import anthropic
async def 批量生成(提示词列表):
client = anthropic.AsyncAnthropic(
api_key="你的 APIMaster Key",
base_url="https://apimaster.ai",
)
async def 单次生成(提示词):
resp = await client.messages.create(
model="claude-haiku-4-5", # 批量任务用最便宜的模型
max_tokens=256,
messages=[{"role": "user", "content": 提示词}],
)
return resp.content[0].text
结果 = await asyncio.gather(*[单次生成(p) for p in 提示词列表])
return 结果
提示词 = ["总结:" + 文章 for 文章 in 文章列表]
结果 = asyncio.run(批量生成(提示词))
错误处理
import anthropic
try:
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=256,
messages=[{"role": "user", "content": "你好"}],
)
except anthropic.AuthenticationError:
print("API Key 无效,请检查控制台")
except anthropic.RateLimitError:
print("请求太频繁,稍后重试")
except anthropic.APIStatusError as e:
print(f"API 错误 {e.status_code}:{e.message}")
模型选择建议
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 客服机器人、简单问答 | claude-haiku-4-5 | 最快最便宜 |
| 代码生成与审查 | claude-sonnet-4-6 | 最佳性价比 |
| 复杂推理与研究 | claude-opus-4-8 | 能力最强 |
| 文档分析(超长上下文) | claude-sonnet-4-6 | 20 万 Token |