API开发者工具

Claude API 快速入门:10 分钟接入你的第一个 AI 功能

面向开发者的 Claude API 入门教程,包括 API Key 申请、Python/Node.js 接入示例、常用参数说明、费用控制,以及提示词缓存等进阶技巧。

· 阅读约 8 分钟

Claude API 让你可以把 Claude 的能力嵌入到自己的产品、脚本或工作流中。本文从零开始,帮你快速跑通第一个请求。

第一步:获取 API Key

  1. 访问 console.anthropic.com
  2. 注册/登录账号
  3. 左侧菜单 → API KeysCreate Key
  4. 复制 Key,妥善保管(只显示一次)

注意: API 独立计费,和 claude.ai 的 Pro 订阅是分开的。新账号会有免费额度。

Python 接入

安装 SDK:

pip install anthropic

最简单的调用:

import anthropic

client = anthropic.Anthropic(api_key="your-api-key")

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "用一句话解释什么是机器学习"}
    ]
)

print(message.content[0].text)

加上系统提示词(System Prompt):

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system="你是一位专业的中文写作助手,回答简洁清晰,不说废话。",
    messages=[
        {"role": "user", "content": "帮我改写这段话,让它更有冲击力:[原文]"}
    ]
)

多轮对话:

messages = []

# 第一轮
messages.append({"role": "user", "content": "我想写一篇关于咖啡的文章"})
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=512,
    messages=messages
)
assistant_reply = response.content[0].text
messages.append({"role": "assistant", "content": assistant_reply})

# 第二轮
messages.append({"role": "user", "content": "把第一个方向展开写,要有具体数据"})
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=messages
)
print(response.content[0].text)

Node.js 接入

安装 SDK:

npm install @anthropic-ai/sdk

基础调用:

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({ apiKey: 'your-api-key' });

const message = await client.messages.create({
  model: 'claude-sonnet-4-6',
  max_tokens: 1024,
  messages: [
    { role: 'user', content: '用一句话解释什么是机器学习' }
  ]
});

console.log(message.content[0].text);

流式输出(打字机效果):

const stream = await client.messages.stream({
  model: 'claude-sonnet-4-6',
  max_tokens: 1024,
  messages: [{ role: 'user', content: '写一首关于春天的短诗' }]
});

for await (const chunk of stream) {
  if (chunk.type === 'content_block_delta') {
    process.stdout.write(chunk.delta.text);
  }
}

常用参数说明

client.messages.create(
    model="claude-sonnet-4-6",   # 模型选择
    max_tokens=1024,              # 最大输出 token 数
    temperature=0.7,              # 创意度 0-1,越高越随机
    system="...",                 # 系统提示词
    messages=[...]                # 对话历史
)

模型选择指南:

模型适用场景价格
claude-opus-4-7复杂推理、高质量输出最贵
claude-sonnet-4-6日常任务,最佳性价比中等
claude-haiku-4-5简单分类、高并发最便宜

费用控制

API 按 token 计费:

  • 输入 token:你发送的文字
  • 输出 token:Claude 回复的文字
  • 1000 个汉字 ≈ 1500-2000 tokens

省钱技巧:

# 1. 设置合理的 max_tokens,不要设太大
max_tokens=512   # 简单问答
max_tokens=2048  # 长文本生成

# 2. 用更便宜的模型处理简单任务
model="claude-haiku-4-5-20251001"  # 分类、判断、简单提取

# 3. 提示词缓存(高级,见下方)

提示词缓存(Prompt Caching)

如果你的 System Prompt 很长(比如一份详细的产品说明书),每次请求都会重复计费。开启缓存后,重复的部分只计算一次:

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "这里放你很长的系统提示词...",
            "cache_control": {"type": "ephemeral"}  # 开启缓存
        }
    ],
    messages=[{"role": "user", "content": "用户的问题"}]
)

缓存有效期 5 分钟,重复调用时输入费用降低约 90%。高频应用非常划算。

错误处理

import anthropic
from anthropic import APIConnectionError, RateLimitError, APIStatusError

try:
    response = client.messages.create(...)
except RateLimitError:
    print("请求频率超限,稍后重试")
except APIConnectionError:
    print("网络连接问题")
except APIStatusError as e:
    print(f"API 错误:{e.status_code} - {e.message}")

实用场景示例

批量处理文本:

texts = ["文本1", "文本2", "文本3"]

results = []
for text in texts:
    response = client.messages.create(
        model="claude-haiku-4-5-20251001",
        max_tokens=100,
        messages=[{
            "role": "user",
            "content": f"判断下面这段评论是正面还是负面,只回答'正面'或'负面':\n{text}"
        }]
    )
    results.append(response.content[0].text.strip())

print(results)

定时生成内容:

# 结合 schedule 库,每天自动生成一篇文章摘要
import schedule, time

def generate_daily_summary():
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=500,
        messages=[{"role": "user", "content": "帮我生成今日 AI 行业动态摘要"}]
    )
    print(response.content[0].text)

schedule.every().day.at("09:00").do(generate_daily_summary)
while True:
    schedule.run_pending()
    time.sleep(60)