Agent Engineering 课程阅读

在 GitHub 查看原文

本页目录

L04 练习

练习 1:改 MockLLM 脚本做另一个任务(方法练习)

当前 MockLLM 预录的是「LangGraph release」任务。请改脚本,让 agent 完成一个新任务:「搜索 CrewAI,翻到第 3 页,提取第 1 条结果的版本号」。

  1. 用 L02 的 page_to_obs 探明 index/search 页的元素编号(CrewAI 的搜索流程编号可能不同)。
  2. 写新的 SCRIPT 序列。
  3. code.py 确认 agent 5 步内完成。

验收:新任务跑通,答案含 CrewAI 第 3 页第 1 条的版本号。这训练你「先观察再写脚本」的工程习惯(也是真实 LLM 的工作方式——看页面再决策)。


练习 2:量化滑动窗口的 token 收益(设计实验类)

本课主张「滑动窗口裁剪」省 token。用实验量化:

  1. 假设:步数越多,滑动窗口比全量保留省得越多。
  2. 实验设计: - 改 build_prompt,加一个 mode="full" 参数:全量保留所有历史观察(不裁剪)。 - 在 agent 循环每步记录 prompt 的 token 数(len(prompt)//4)。 - 跑同一任务两版(滑动 vs 全量),画步数-token 曲线。
  3. 预期:全量版 token 随步数线性增长(每步+300);滑动版步数>3 后趋平(只保留 3 步全量)。

验收:输出两版的步数-token 对照表,步 6+ 时滑动版 token 显著低。诚实标注这是 mock 演示(真实 LLM 每步观察大小会变)。

提示:怎么测 prompt token
prompt = build_prompt(task, history, obs)
tok = len(prompt) // 4
print(f"步{step} prompt token: {tok}")

练习 3:步数上限的取舍(理解类)

本课 max_steps=12。回答:

  1. 设太小(如 3)会怎样?设太大(如 100)会怎样?
  2. 步数上限和滑动窗口的 recent_n 是什么关系?两者怎么配合?
  3. research-assistant 落地(L09)时,browse 工具的步数上限该设多少?依据是什么(提示:成本——每步一次 LLM 调用+一次浏览器操作)?

验收:能说出「上限太小→复杂任务做不完;太大→成本失控+死循环风险。recent_n 控制单步 prompt 大小,max_steps 控制总步数,两者共同决定总 token 预算」。L09 的依据是「单次 browse 的成本预算 × 典型翻页取证步数」。


练习 4:思考题——真实 LLM 会比 mock 慢在哪(取舍类)

mock 路径保证循环机制可复现,但真实 LLM 的行为更复杂。回答:

  1. 真实 glm-4 跑这个任务,可能比 mock 多出哪些步?(提示:先点错再 back、看完第 1 页才翻页、finish 前多确认一次)
  2. 这些「多余」的步是浪费还是必要?怎么判断?
  3. 这正是 L06 可靠性课要解决的——「agent 会在页面上打转/重复操作」。本课的循环为 L06 留了什么接口(提示:history 记录)?

验收:能说出真实 LLM 的「探索性步数」是正常的(人在网页上也点点看看),但「打转/重复」是病——区分两者的信号在 history 里(连续相同动作/观察不变)。这是 L06 循环检测的伏笔。