用 Claude API 构建应用:提示词评估、工具、RAG、缓存、MCP 和代理模式全覆盖
一句话
Building with the Claude API 是 Academy 里内容最多的开发课,用 Python 讲完整条链路:基本请求与多轮对话、系统提示与输出控制、提示词评估、提示词工程、工具调用、RAG 检索、扩展思考与多模态、提示词缓存、MCP、Claude Code 与电脑操作,最后是工作流与代理的架构模式。Amazon Bedrock 和 Google Cloud 两门课结构几乎相同,只是接入方式换成各自的云平台。
这篇导读覆盖的课程
- Building with the Claude API —— 主课程,Python,约 80 节,含练习和期末测评
- Claude with Amazon Bedrock —— 最初为 AWS 员工认证制作;用 boto3 和 Bedrock 模型 ID 接入
- Claude on Google Cloud —— 在 Google Cloud 上通过 Vertex AI 接入,课程结构与主课程一致
课程结构
- 用 API 访问 Claude
- API 密钥、发请求、多轮对话、系统提示、temperature、流式输出、结构化数据。
- 提示词评估
- 典型评估流程、生成测试集、运行评估、模型评分与代码评分。
- 提示词工程技巧
- 清楚直接、具体、用 XML 标签组织、给例子。
- 工具调用
- 工具函数与 schema、处理消息块、返回工具结果、多轮多工具、细粒度工具调用、文本编辑工具、网页搜索工具。
- RAG 与代理式搜索
- 文本切块、嵌入向量、完整 RAG 流程、BM25 词法检索、多索引 RAG 管线。
- Claude 的功能
- 扩展思考、图像、PDF、引用、提示词缓存、代码执行与 Files API。
- Model Context Protocol
- MCP 客户端与服务器,工具、资源、提示三种原语(详见第 12 篇)。
- Anthropic 应用
- Claude Code 的设置与使用、用 MCP 增强;电脑操作(computer use)。
- 代理与工作流
- 并行、链式、路由三种工作流;代理与工具;环境检查;工作流和代理怎么选。
精华:这门课真正要你带走的东西
先评估,再调提示词。这门课把提示词评估放在提示词工程之前,这是它最值得学的地方。流程是:写一版提示词 → 准备一组测试输入(可以让 Claude 帮你生成)→ 批量运行 → 打分 → 改提示词 → 再跑。打分有两种:代码评分(检查格式、关键词、能否解析为 JSON)和模型评分(让另一个模型按评分标准打分)。没有评估,“改好了”只是感觉。
提示词工程的 4 个基本功。清楚直接:第一句就说要做什么。具体:说明受众、长度、格式、约束。用 XML 标签分隔不同内容,例如把资料放在 <document> 里、把要求放在 <instructions> 里,Claude 对这种结构很敏感。给例子:一两个高质量示例往往比一大段说明更有效。
工具调用的消息结构要吃透。Claude 的回复由多个内容块组成,可能同时有文字块和 tool_use 块。你执行工具后,要用 tool_result 块回传,并通过 id 对应到原来的调用。一次回复里可能有多个工具调用,要全部处理。课程用一个完整项目一步步演示,还介绍了官方提供的文本编辑工具和网页搜索工具。
RAG:先把资料切好,再谈检索。流程是:切块 → 每块生成嵌入向量 → 用户提问时检索最相关的块 → 把这些块放进提示词。课程强调两点。第一,语义检索(嵌入向量)和词法检索(BM25)各有盲区,组合成多索引管线效果更好。第二,切块时给每块补上它在全文里的背景(上下文检索,contextual retrieval),能明显减少检索失误。
提示词缓存:重复的前缀只付一次全价。如果每次请求都带着同样的长系统提示或长文档,可以把它标记为可缓存。后续请求命中缓存时,这部分读取成本和延迟大幅下降。规则是:缓存的是请求开头的固定部分,变化的内容要放在后面。
工作流优先,代理其次。课程最后一单元区分两种架构。工作流:步骤由你的代码预先编排。链式是一步的输出作为下一步的输入;并行是把任务拆成独立部分同时处理再汇总;路由是先分类,再交给专门的提示词处理。代理:由模型自己决定下一步做什么,更灵活,但更难预测和测试。能用工作流解决的问题,先用工作流。
云平台版本的差别。Bedrock 版用 AWS 的 boto3 客户端和 Bedrock 模型 ID 发请求,鉴权走 AWS 账号;Google Cloud 版通过 Vertex AI 接入,鉴权走 GCP 项目。提示词、工具、RAG、评估这些核心内容完全一样。公司已经用某个云平台,选对应版本学,能少走配置弯路。
关键概念
- 系统提示(system prompt)
- 放在对话之外的全局指令,用来设定角色、规则和输出风格。
- temperature
- 控制输出随机性的参数。低值更稳定,高值更多样。
- 提示词评估(prompt eval)
- 用一组测试输入批量运行提示词并打分,量化比较不同版本的效果。
- 模型评分 / 代码评分
- 前者让模型按评分标准打分,适合主观质量;后者用程序检查,适合格式和规则。
- RAG(检索增强生成)
- 先从资料库检索相关片段,再放进提示词让模型回答,用来引入模型不知道的资料。
- BM25
- 经典的关键词检索算法,擅长精确匹配术语、编号和专有名词。
- 上下文检索(contextual retrieval)
- 切块时为每块补充其在原文中的背景说明,再生成嵌入和索引,提高检索准确率。
- 提示词缓存(prompt caching)
- 缓存请求开头的固定内容,后续命中时降低成本和延迟。
- 引用(citations)
- 让 Claude 在回答中标注所依据的原文片段,便于核查。
- 电脑操作(computer use)
- Claude 通过截图、鼠标和键盘操作图形界面完成任务的能力。
学前准备
- 熟练使用 Python。
- 了解 JSON 的基本处理。
- Anthropic API 密钥;学云平台版本则需要对应的 AWS 或 Google Cloud 账号和模型访问权限。
- 时间预算:这是 Academy 最长的开发课,建议分 2–3 周学完。
动手练一遍
用一个真实的小需求贯穿全课:做一个“公司内部文档问答助手”。
- 请求与系统提示:写一个命令行聊天程序,支持多轮对话和流式输出,系统提示规定“只根据提供的资料回答,资料里没有就说不知道”。
- 评估:写 15 个测试问题,其中 5 个在资料里没有答案。用代码评分检查“不知道”的回答,用模型评分检查其余答案的准确性。
- RAG:把 20 份文档切块,建嵌入索引和 BM25 索引,两路结果合并后放进提示词。对比只用一路时的评估分数。
- 引用与缓存:开启引用,让每个回答标注来源片段。把固定的系统提示标记为缓存,比较前后两次请求的
usage。 - 工具:加一个
search_docs工具,让 Claude 自己决定何时检索、检索什么,对比固定检索流程的效果。
容易卡住的地方
- 不做评估就改提示词。改了 10 版也说不清哪版更好。
- 把工具结果和工具调用的 id 对错。多工具调用时要逐个对应。
- 切块太大或太小。太大检索不准,太小丢失上下文,要用评估集实测。
- 把会变化的内容放在缓存部分前面。缓存只对开头的固定前缀生效。
- 一上来就做全自主代理。先用链式、路由、并行工作流,确实需要灵活性时再上代理。
延伸阅读
- Anthropic Cookbook —— RAG、工具调用、评估等官方示例代码
- Anthropic:上下文检索 —— 上下文检索的原理和实验数据(英文)
- 提示词缓存文档 —— 缓存规则、价格和用法(英文)
- Anthropic:构建有效的代理 —— 链式、路由、并行等工作流模式的出处(英文)
- 下一篇:MCP 入门 —— 把工具从你的代码里拆出去