L00 练习
练习 1:用三遍读法读一篇 Agent 论文(方法练习)
选一篇课程未细读的 Agent 前沿论文(推荐:Generative Agents, Park et al. 2023, arXiv:2304.03442),按三遍读法产出一份笔记:
- 第一遍(5 分钟):用一句话说它解决了什么问题、什么方法、结果好不好。
- 第二遍(30 分钟):画出它的核心组件图(输入→处理→输出,组件间怎么协作)。
- 第三遍(复现意图):写出「最小复现计划」——核心 idea 是什么、最小实现需要哪些组件、消融实验怎么做(去掉哪个组件看掉多少)。
验收:笔记里第三遍的「最小复现计划」要具体到能照着写代码(不是「实现一个 agent」,而是「while 循环 + 反思生成 + 注入重试 prompt」这种粒度)。
练习 2:设计实验验证「失忆的代价」(设计实验类)
本课的裸基线证明了 research-assistant 第 2 次运行完全失忆。但「失忆」到底有多大代价?设计一个实验量化它:
- 假设:失忆导致的代价 = 重复劳动(同样子问题再查一遍)+ 无增量(不能在第 1 次基础上深化)。
- 实验设计:
- 定义「重复劳动率」= 第 2 次的子问题与第 1 次重叠的比例(改
code.py的compare_runs,精确计算子问题文本相似度而非只是判等)。 - 定义「增量价值」= 第 2 次产出中,第 1 次没有的新信息占比。 - 跑 3 个不同主题,看失忆代价是否稳定。 - 预期:重复劳动率接近 100%(因为 split 是确定性的),增量价值接近 0。
验收:修改 code.py,输出包含「重复劳动率」和「增量价值」两个量化指标的对比表。诚实标注这是 mock 演示数字还是真实数字。
提示:文本相似度怎么算
不调 embedding API(本课还没到 L01)。用最简单的字符级 Jaccard 相似度:
def jaccard(a: str, b: str) -> float:
sa, sb = set(a), set(b)
return len(sa & sb) / len(sa | sb) if (sa | sb) else 0
够粗糙,但演示「失忆导致重复」这个结构性问题够用。L01 会换成 embedding。
练习 3:拆一个你正在用的库的源码(方法练习)
仿照本课拆 LangGraph Checkpointer 的方式,拆一个你在前五门课里用过但从没看进去的库/模块。候选:
langchain_community.chat_models.ChatZhipuAI的invoke到底怎么把请求发给智谱 API(追到 HTTP 层)。chromadb的collection.query内部怎么算余弦相似度(追到距离计算)。langgraph.types.Send怎么触发并行 fan-out(追到图的执行器)。
产出:一段 200 字以内的拆解笔记,包含:①它存/处理的核心数据结构是什么 ②它的边界(不能做什么)是什么 ③这个边界对应你要补的什么能力。
验收:笔记要能让人不看源码也知道「这东西内部大概长什么样、哪里是它的天花板」。