Chapter 01

先认识谁是 Claude

在按下 npm install 之前,先花 10 分钟理清模型家族和计费——选错模型,要么又贵又慢,要么便宜但不会干活。Anthropic 的三个层级各有最佳场景,本章讲清楚,然后跑出你的第一次 API 调用。

Claude 模型三件套

Anthropic 的命名规则是「代次 + 层级」,例如 claude-opus-4-5:

模型 ID 是 API 参数里的关键字段。发布新版本时旧 ID 依然可用——你锁死在某版本也没问题。

选型决策表

场景推荐理由
复杂推理 / 代码生成 / Agent 主脑Opus 4.x推理深度、长任务规划
日常 chatbot / RAG 问答 / 工具调用Sonnet 4.x质量足够 + 价格合理
实时翻译 / 简单分类 / 高并发Haiku 4.x首 token 延迟低、单价极低
批量文档处理Haiku + Batch API单价再砍 50%
端侧推理 / 离线不适合 ClaudeClaude 只有 API,无本地权重
工程化思路
生产系统里多模型混用是标配——Haiku 过滤器做 intent classification,分发到 Sonnet 处理主要逻辑,遇到特别复杂的 case 才上 Opus。每层选最便宜的"刚好够用",月账单能砍到 1/3。

注册与 API Key

  1. 打开 console.anthropic.com 注册账号
  2. 左侧菜单 API Keys → Create Key
  3. 保存 sk-ant-api03-... 开头的 Key —— 只显示一次,别丢
  4. 充值(最小 $5)进入 Build tier 1,每日有请求限额
Key 安全
API Key 绝不能出现在前端代码或 Git 仓库。最好做法:服务器端 .env → 反向代理调 Anthropic;前端只跟自己服务器通信。泄露一次,跑满限额再收大额账单是真事。

SDK 安装

Anthropic 官方 SDK 支持 Python、Node.js/TypeScript、Java、Go(beta)等。最活跃的是前两个。

# Node.js / TypeScript
npm install @anthropic-ai/sdk

# Python
pip install anthropic

# 或用 uv
uv add anthropic

第一次调用:Node.js

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

const client = new Anthropic();   // 自动读 ANTHROPIC_API_KEY

const msg = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [
    { role: "user", content: "写一首五言绝句歌颂 TypeScript。" },
  ],
});

console.log(msg.content[0].text);
// 输出:
// 类型如骨架,
// 代码成玉器。
// IDE 知我心,
// bug 未生即。

第一次调用:Python

import anthropic

client = anthropic.Anthropic()   # 读 ANTHROPIC_API_KEY 环境变量

msg = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "用 bash 写一行查找最近修改的 10 个 Python 文件。"},
    ],
)

print(msg.content[0].text)
# find . -name "*.py" -printf "%T@ %p\n" | sort -rn | head -10 | cut -d' ' -f2-

Messages API 的核心结构

所有 Claude 调用都收敛到 一个端点: POST /v1/messages。参数有:

model
要调用的模型 ID,例:claude-opus-4-7claude-sonnet-4-6claude-haiku-4-5
max_tokens
这次响应最多生成的 token 数 —— 必填。别忘了,默认没值
messages
对话列表,role 只能是 userassistant,必须以 user 开头、交替出现
system
系统指令(可选)。不是放在 messages 里,而是顶层单独字段
temperature
0–1,默认 1。0 → 更确定,1 → 更有发散性
tools / tool_choice
工具调用相关(第 4 章详讲)
stream
true 时切到 SSE 流式(第 3 章详讲)

返回结构

{
  "id": "msg_01ABc...",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-4-6",
  "content": [
    { "type": "text", "text": "五言绝句如下..." }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 23,
    "output_tokens": 64,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0
  }
}

content 是数组——未来可能同时含 text / tool_use / thinking 多种 block,永远别假设只有一条 text。

stop_reason 可能是:

计费基础

Claude 按 token 计价,input/output 价格不同:

模型Input ($/MTok)Output ($/MTok)适用
Claude Opus 4.x1575最贵,旗舰
Claude Sonnet 4.x315性价比之王
Claude Haiku 4.x0.80 ~ 14 ~ 5轻量高频

"MTok" = 一百万 token。粗略说:1 token ≈ 0.75 英文单词 ≈ 0.5~1 个中文字。价格随版本迭代会调整,以官方页为准。

省钱三件套
· Prompt Caching(第 6 章)—— 缓存命中 input 只要原价 10%
· Batch API(第 8 章)—— 整体 50% 折扣,适合离线任务
· 模型分层 —— Haiku 过滤 → Sonnet 主力 → Opus 攻坚
三者叠加,生产月账单能再砍 70%。

环境变量惯例

# ~/.zshrc 或 .env
export ANTHROPIC_API_KEY="sk-ant-api03-..."

# 可选:自定义 endpoint(走代理)
export ANTHROPIC_BASE_URL="https://your-proxy/v1"

# 可选:日志级别
export ANTHROPIC_LOG="debug"

SDK 默认读这些变量,代码里就不用硬编码了。

报错速查

401 Unauthorized
API Key 错 / 漏 sk-ant- 前缀 / 被禁用
429 Rate Limit
限流,检查 Usage tier;写退避重试(第 10 章)
400 Invalid Request
大概率:没填 max_tokens / messages 为空 / model id 拼错 / role 不交替
529 Overloaded
Anthropic 侧过载,重试即可(带退避)
空 content / 被截断
stop_reason = max_tokens,把 max_tokens 调大

和 OpenAI API 的主要差异

OpenAIAnthropic
端点/v1/chat/completions/v1/messages
systemmessages 里 role=system顶层单独 system 字段
max_tokens可选必填
流式stream=truestream=true(SSE 事件结构不同)
tool_usefunction_call / tool_callscontent 里直接出 tool_use block
Prompt Caching自动显式 cache_control 打点

本章小结