数据截至 (上游 commit c80d325ec761)
LangGraph 智能体策略(~95% SimpleQA 的那条)
30 秒导读: 这是 LDR 招牌的「自主 agent」检索策略。它不像流水线那样按固定步数迭代,而是把一个基于 LangChain
create_agent的工具调用 agent 放出去,让 LLM 自己决定搜什么词、用哪个专用引擎、要不要抓 全文、要不要把难题拆成子问题丢给并行子 agent、以及何时收尾合成。招牌指标(SimpleQA ~95%)就是这条策略跑出来的。
本章聚焦三件事:agent 自主决策 + 子 agent 并行 + 工具化检索。两阶段检索机制见 02;引用合成与报告的通用部分见 04;默认的 source-based 流水线骨架见 01。
1. 这是什么(和流水线策略比,差在哪)
一句话定义: 一个让 LLM 用工具「自己找答案」的研究策略——你给它一个问题,它自主地搜、读、拆、合,直到觉得够了才写报告。
它解决什么问题。 流水线式策略(01 的默认 source-based)把研究写死成固定节拍:生成问题 → 搜索 → 过滤 → 再迭代 N 轮。这套稳,但不会随问题难度伸缩——简单事实题也走满流程,复杂多跳题又可能轮数不够。agentic 策略把「下一步做什么」这个决策从代码里挪到 LLM 里。
本质差异(这是本章的题眼)。 同样是「多轮检索」,两者谁在做决策完全不同:
| 维度 | 流水线策略(01) | LangGraph agent 策略(本章) |
|---|---|---|
| 下一步搜什么 | 代码按模板生成子问题 | LLM 看着已有结果自己想 |
| 用哪个引擎 | 策略固定选定 | LLM 从工具清单里挑(web / arXiv / PubMed…) |
| 迭代几轮 | 固定 iterations(通常 1-5) | LLM 自己决定,上限是递归限而非轮数 |
| 何时抓全文 | 规则触发 | LLM 判断「snippet 不够」时调 fetch_content |
| 拆子问题 | 无 / 固定分解 | LLM 调 research_subtopic 派并行子 agent |
| 何时收尾 | 跑满轮数 | LLM「觉得够了」就直接写答案 |
用源码里的话说,它「替换掉 MCP 策略里那个手写的 ReAct 循环」——决策不再是 while 循环里的 if/else,而是 agent 每一步的一次 LLM 调用(langgraph_agent_strategy.py:476-482,类 docstring)。
一句话直觉。 流水线像自动化流水线:工位、顺序、节拍都排死。agent 像派一个实习研究员进图书馆:你只说「搞清楚这个问题」,他自己决定先查哪个数据库、要不要复印全文、要不要喊几个同事分头查,查够了回来交报告。本章讲的就是这个「实习研究员」的骨架、它的工具箱、以及它喊来的「同事」怎么并行还不打架。
为什么每个 iteration 需要更多轮。 对流水线,一次 iteration 是一整轮搜索;对 agent,一次 iteration 只是一个 LLM→工具的来回。所以两者的迭代常量量级差一个数(下面 §3 讲)。