调用 Anthropic API:messages
使用 Anthropic messages API:了解它与 OpenAI 的区别、系统提示词的位置以及 Claude 专属的最佳实践。
调用 Anthropic API:messages 是 CoddyKit 上的免费 AI Agents 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
为什么选择 Anthropic?
与同等的 OpenAI 模型相比,Claude 模型通常具有更强的指令遵循能力、更好的工具使用能力和更长的上下文窗口,而且有时价格更低。
大多数生产环境中的智能体都会同时支持两家提供商,以便在需要时使用备用方案。
Install the SDK
# pip install anthropic
import anthropic
client = anthropic.Anthropic() # reads ANTHROPIC_API_KEY from env首次调用
端点是 messages.create:
response = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=512,
system='You are a concise assistant.',
messages=[
{'role': 'user', 'content': 'Capital of France?'},
],
)
print(response.content[0].text)
# 'Paris.'与 OpenAI 的主要区别
system是顶层参数,而不是消息max_tokens是 REQUIREDcontent是内容块列表(文本、tool_use 等)- 没有
n参数——请使用多次调用
内容块
即使是文本响应,也会以内容块列表的形式返回:
response.content # list of blocks
response.content[0].type # 'text' or 'tool_use'
response.content[0].text # the text content
response.stop_reason # 'end_turn' / 'max_tokens' / 'tool_use'
response.usage.input_tokens
response.usage.output_tokens多内容块
您也可以在用户消息中发送内容块列表(图像、工具结果):
messages = [{
'role': 'user',
'content': [
{'type': 'text', 'text': 'What is in this image?'},
{'type': 'image', 'source': {
'type': 'base64',
'media_type': 'image/png',
'data': image_base64
}}
]
}]预填助手消息
强制响应以特定方式开始:
messages = [
{'role': 'user', 'content': 'Return a JSON object.'},
{'role': 'assistant', 'content': '{'}
]
response = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=512,
messages=messages,
)
# Output starts after '{', guaranteed to be JSON.工具使用
Anthropic 的工具格式与 OpenAI 类似,但使用 input_schema:
tools = [{
'name': 'get_weather',
'description': 'Get current weather',
'input_schema': {
'type': 'object',
'properties': {'city': {'type': 'string'}},
'required': ['city']
}
}]
response = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=1024,
tools=tools,
messages=messages,
)
if response.stop_reason == 'tool_use':
for block in response.content:
if block.type == 'tool_use':
print(block.name, block.input)返回工具结果
工具结果会放入包含工具结果区块的用户消息中:
messages.append({
'role': 'user',
'content': [{
'type': 'tool_result',
'tool_use_id': 'toolu_abc',
'content': json.dumps(weather_data)
}]
})提示词缓存
Anthropic 支持提示词缓存:将较长的静态前缀标记为 cache_control,缓存命中时只需支付 10% 的费用:
system = [
{'type': 'text', 'text': '...long system prompt...',
'cache_control': {'type': 'ephemeral'}}
]
for block in system:
print(f"type={block['type']} cache_control={block['cache_control']}")
print("text preview:", block['text'][:30])
扩展思考
Claude 有一种“扩展思考”模式,会在回答前进行内部推理:
response = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=4096,
thinking={'type': 'enabled', 'budget_tokens': 2048},
messages=messages,
)系统提示词的位置
在 Anthropic 接口中,系统提示词应放在哪里?
回顾
现在您已经可以调用两家主要服务商了。它们之间的差异虽小却确实存在,因此大多数团队都会构建一个薄适配层,以便在两者之间切换。
常见问题解答
「调用 Anthropic API:messages」课时是免费的吗?
是的 — 「调用 Anthropic API:messages」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「调用 Anthropic API:messages」这节课中我会学到什么?
使用 Anthropic messages API:了解它与 OpenAI 的区别、系统提示词的位置以及 Claude 专属的最佳实践。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「调用 Anthropic API:messages」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 调用 OpenAI API:chat.completions
- 调用 Anthropic API:messages
- 流式响应(SSE)
- 成本意识:令牌计数与预算