跳转到正文
技术教程·

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+
  • anthropic Python SDK(pip install anthropic
  • Anthropic 账号 + API Key
  • 以当前常见版本为准,具体模型名和 API 参数请以 Anthropic 官方文档为准

申请 API Key

  • 访问 Anthropic Console
  • 注册或登录账号
  • 进入 API Keys 页面 → Create Key
  • 保存好 Key(只显示一次)
注意:Anthropic 的 API 服务在中国大陆直接访问可能不稳定,确保你的网络环境能稳定连接 Anthropic 服务。可参考 海外 AI 工具使用指南

基础对话

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 是一个列表,每个元素有 typetext 属性。不是直接 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 提前检查

下一步学习

---

本文最后更新于 2026-07-08。代码示例基于 anthropic Python SDK,请根据最新版本调整。

保障 API 调用稳定性

调用 OpenAI、Anthropic 等海外 API 时,网络波动可能导致请求超时或失败。稳定的网络环境有助于提升开发效率。

⚠️ 请遵守所在地的法律法规和服务条款。使用 AI API 时请遵守各平台的使用政策。

了解安全上网方案 →

常见问题

相关推荐

获取更多 AI 内容

订阅更新,第一时间获取新教程和工具推荐。