Claude API
Messages API
Claude Messages API 的核心用法 — 创建消息、多轮对话、系统提示词与 Token 计数
基本请求与响应
Messages API 是与 Claude 交互的核心接口,采用无状态的多轮对话格式。
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "你好,Claude"}
]
)
print(message.content[0].text)响应格式
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "你好!有什么可以帮你的吗?"
}
],
"model": "claude-opus-4-6",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 14
}
}多轮对话
Messages API 是无状态的,你需要自己管理对话历史:
import anthropic
client = anthropic.Anthropic()
conversation = [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么可以帮你的?"},
{"role": "user", "content": "解释一下机器学习"},
]
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=conversation,
)
print(response.content[0].text)
# 将回复添加到对话历史,继续下一轮
conversation.append({
"role": "assistant",
"content": response.content[0].text
})
conversation.append({
"role": "user",
"content": "神经网络是什么?"
})
response2 = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=conversation,
)系统提示词
系统提示词用于控制 Claude 的行为和角色:
message = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
system="你是一个专业的中文技术文档翻译助手,善于用简洁的语言解释复杂概念。",
messages=[
{"role": "user", "content": "什么是量子计算?"}
]
)Token 计数
在发送昂贵请求前预估 token 用量:
# 计算消息的 token 数
token_count = client.messages.count_tokens(
model="claude-opus-4-6",
messages=[
{"role": "user", "content": "法国的首都是什么?"}
]
)
print(f"输入 tokens: {token_count.input_tokens}")
# 带系统提示词的计数
token_count = client.messages.count_tokens(
model="claude-opus-4-6",
system="你是一个有用的 AI 助手。",
messages=[
{"role": "user", "content": "详细解释光合作用。"}
]
)
print(f"预估费用: ${token_count.input_tokens * 0.000005:.6f}")最佳实践
- 消息顺序:始终保持 user 和 assistant 角色交替出现
- 上下文管理:包含相关历史但注意 token 用量
- 错误处理:实现指数退避的重试逻辑
- Token 预算:使用 token 计数进行成本预估
- 系统提示词:越具体越好,保证行为一致性