L1/L2 你手搓了 ~250 行 harness。这一节用 LangChain create_agent 解决一个真实业务场景: 研究 agent 自动检索 + 多 subagent 并行 + 写报告。完成后能立刻判断"哪些事我手搓 30 行就够、哪些事必须借框架"。
建议先读《L2 / 加 4 件工程化 / trace / checkpoint / middleware / subagent》;如果你是跳读,至少先看本章索引与本页 TL;DR。
课程实操闭环,要求你把抽象真正写进代码与运行流程。
L1/L2 你手搓了 ~250 行 harness。这一节 用 LangChain create_agent 解决一个真实业务场景 : 研究 agent 自动检索 + 多 subagent 并行 + 写报告 。完成后能 立刻 判断" 哪些事我手搓 30 行就够、哪些事必须借框架 "。
先判断任务类型,再决定手搓 harness 还是借框架。
课程实操:可运行案例 + 官方 SDK / 仓库。
① multi-agent 并行: 5 个候选库要查, 串行 5 分钟 vs 并行 1 分钟——LangGraph parallel + reducer 一行搞定;
② checkpoint: 调研动辄 20 步, 中途崩了就废 5 美金——SqliteSaver 自动每步存;
③ interrupt: 用户中途说"第 3 个库不用查了, 加个 polars"——interrupt() 函数让 agent 优雅暂停 + 接受新指令;
④ structured state: 不只是 messages list, 还要 findings: dict[str, str] + citations: list[Source] 等结构化字段——TypedDict + reducer 给你强类型 state。
这四件事有任何一件单独存在, L2 自搓也行(你已经做出 checkpoint 了)。但四件同时, 自搓的边际成本爆炸——这才是 framework 的真价值。
每个 researcher 是独立 subgraph, 各自维护 messages + 搜索结果——父 graph 只看到 findings dict 这一个干净结果。这就是章 2-02 context engineering 在multi-agent 场景下的标准玩法。
下面是真实可跑的代码(基于 langchain v1.0+, langgraph 0.6.7+, 2026/04/22 抓取)。先装依赖:
$ uv pip install langchain langgraph "langchain-openai" "langchain-anthropic" "langchain-tavily" $ export TAVILY_API_KEY=tvly-... # 1000 次/月免费, tavily.com $ export ANTHROPIC_API_KEY=sk-... # 或 OPENAI_API_KEY
"""L3a · research agent: planner + N researchers (parallel) + writer. 基于 langchain v1.0 / langgraph 0.6.7 · ~120 行 · 含 checkpoint + interrupt.""" from typing import Annotated, TypedDict from operator import add from langchain.agents import create_agent from langchain_anthropic import ChatAnthropic from langchain_tavily import TavilySearch from