📖 Day 10 学习页:阶段二综合实战:多工具 Agent
Day 10:阶段二综合实战——多工具 Agent
🎯 今日目标:Day 1-9 所有组件的总装。产出一个有 4+ 工具、有记忆、有错误恢复、 有 Token 统计的完整 Agent。今天模板给得最少——因为所有零件你都亲手造过。
⏱ 今日安排(约 2 小时)
| 时间 | 内容 | 方式 |
|---|---|---|
| 20min | 总装图纸:组件关系与装配顺序 | 阅读 |
| 90min | 总装 + 测试:完成 6 个 TODO 和 6 个测试场景 | 编码 |
| 10min | 验收自查:对照清单逐项确认 | 自查 |
📖 第一步:总装图纸(各天组件怎么拼)
┌─────────────────────────────────────────┐
│ react_agent_with_memory │
│ │
用户输入 ─────────►│ ① memory.short_memory.get_recent() │ ← Day 9 短期记忆
│ ② knowledge = memory.rag.retrieve(...) │ ← Day 9 RAG 检索
│ ③ prompt = 记忆 + 知识 + 工具清单 + 问题 │ ← Day 6 prompt 构建
│ ④ for step in range(max_steps): │ ← Day 1 异步 + 上限
│ llm 响应 → 解析 Action │ ← Day 6 解析
│ execute_tool_with_recovery(...) │ ← Day 8 超时 + 今天加重试
│ Observation 回填 → 下一轮 │
│ ⑤ metrics 统计 token / 耗时 / 调用次数 │ ← 今天新增
└─────────────────────────────────────────┘
错误恢复策略(今天的核心新知识点)
| 策略 | 触发时机 | Agent 行为 |
|---|---|---|
| RETRY | 瞬时错误(网络抖动) | 等 0.5s 重试 1-2 次 |
| FALLBACK | 重试仍失败 | 换备用方案(如换工具/用 LLM 直接回答) |
| SKIP | 非关键工具失败 | 跳过该步骤,记录后继续 |
| ABORT | 关键步骤失败/超步数 | 带错误说明终止,返回已获得的部分结果 |
关键思想:工具失败不是异常,是给 LLM 的一条 Observation—— 把"计算器报错:除数不能为 0"喂回去,LLM 往往能自己换路子。程序崩溃才是失败,错误信息回传是纠错。
🛠 第二步:动手实操
- 打开模板:day10_practice_template.py:
- TODO 2.1:再注册 2 个工具(read_file / search_web 模拟版),凑满 4 个
- TODO 3.1:
react_agent_with_memory()主循环——按总装图纸把 ①-⑤ 串起来 - TODO 4.1:
print_metrics()美化输出统计 - TODO 5.1:
execute_tool_with_recovery()—— 重试 2 次仍失败就把错误作为结果返回给 LLM,绝不抛异常打断循环 - TODO 6.1:编写
main()的 6 个测试场景
- 6 个测试场景(写进 main):
普通对话 / 单工具调用 / 多工具并发(
asyncio.gather,Day 1)/ 多轮对话带记忆(Day 9)/ 工具失败后自动恢复(把一个工具故意改成会报错)/ Token 统计打印。 - 验收:
python day10_practice_validator.py—— 验收会检查工具数量与错误恢复, 并用"间谍函数"拦截 calculator 调用,确认你的 Agent 真的执行了工具。 - 自测:跑
python day10_practice_template.py,6 个场景全部有真实输出(不是 print 占位)。
⚠️ 避坑
- ❌ 一上来就拼全部组件——先把单工具 ReAct 跑通,再一个个往上挂,每挂一个测一次
- ❌ 工具失败直接 raise → 整个 Agent 崩溃;错误要作为 Observation 回传给 LLM 自行纠正
- ❌ Token 消耗不记录 → 成本失控时你毫无感知;每次 LLM 调用都记 prompt/completion tokens
- ✅ 这是阶段二收官:做完回头把 Day 6 和今天的代码对比一下,你会直观看到'框架前 vs 总装后'的差距
🚀 下一站
阶段三(Day 11-15)将把这个 Agent 做成 FastAPI 服务 + Web 界面 + Docker 部署。 路线图见 主页,交付清单见 验收标准文档—— 从今天起没有模板了,按清单自主搭建,遇到问题回看对应天的学习页。