W2 代码练习打卡清单
手写 Function Calling 与 ReAct 循环 · 周一至周日
规则:每个练习文件先自己填完 TODO,再运行末尾自测,全部 PASS 才勾选对应任务。勾选状态自动保存在本浏览器,换浏览器不同步。
配套目录:agent-learning-w2/预计每日 5–7 小时周日复盘 2–3 小时里程碑:M0 Minimal Agent
M0 验收标准(周六完成)
- 无框架跑通多轮工具调用闭环(
--demo 成功)
- 超时 / 错误参数 / 死循环三类故障均有对策
- 给出开启 Caching 前后的延迟与成本对比数字
- 每步可观测:打印 Thought / Action / Observation
周一Day1 · Function Calling 全流程手写调用真实 APIday1_function_calling.py
验收标准
- 模型调用了 calculator 工具而非自己心算
- 工具结果正确回灌,模型给出含 "491" 的最终回答
- 能解释
tool_calls 和 tool_call_id 的对应关系
常见坑
- 模型不调工具:检查 system prompt 是否强制要求
arguments 是 JSON 字符串,需 json.loads
- tool 消息必须带
tool_call_id
- assistant 消息也要带完整的
tool_calls 结构
周二Day2 · 两工具 + Pydantic 校验 + 错误自纠调用真实 APIday2_tools_and_self_heal.py
验收标准
- calculator + search 两个工具均正常调用
- 错误参数(非字符串、空 JSON)被 Pydantic 拦截
- 错误信息结构化回灌,模型在下一轮修正
常见坑
model_json_schema() 生成的格式要包在 function 键里
- 校验失败不要抛异常——返回错误字符串让模型自纠
- 搜索工具的 mock 数据要覆盖足够场景
周三Day3 · 手写 ReAct 循环调用真实 APIday3_react_loop.py
验收标准
- 计算任务在 2-3 步内完成
- 搜索+计算组合在 4-5 步内完成
- 每步都有 Thought / Action / Observation 输出
核心概念
- ReAct = while not done: think → act → observe
- messages 列表 = Agent 短期记忆
- 不是新算法——就是带工具调用的 while 循环
周四Day4 · 故障实验:四类失败模式与三层防御调用真实 APIday4_failure_modes.py
四类故障 × 防御
- 死循环 → RepetitionGuard(相同参数拦截)
- 上下文爆炸 → max_steps
- 早停 → 系统提示约束
- 过度思考 → max_tokens
常见坑
- 重复检测的 key 要包含工具名+参数
- 拦截后要回灌原因给模型,不能静默丢弃
- max_tokens 太小可能导致 JSON 被截断
周五Day5 · 并行工具调用 + Prompt Caching调用真实 APIday5_parallel_and_cache.py
验收标准
- 能区分串行和并行执行路径
- 能解释 Prompt Caching 的前提条件和限制
- 给出延迟对比数字(理解网络波动影响)
常见坑
- 部分模型不支持 parallel tool calls,属正常
- DeepSeek 可能不返回 cached_tokens,重点在原理
- 延迟受网络波动影响,多跑几次取平均
周六Day6 · 整合 Minimal Agent + 演示调用真实 APIday6_minimal_agent.py
验收命令
python day6_minimal_agent.py --demo
python day6_minimal_agent.py "算 17*23+100"
python day6_minimal_agent.py "搜索 ReAct 再算 18*37"
本周产出(M0 deliverable)
- 无框架 Minimal Agent(~80 行)
- 三层防御:max_steps / 重复检测 / max_tokens
- Pydantic 工具入参校验 + self-healing
- 可观测:每步打印 Thought/Action/Observation
周日Day7 · 复盘与自测(2–3 小时)
进入 W3 的准入自测(全是 Yes 才开始)
- 能脱稿画出 FC 闭环的消息流程?
- 能说清 self-healing 和重试的区别?
- 能默写四类 Agent 故障和对应防御?
- 理解 Prompt Caching 的命中条件?
- Minimal Agent --demo 能跑通?
有任一项 No
- 周一上午先补对应 Day 的练习,再进入 W3 的 LangGraph。