Agent Engineering 课程阅读

在 GitHub 查看原文

本页目录

L07 练习

code.py 里的代码,运行 python agent-lessons/07_agentic_rag/code.py 观察变化。


练习 1:观察 Agent 的工具选择逻辑

仔细看实验 1 的四个问题,Agent 分别选了什么工具:

问题 Agent 选了什么? 选对了吗?
"年假有几天?"
"1+1 等于几?"
"你好"
"北京天气?"

思考:Agent 是怎么"知道"什么时候该检索、什么时候不该的?(提示:靠 search_knowledge_base 的 description——里面写了"当用户问公司制度时使用")这印证了 L04 的"description 是灵魂"。


练习 2:实现多轮检索

当前 Agent 检索一次就结束。试着让它能"查不到就换关键词再查"。在 run_agentic_rag 里加逻辑:

# 如果检索结果里包含"没找到相关内容",Agent 自然会看到这个反馈
# 你只要在 prompt 里引导它"如果第一次没查到,换个关键词再查"
SYSTEM_PROMPT = """你是一个聪明的助手。如果 search_knowledge_base 的结果里说'没找到',
你可以换一个更宽泛或更具体的关键词再查一次(最多重试2次)。"""

然后问一个第一次可能查不准的问题(用一个生僻的表述),看 Agent 会不会自动换关键词重查。

思考:多轮检索是 Agentic RAG 相比传统 RAG 的核心优势——传统 RAG 查一次就结束,Agent 能自适应调整。


练习 3:对比成本(省钱对比)

传统 RAG 每个问题都要:1次 embedding + 1次检索 + 1次生成。Agentic RAG 对不需要检索的问题只:1次生成。

算一下,假设有 100 个用户问题,其中 30% 是闲聊/计算类(不需要 RAG):

传统 RAG:100 次 embedding + 100 次检索 + 100 次生成
Agentic RAG:约 70 次 embedding + 70 次检索 + 100 次生成(省了 30%)

思考:在生产环境,这种"按需检索"能省多少 API 成本?尤其 embedding 和检索量大的时候。


练习 4:加入你自己的文档

回顾 RAG 课程的 L09(毕业作品)。把你自己的一个文档放进 data/sample_docs/,重启本课程序。

然后问关于你自己文档的问题,看 Agentic RAG 能不能正确检索并回答。再问一个不相关的问题(如"今天几号"),看它会不会跳过检索。

思考:你已经把 RAG 和 Agent 两大体系打通了。这个 Agentic RAG 系统,本质上就是你 RAG 课毕业作品的"智能化升级版"——从"无脑检索"变成"按需检索"。


✅ 完成本课后,你应该能回答

  1. 传统 RAG 的核心局限是什么?(提示:无脑检索)
  2. Agentic RAG 怎么解决这个局限?(提示:Agent 自主决定)
  3. 怎么把 RAG 包装成 Agent 的工具?(提示:检索函数 + tools 定义)
  4. 多轮检索是什么?为什么传统 RAG 做不到?
  5. 为什么说"RAG 是 Agent 工具箱里的一把扳手"?这个认知为什么重要?