跳到主要内容

16-代码案例索引与改造练习

核对日期:2026-05-18
官方资料:JS overview https://docs.langchain.com/oss/javascript/langchain/overview;Tools https://docs.langchain.com/oss/javascript/langchain/tools;Structured output https://docs.langchain.com/oss/javascript/langchain/structured-output。

目标​

本章把 src/examples/ 和 src/projects/ 变成练习路径。每个练习都包含改哪里、为什么改、怎么验收,避免只“看懂”代码。

机制​

学习闭环:

读章节 -> 跑 example -> 修改一个行为 -> 加测试/eval -> 复盘失败

只运行不修改,学到的是 API 名字;修改并写验收,学到的是工程边界。

TypeScript 案例索引​

案例文件改造练习验收
Chat modelsrc/examples/01-chat-model.ts增加 token budget 估算输出包含预算
Toolssrc/examples/02-tools.ts增加缺权限调用ok=false
Agent dynamic toolssrc/examples/03-agent-dynamic-tools.ts按 role 暴露工具employee 无高风险工具
Structured outputsrc/examples/04-structured-output.ts增加非法枚举parse 失败
Memorysrc/examples/05-memory.ts增加删除记忆search 不再返回
RAGsrc/examples/06-rag.ts增加 chunkIdcitation 可定位 chunk
Guardrailssrc/examples/07-streaming-runtime-guardrails.ts增加输出过滤注入输入拒答

项目改造路径​

企业知识库 Agent​

  1. 增加 chunkId。
  2. 增加 refusalReason。
  3. 增加 10 条 eval cases。
  4. 把 keyword retrieval 抽象成 interface,后续可替换向量库。

个人学习助手​

  1. 增加 StudyEvent。
  2. 增加薄弱点记忆。
  3. 增加隐私过滤。
  4. 增加“低时间预算”计划模式。

多工具任务 Agent​

  1. 增加 tool risk metadata。
  2. 增加审批输入 hash。
  3. 增加 permanent error 不重试测试。
  4. 增加 audit log 导出。

Python 差异​

如果用 Python 重写这些练习,保持三件事一致:输入/输出 JSON shape、一组 eval cases、失败语义。API 名称可以不同,验收标准不能漂。

常见反模式​

反模式后果
只复制代码不写测试不知道改动是否有效
每个案例都接真实模型学习成本高,失败难定位
不做负例只能证明 happy path 能跑
改项目不更新 README下一个人不知道如何运行

完成标准​

  • 每个 example 至少改过一次。
  • 每个项目至少新增 2 条 eval。
  • npm run typecheck 通过。
  • npm test 通过。
  • npm run projects:eval 通过。
  • 能解释一次失败是怎么被 eval 捕获的。

练习任务​

  1. 从上表任选 3 个 example,完成改造并写测试。
  2. 把企业知识库 Agent eval 从 4 条扩到 10 条。
  3. 写一份失败复盘,使用 15-故障排查与反模式手册.md 的模板。