Lab 2.1–2.4 无需 API key;Lab 2.5 可选需 key。预计 60–90 分钟。
任务:改造 examples/model_matrix.py:
验收:能说出"限流桶比单价更早决定选型"的例子(提示:Fable 5 Start 档 500K ITPM / 100K OTPM,来源: https://platform.claude.com/docs/en/api/rate-limits(访问于 2026-08-30))。
任务:下面请求有 5 处结构错误,逐一指出并改正(对照 https://platform.claude.com/docs/en/api/messages(访问于 2026-08-30)):
{
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [
{"role": "system", "content": "你是客服助手"},
{"role": "user", "content": "查一下我的订单"},
{"role": "assistant", "content": [{"type": "tool_use", "id": "toolu_1", "name": "get_order", "input": {"order_id": "A123"}}]},
{"role": "user", "content": [
{"type": "text", "text": "这是结果:"},
{"type": "tool_result", "tool_use_id": "toolu_1", "content": "已发货"}
]}
]
}
提示(错误清单方向):system 的位置与角色、tool_result 排序、连续角色合并、图片简写、消息上限。 验收:能解释每处错误对应的官方行为(报错 / 被合并 / 引发空响应模式)。
任务:给"发票审核系统"估算单次请求多模态成本:
⌈w/28⌉×⌈h/28⌉;PDF 按"每页文本+图像"粗估(先查官方页给的比例线索,来源: https://platform.claude.com/docs/en/build-with-claude/pdf-support(访问于 2026-08-30));乘单价。验收:图 token 算得出(1200/28=42.86→43、1600/28=57.14→58,每张 ≈43×58=2,494),并知道超档位上限会自动缩放。
任务:为下列每种 stop_reason 写一行应用层伪代码处理(if-elif 链):
end_turn / max_tokens / stop_sequence / tool_use / pause_turn / refusal / model_context_window_exceeded
要求:max_tokens 分支必须考虑"输出是 JSON 时不能拼接下游解析";refusal 分支必须考虑 fallback 模型(来源: https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons(访问于 2026-08-30))。
任务:同一 prompt 发两次(第二次相同前缀命中缓存),观察 usage 四个字段的变化:input_tokens 下降、cache_read_input_tokens 上升。记录:总输入是否恒定?output_tokens 含 thinking 吗?(对照模块 2 §4)
验收:亲手看到"input_tokens ≠ 总输入"。