toMedia
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}")

最佳实践

  1. 消息顺序:始终保持 user 和 assistant 角色交替出现
  2. 上下文管理:包含相关历史但注意 token 用量
  3. 错误处理:实现指数退避的重试逻辑
  4. Token 预算:使用 token 计数进行成本预估
  5. 系统提示词:越具体越好,保证行为一致性

On this page