跳到主要内容

自主的价码 — 认知架构四级阶梯

这一章讲三件事: 为什么说「用什么架构」比「用什么组件」更要紧; 从纯代码到路由器的四级阶梯各自把多少决定权交给了模型; 以及贯穿全书下半场的那杆秤——自主性(agency)换可靠性(reliability)。 读完你会得到一个可复用的决策框架:给应用下规格时,先数清楚有几件事你愿意让模型说了算。

1. 先看现象:同样的积木,泳池和房子

单次调用会写了,检索会接了,记忆也挂上了——然后呢?

作者的比喻直接:泳池和单层住宅用的是同一种砖,差别在施工图纸1。 放到 LLM 应用上,图纸就是一句问话:这些能力(RAG、提示技巧、记忆)按什么顺序、 在什么条件下组合起来,才能达成你要的那个目的?

作者用了一个假想项目把问题具体化——邮件助手:替你预读邮件, 该归档的归档、能代回的代回、要紧的标出来2。做之前先谈两条硬约束:

  1. 尽量少打扰你(省时间本来就是目的);
  2. 绝不发出一封你自己不会写的回信。

两条同时成立的难度立刻暴露了一个两难,这就是本章的秤: 自主性(agency,无人干预自行行动的能力)越高越省心, 可靠性(reliability,你可信任其输出的程度)却随之塌方。 往天平的自主端再推一步,代价不是匀速上涨而是事故形态升级——从「归档错了」变成「替你丢人」。

2. 顶层全景:四级阶梯与三级放权

放权程度 应用形态 模型负责什么
─────────────────────────────────────────────────────
第 0 级 纯代码 什么都不管(不含 LLM)
第 1 级 单次调用 ▲ 低 这一步的文字内容
第 2 级 链 chain 每一步的内容(步序仍由代码定死)
第 3 级 路由器 router 该走哪条岔路
(下一级) agent 循环 ▼ 高 要不要继续、何时停 ← 下一章登场

图说:每上一级,就把一件「人的决定」改判给模型;
可靠性沿箭头方向单调递减——这是买来的,不是送的。

「这东西归谁决定」可以细分成三个档位3:让模型决定某一步的输出内容 (比如起草回信);让模型决定下一步做什么(归档还是回复还是标记); 最激进的档位是让模型决定有哪些步骤可选(自己写代码发明新动作)。 每个候选架构都能在这条光谱上找到自己的座位。

「认知架构」这个词来历也要交代:它原是 AI 领域里「模拟人类如何思考」的模型的专名, 被挪用到 LLM 上首见于一篇语言 agent 综述论文(书中注明了出处)4; 本书给它下的定义朴素实用:一份关于 LLM 应用该走哪些步骤的配方

3. 核心原理:逐级看每一档怎么转

3.1 第 0 与第 1 级:没有 LLM,和只有一次 LLM

第 0 级就是普通软件,不多说。

第 1 级(单次调用)看着寒酸,却是产品世界最常见的形态:笔记软件里的一键摘要、翻译按钮, 或者一个简单的自然语言转 SQL 输入框——一次调用交差5。 它的定位是组件而非产品骨架,但「简单」本身就是它的可靠性优势。

3.2 第 2 级:链(chain),固定顺序的多步

链 = 多次 LLM 调用排成一条由开发者写死的流水线,每次运行走的都是同一串步骤6

标准例子还是 text-to-SQL,但这次把它升级成两个节点: 第一个节点(低温模型)把自然语言翻成 SQL;第二个节点(高温模型)为非技术用户解释这句 SQL 干了什么, 好让人确认查询是否符合本意7。跑一遍真实输入「What is the total sales for each product?」, 书中实拍输出两级台阶:

{ "sql_query": "SELECT product_name, SUM(sales_amount) ... GROUP BY product_name;",
"sql_explanation": "This query will retrieve the total sales for each product by summing up..." }

第一段像机器写的,第二段像同事转述给你的——同一份数据经过两种「人格」8

这里藏着两个值得偷走的设计。其一,按任务配温度:生成 SQL 的调用拧到 0.1(求准), 生成解释的调用放到 0.7(求顺)——温度不是全局常量,而是每个节点的局部参数9。 其二,输入与输出 schema 分开声明:用户只提交 user_query、只收回 SQL 和解释, 中间状态(messages 对话史等)只在流式过程中可见、不出现在最终返回里10。 「对外的承诺面」和「内部的脚手架」就此分离。

3.3 第 3 级:路由器(router),把岔路口交给模型

链的死穴是每逢运行必走全程。而很多场景的真实需求是二选一: 这本书里的例子是多索引检索——病历库和保险问答库各存一摊,问题来了该查哪边?11

路由器架构 = 一个路由节点 + 若干业务节点,岔路选择交给模型: 路由节点拿用户问题和各库简介,低温输出一个域名(recordsinsurance), 条件边(conditional edge)函数再把域名翻译成下一个节点的名字12

LLM 出现之前的替代方案是什么?手搭训练集、手工设计衡量依据,再训一个传统分类器。 作者特意写了一小节对比:分类器路线要求人工拼样例、手工设计衡量尺度——行话叫特征(feature)工程——两大苦役, 而 LLM 凭着对语言的先天理解,几乎不用给例子就能顶上班13——这个对比解释了为什么 「让 LLM 当门卫」会在两年内成为默认做法。

走查①:跟着流式输出走进岔路

用「Am I covered for COVID-19 treatment?」(我打新冠疫苗包不报销?)实测整张图, stream 吐出三块,全部照录自原书14:

第 1 块 { "router": { "domain": "insurance",
"messages": [用户问题, AIMessage("insurance")] } }
→ 门卫拍板:保险库。顺带把问答史写进了账本(下一轮继续聊时有据可查)

第 2 块 { "retrieve_insurance_faqs": { "documents": [...] } }
→ 条件边依据 domain 把执行流拨到了保险分支,检索返回了文档

第 3 块 { "generate_answer": { "answer": "...", "messages": AIMessage(...) } }
→ 选用保险人设的系统提示,带着文档作答

图说:三次块输出的顶层键连起来,就是你此刻走过的路径——
「L 形」轨迹证明模型真的选择了右岔,而不是直通终点。

值得盯住的是那个并非铁律的设计:两条检索支路最后汇合进同一个 generate_answer 节点, 该节点内部还要再按域名切换 system prompt。书的用法是把「提问口吻」的差异留在末梢统一处理—— 这不是唯一写法,但保持了「决策一处、复用共享」的结构洁癖15

4. 作者的判断与证据

  • agency-reliability 的取舍是全书下半场的总纲,作者在第 9 章还会回到它并把曲线画成前沿图。 本章给出的形态是直觉论证(邮件助手的思想实验)+ 阶梯式分类,不含量化评测16
  • Perplexity、Arc Search 两个产品名作为「多角色协作出成果」的例证出现17, 属于举例而非论证;产品实现细节书未展开。
  • 小结句值得一提:「应用越自主,就越需要控制其行动的机制」18—— 作者先把价目表钉在这章,后面三章都是付账方式。

判断(我们的,不是书里的): 本章最有迁移价值的不是四个名词,而是「双温度」这个手法—— 把「求准的任务」与「求顺的任务」放进同一条链的不同位置分别调参,等于承认一条链内部 本质上是异质工序的串联。任何多步流水线(抽取→整理成文)都适用同一思路。 如果错,会错在: 若下游表达任务其实强依赖上游的严格格式(如机器可读的中间结果), 高温就会污染接口,此时应反过来全线低温。

5. 边界与局限

  • 阶梯只有四级,而且止步于单向评估:现实系统常见「链中嵌套子路由」「路由后仍分叉成链」, 组合形态书中留白(子图机制要到第 8 章才介绍)。
  • email 助手从头到尾只是思想实验,没有对应实现或测评;用它推出的一般原则需要读者自行落地验证。
  • 「自主升一级可靠性掉一档」是有方向的无标度论断,没有给出数量关系—— 多可靠算可靠、快多少算快,测量口径要到第 11 章(测试)才露面。
  • 结构化输出的路由在本章以 Literal 类型演示;若候选源很多(几十个库), prompt 里把候选一个个写死本身会成为新的瓶颈,书中未讨论。

6. 可带走的

  1. 先谈约束,再定架构:列出「绝不能发生的事」,再决定敢放多少权——顺序不能反;
  2. 四级阶梯自查法:你的应用有几个分叉点?每个分叉点上的决定,是你写死还是模型现场拍板?
  3. 单次调用并不可耻:Notion 式摘要/翻译功能就该是一级形态,配得上任务难度的架构才是好架构;
  4. 链式流水线的两个红利:双温度分工(准确位低温、表达位高温)、内外 schema 分离;
  5. 路由器的本质是把 if-else 写成自然语言,换来的是不必预先写死所有问法;
  6. 让 LLM 当分类器前,想想十年前的对照:手标数据+特征工程——这次是真的便宜了很多;
  7. 看 stream 输出的顶层键名序列即可还原运行路径,调试架构图的免费仪表盘;
  8. 记住这杆秤的名字:agency ↔ reliability,后面第 9 章的全部工具都在试图改写这条兑换率。

7. 原文地图

主题原书章原文位置
泳池与房子的比喻Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:13(搜「swimming pool」)
email 助手设定与两约束Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:15(搜「email assistant」) · text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:19(搜「Minimize the number of times」)
agency-reliability 权衡定义Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:23(搜「trade-off between agency」)
三级放权光谱Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:25(搜「degree of autonomy」)
cognitive architecture 词源与定义Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:33(搜「models of human reasoning」)
四级架构总清单Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:39(搜「Code」)
单次调用产品实例Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:178(搜「summarize and translate」)
chain 定义与 flow engineering 别名Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:184(搜「predefined sequence」) · text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:186(搜「flow engineering」)
双温度注释Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:213(搜「model_low_temp」)
text-to-SQL 实测输出Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:361(搜「SUM(sales_amount)」)
Input/Output schema 分离Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:370(搜「separate input and output schemas」)
router 定义与链的对立面Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:374(搜「choose between certain predefined steps」)
手训分类器对照Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:380(搜「classifier model using ML techniques」)
路由流程三步文字版Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:59(搜「pick which of the available indexes」)
路由节点提示词Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:441(搜「which domain to route」)
pick_retriever 条件边函数Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:461(搜「pick_retriever」)
共享 generate_answer 与按域切提示Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:492(搜「generate_answer」)
条件边虚线解释Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:661(搜「dotted lines」)
COVID 流式走查三块Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:668(搜「Am I covered」) · text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:422(搜「insurance」) · text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:463(搜「retrieve_insurance_faqs」)
三块逐一解读Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:707(搜「one at a time」)
权衡小结与 agent 预告Chapter 5text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:719(搜「agency versus oversight」)

Footnotes

  1. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 13 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:13,搜「bricks and mortar」)。

  2. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 15 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:15,搜「email assistant」)。约束原文在第 19–21 段。

  3. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 25–31 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:27,搜「output of a step」)。

  4. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 33 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:33,搜「to our knowledge, in a paper」);论文即该页脚注 1(Sumers 等《Cognitive Architectures for Language Agents》,2023,text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:723,搜「Cognitive Architectures for Language Agents」)。

  5. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 176–181 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:178,搜「summarize and translate」)。

  6. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 184 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:184,搜「same sequence of LLM calls」)。

  7. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 49–53 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:51,搜「One LLM call to generate a SQL query」);分工动机(便于核对)在第 53 段。

  8. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 358–366 段,输出实拍在第 360–366 行(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:361,搜「sales_amount」);运转解读在第 368 段。

  9. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 213–215 行的行内注释(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:213,搜「model_low_temp」):# useful to generate SQL query# useful to generate natural language outputs

  10. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 265 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:265,搜「input=Input, output=Output」)。

  11. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 57–63 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:57,搜「multiple indexes」)与动机(prompt 混入无关信息拖累表现)在第 376 段(搜「avoiding the inclusion of irrelevant information」)。

  12. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 451–467 段(路由节点第 451 行起,pick_retriever 在第 461–467 行);条件边图示说明在第 661 段(搜「conditional edge」)。

  13. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 380–386 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:382,搜「Assembling that dataset by hand」)。

  14. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 663–706 段,三块输出依次在第 684、693、698 段(搜「insurance」);逐步解读在第 709–716 段。

  15. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 492–502 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:492,搜「generate_answer」)。「结构洁癖」为本拆解的概括,非原文措辞。

  16. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 23 段(搜「intuitively」)——作者明言此为直觉层面论证。

  17. 出处:「Chapter 4. Using LangGraph to Add Memory to Your Chatbot」第 107 段(text/07-ch04-chapter-4-using-langgraph-to-add-memory-to-your-.txt:107,搜「Perplexity」)。原书在 LangGraph 介绍章举此二例,本章转引。

  18. 出处:「Chapter 5. Cognitive Architectures with LangGraph」第 719 段(text/08-ch05-chapter-5-cognitive-architectures-with-langgraph.txt:719,搜「raises the need for more mechanisms of control」)。