Claude API 使用教程:从申请到调用
Claude API 怎么用?本文从申请 API Key 到 Python 调用,手把手教你使用 Anthropic 的 Claude API,含基础对话、工具调用和最佳实践。
这篇教程适合谁
你已经用过 OpenAI API(或类似的 LLM API),现在想试试 Claude。本文不会解释"什么是大模型",直接上代码,重点讲 Claude API 和 OpenAI API 的差异。
不适合:没写过 API 调用代码的读者。建议先看 OpenAI API 教程。 最终产物:能用 Python 调 Claude API 做基础对话、流式输出、多轮对话和工具调用。环境假设
- Python 3.8+
anthropicPython SDK(pip install anthropic)- Anthropic 账号 + API Key
- 以当前常见版本为准,具体模型名和 API 参数请以 Anthropic 官方文档为准
申请 API Key
- 访问 Anthropic Console
- 注册或登录账号
- 进入 API Keys 页面 → Create Key
- 保存好 Key(只显示一次)
基础对话
import anthropic
client = anthropic.Anthropic(api_key="your-api-key")
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "你好,介绍一下自己"}
]
)
print(message.content[0].text)
和 OpenAI 的区别:Claude 的 messages.create 返回的 content 是一个列表,每个元素有 type 和 text 属性。不是直接 choices[0].message.content 那种结构。
流式输出
with client.messages.stream(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "用 Python 写一个快速排序算法"}
]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
print()
为什么用流式:Claude 的响应时间通常比 OpenAI 稍长,流式输出能让用户更早看到部分内容,体感快很多。
多轮对话
messages = [
{"role": "user", "content": "什么是 RAG?"}
]
# 第一轮
response1 = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=messages
)
print(response1.content[0].text)
# 手动拼接历史——Claude 没有 OpenAI 那种 session 机制
messages.append({"role": "assistant", "content": response1.content[0].text})
messages.append({"role": "user", "content": "RAG 和微调有什么区别?"})
response2 = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=messages
)
print(response2.content[0].text)
踩坑点:Claude API 没有内置的对话历史管理,你需要自己维护 messages 列表。历史越长,token 消耗越大——实际项目里要做历史截断或摘要。
工具调用(Function Calling)
import json
tools = [
{
"name": "get_weather",
"description": "获取指定城市的天气信息",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,如北京、上海"
}
},
"required": ["city"]
}
}
]
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
tools=tools,
messages=[
{"role": "user", "content": "北京今天天气怎么样?"}
]
)
# 处理工具调用
for block in response.content:
if block.type == "tool_use":
print(f"调用工具:{block.name}")
print(f"参数:{block.input}")
# 这里执行实际的工具逻辑,然后把结果返回给 Claude
和 OpenAI 的区别:Claude 的工具定义用 input_schema 而不是 parameters,返回的工具调用信息在 content 列表里而不是 tool_calls 字段。结构不同,迁移时注意。
错误处理
try:
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}]
)
except anthropic.APIError as e:
print(f"API 错误:{e}")
except anthropic.RateLimitError:
print("请求过于频繁,请稍后重试")
Token 计数
token_count = client.count_tokens(
model="claude-sonnet-4-20250514",
messages=[{"role": "user", "content": "你好"}]
)
print(f"Token 数量:{token_count}")
为什么要手动算:Claude 的上下文窗口很大(200K token),但大上下文意味着高费用和慢响应。实际项目里,先用 count_tokens 估算成本,再决定要不要把那么多内容塞进去。
常见问题
API Key 无效
- 检查是否正确复制(没有多余空格)
- 确认 Key 没过期
- 确认账户没被限制
响应速度慢
- 用 Claude Sonnet(比 Opus 快得多)
- 减少
max_tokens - 检查网络连接质量
Token 超限
- 减少输入的上下文长度
- 分段处理长文档
- 用
count_tokens提前检查
下一步学习
- 对比 Claude 和 ChatGPT:ChatGPT vs Claude
- 深入了解 Claude:Claude 使用指南
- 对比 OpenAI API:OpenAI API 调用教程
---
本文最后更新于 2026-07-08。代码示例基于 anthropic Python SDK,请根据最新版本调整。保障 API 调用稳定性
调用 OpenAI、Anthropic 等海外 API 时,网络波动可能导致请求超时或失败。稳定的网络环境有助于提升开发效率。
⚠️ 请遵守所在地的法律法规和服务条款。使用 AI API 时请遵守各平台的使用政策。
了解安全上网方案 →常见问题
相关推荐
获取更多 AI 内容
订阅更新,第一时间获取新教程和工具推荐。