datawhale_aagentbook_T0_打卡

Task 0 打卡(Chapter 1 · 环境准备与实验 1-1)

完成时间 2026-09-13。

环境准备

照仓库 README 的流程走的。机器是 Windows,Python 3.13.14,用 uv 0.9.18 装依赖,仓库自带 uv.lock,版本可复现。

仓库用 sparse-checkout 检出,只留实验要用的部分(chapter1~10、agentbook 共享包、docs 和根配置),书稿看中文版 book/ 和官方 PDF。中间踩了个坑,浅克隆中断过一次,工作树缺了一万多个文件,后来用 git fetch --refetch 全量补齐 blob 再 checkout 修好的。

依赖安装 uv sync --locked --extra ch1,一次通过。之后配了根目录 .env 和 chapter1/context/.env,填了 DeepSeek 的 Key(主力)和 OpenRouter 的 Key(兜底),先用 --help 验证入口能跑。

实验过程

实验 1-1(chapter1/context),模型 deepseek-v4-flash。任务是把 1000 美元换算成欧元、英镑、日元再求平均。这个任务必须调汇率和计算工具,正好能看出上下文缺一块之后 Agent 会变成什么样。

# 第一轮,single 模式验证链路
uv run python chapter1/context/main.py --mode single --provider deepseek --context-mode full --task "Convert $1000 USD to EUR, GBP, and JPY. Calculate the average." --output runs/task0_first_run.json

# 第二轮,main.py 五组消融先看个大概
uv run python chapter1/context/main.py --mode ablation --provider deepseek --cases 1 --output runs/task0_ablation.json

# 第三轮,官方验收脚本,按书中实验 1-1 的原始设定重跑
uv run python chapter1/context/run_experiment_1_1.py --provider deepseek

验收脚本和演示版的区别在于每次 API 请求和响应都会原文落盘(脱敏),任务固定用 guarded 版(提示词里有一句「不要自行估算汇率」),隐藏工具结果的方式是直接置空,不告诉模型结果被动过。

结果

完整上下文那组答案是对的,€920.00、£790.00、¥149,500.00,还主动说明混合货币求平均没有实际意义。

验收级运行的五组对照。

上下文模式 结果 我观察到的现象
full correct 正常完成
no_history no_terminal_response 跑满迭代上限,一直重复换算
no_reasoning correct 和基线差不多,没看出退化
no_tool_calls no_unsupported_numbers 没工具定义,发不出工具调用
no_tool_results no_terminal_response 触顶,但没有编数字

四个验收项全过(five_arms 齐全、context_contracts 全过、真实 API 留证、运行被接受),证据已写入 chapter1/context/validation/latest.json(created_at 2026-09-13,SHA-256 85f476ff 开头),完整请求响应在 real_20260913T130017Z 目录。

几个值得记的点。

  1. no_history 那组最直观。Agent 忘了之前换算过什么,就反复调工具,10 轮迭代 43 次工具调用(基线是 3 轮 6 次),最后也没给出答案。
  2. 最危险的是 no_tool_results。演示模式跑的时候这组给出了没有观测依据的数字(汇总表标了 UNSUPPORTED),验收脚本这次跑触顶了。两种跑法放一起看,隐藏观测之后模型真的可能自己补数字,而且补的时候语气跟正常作答没区别。
  3. no_reasoning 没退化,这点和仓库台账对得上。台账里记录这个行为断言本来就因为多次复现失败从正文里删掉了。细想也合理,这组去掉的只是历史里的推理内容,模型每轮还是重新推理,每一步该做什么已经被上一步的观测定死了。
  4. 缓存收益很明显。验收级这轮一共 22,847 tokens,14,592 个命中前缀缓存,大约 64%。多轮工具调用的场景里这个比例不小。

其他实验为什么没做

第一章还有 1-2(联网搜索)、1-3(搜索加代码执行)、1-4(文生图对照)和 learning-from-experience。1-2 必须用 Moonshot Kimi 的托管搜索,1-3 要 Responses API 的托管 web_search 和沙箱,1-4 要文生图 API。我手头只有 DeepSeek 和 OpenRouter 的 Key,这几个暂时做不了,不是环境问题,后面拿到对应 Key 再补。

心得

跑之前我以为消融就是走个流程,跑完发现差异比想象的大,尤其是隐藏工具结果那组,模型补数字的时候完全不犹豫。上下文里每个组件都有它存在的理由,这算是给 ch2 的上下文工程提前建立了一个直观的抓手。

posted @ 2026-09-13 21:24  WCMS868  阅读(12)  评论(0)    收藏  举报