🐦 第1章 智能体概述
📄 一句话概括

同一句话,交给同一个模型,「它劝你带伞」和「它查完天气再告诉你带伞」是两码事。 界线不在回答得多好,在下一步由谁决定:提示词写死,还是上一步的结果说了算。 这一节把这条线划出来,也顺手划出另一半——哪些活根本不该做成 Agent。

📝 本章和前面几章的关系

这是全书第一章,也是唯一一章没有平台可点的。 后面十五章里的节点、插件、知识库、数据库,全是在给这一节那个循环添零件。 所以先别急着学怎么点。先把「什么值得做成 Agent」想清楚—— 想不清楚的人,后面每学一个功能都想往项目里塞,最后做出来的是个什么都能干、什么都不准的东西。

一、同一句话,两种回应

你说:明天去宜昌出差,帮我看看要不要带伞。 第一种回应——宜昌十月多雨,建议随身带伞,注意早晚温差,山区路段湿滑。 这话挑不出毛病,读着还挺贴心。但它没查任何东西,全是「十月」「山区」这些词带来的联想。

第二种回应——查了明天宜昌:小雨,12 到 18 度,降水概率八成。带伞,另加一件薄外套。 附查询时间:今晚八点。 两段话都是模型写的,用的可能是同一个模型。差别只在中间那一次查询。 谁发起了这次查询? 不是模型自己想起来,是外面那层架子规定的:回答这类问题之前,先去查一下。

二、分界线:下一步由谁定

一问一答里,下一步是提示词定的。你写「请给出答案」,它写完就输出,没有第二个动作。 Agent 里,下一步是当前状态定的:查到了没有、校验过了没有、目标达成了没有。 演示里同一个排序任务走了两条路。一问一答一次给完,把「12 年」读成了「1 年」; 循环三步,第一步就自己发现 5 排在 12 前面。

注意,这并不说明 Agent 更聪明。 第二轮用的模型和第一轮一模一样,值钱的不是智商, 是它多了「回头看一眼」这个动作。 所以判断一个东西是不是 Agent,只看一句话:它下一步做什么,是不是上一步的结果说了算。 按这条尺子量,很多号称智能体的东西其实是个套了壳的问答:提示词里写「请一步步思考」,看着像在规划, 实际上还是写完就交,中间没有第二个动作。

三、三个信号:这活值得做成 Agent

第一个信号,会错。任务有歧义、数据脏、格式乱,一次做对的概率本来就不高。 第二个信号,错了能看出来。有校验手段:跑测试、查格式、跟源数据对一遍、让用户点确认。 第三个信号,看出来能再试。重做一次的成本低,而且重做不会污染别的东西。

三条缺一条,做 Agent 都是亏的。 缺第二条最危险——它错了你不知道,等发现的时候已经发出去五十条消息了。 反过来看那个查天气的例子:它满足三条。 会错(可能查错城市)、错了能看出来(日期和地名一核就露)、能再试(再查一次而已)。 所以这类活值得做成 Agent。

四、反过来说:这三种别做

答案唯一且能算的。 日期差、金额汇总、字符串拼接。 代码节点两行的事,让模型算是拿概率工具做确定性工作,慢、贵,还可能差那么一点点。 每次都一模一样的。 固定格式的周报、固定话术的回复。 工作流比 Agent 稳,还便宜——它不会今天多问一句、明天少问一句。 错了没法发现的。 给领导的结论、对外发布的数字。你自己都验不了,就不该让它自己跑完。

这三条不是「Agent 做不到」,是「用了更贵、更慢、更容易错」。 做技术的容易犯的毛病,是把能做的都做了,而不是把该做的做好。

五、Agent 不是更聪明的模型

这一点最反直觉,也最省钱:同一个模型,套上架子能办事,不套只能说话。 架子这一圈里,没有一行是「让它更聪明」的。 全是些笨东西:规定先干什么后干什么、允许它碰哪些东西、干完谁来检查、什么时候强制收工。 后面十五章讲的都是这圈架子。拆步骤、接工具、喂资料、拦住它、把它打包发给同事,没有一样是在改模型。

学到最后你会发现,难的从来不是让模型变强,是让它在该停的时候停、在该问的时候问。这两件事, 模型自己做不到,得靠外面那圈架子。

六、动手 Demo:三份简历,两种排序

造三份简历,按工作年限从高到低排。 先走一问一答:三行全塞进去,一次给答案。再走一个三步循环:每一步都看上一轮的结果。

data = [('张三', 5), ('李四', 12), ('王五', 3)]

# 一问一答:一次给完,它抓年限但只读了第一位
one = sorted(data, key=lambda x: -int(str(x[1])[0]))
print([n for n, _ in one])

# Agent:三步,下一步看上一轮的结果
order = [n for n, _ in data]
for turn in range(1, 4):
    yrs = [dict(data)[x] for x in order]
    if all(yrs[i] >= yrs[i+1] for i in range(len(yrs) - 1)):
        print(turn, '校验通过,停', order)
        break
    order = [n for n, _ in sorted(data, key=lambda x: -x[1])]
    print(turn, '按年限重排', order)

实跑输出:

--------------------------------------------------------------------
同一件事,两种做法:一问一答与循环
--------------------------------------------------------------------


  ① 一问一答:把三份简历全塞进去,让它一次给出顺序
  --------------------------------------------------------------------
  塞进去的是 96 个字符,87 个 token(按中文 1.6 字一个粗算)。
  这一步只调用一次。它必须在一口气里同时干完三件事:读懂三行、找出年限、比大小。
  一次给出:张三 > 王五 > 李四
  正确答案该是:李四(12)> 张三(5)> 王五(3)。
  这次它把「12 年」读成了「1 年」——只取了第一位数字,李四就掉到了最后。
  ! 错在哪一步?看不出来。它只给了结果,没给过程。

  ② Agent:拆成三步,每一步都能停下来看一眼
  --------------------------------------------------------------------

| 轮 | 做了什么 | 看到了什么 |
|---:|---|---|
| 1 | 按原名单校验 | 年限 5/12/3,第 1 个就比第 2 个小 |
| 2 | 按年限重排 | 李四 > 张三 > 王五 |
| 3 | 校验通过,停 | 李四 > 张三 > 王五 |

  三步:第一步它就自己发现不对(5 排在 12 前面),第二步改,第三步确认改过来了。
  一问一答缺的正是这两下:它没有「回头看一眼」这个动作,也没有「再来一次」这个时机。
  ! 两边的差别不在答案好不好,在下一步由谁定:一边由提示词写死,一边由当前状态决定。

  ③ 把差别算成一笔账
  --------------------------------------------------------------------

| 做法 | 调用次数 | 下一步由谁定 | 能自我纠正 | 出错能定位 |
|---|---|---|---|---|
| 一问一答 | 1 次 | 提示词写死:读完就答 | 不能 | 看不出来 |
| Agent | 3 次 | 当前状态:校验没过就重排 | 能(第 1 步就发现) | 每一步都有记录 |

  次数是它的 3 倍,换来的是「出错能定位」和「能自己改」。
  这就是全书的取舍起点:凡是只跑一次就完的,别做 Agent;
  凡是会错、错了能看出、看出来了还能再试一次的,才值得做 Agent。

①第一段是输入。九十六个字符、八十七个 token,一次调用就能塞下。 它得在一口气里同时干完三件事:读懂三行、找出年限、比大小。 ②它给出「张三 > 王五 > 李四」。表面看像模像样,实际把十二读成了一。 这类错在真机上极常见,而且看起来非常像对的——没有一个字是胡说的。 ③循环那张表只有三步。第一次校验就发现不对,第二次重排,第三次确认。 每一步的输入都是上一步的输出,这就是「下一步由状态定」。 ④第三张表把账算清:一次变三次,多付两倍,换来「能发现」和「能改」。 这笔买卖划不划算,取决于错了以后谁承担——自己看一眼就行的,不值;发给客户的,很值。 ⑤最后那一列「下一步由谁定」才是本节要记住的东西。 同样是三次调用,如果三次都在跑同一段提示词,它仍然不是 Agent。

30 秒实验

  1. 把你手上最常做的一件重复工作,按「会错、能发现、能重试」打三个勾。缺一个就别做 Agent。
  2. 找一个你现在用 AI 做的事,问一句:它下一步做什么,是提示词定的还是结果定的。
  3. 把演示里三份简历换成四份,其中一份年限写成「十二年」。想想你会怎么改校验。

常见误区

  1. 「Agent 就是加了工具的模型。」工具只是四件之一。没有目标它不知道停,没有循环它只走一步。
  2. 「模型越大 Agent 越强。」模型决定单步质量,架子决定能不能走到终点。 演示里那个排序错,换个更贵的模型也未必躲得过。
  3. 「先做出来再想边界。」有副作用的 Agent——发消息、下单、删数据——必须先把边界定死。 错了收不回来的事,不能靠事后补。
自测三问(点开对答案) 1. 怎么一眼看出一个东西是不是 Agent? —— 看它下一步做什么由谁决定。提示词写死的是一次性回答,上一步结果说了算的才是 Agent。 2. 哪三个信号说明这活值得做成 Agent? —— 会错、错了能看出来、看出来能再试。缺第二条最危险——它错了你不知道。 3. 为什么「把这张表第三列求和」不该交给模型? —— 答案唯一且能算。让模型算是拿概率工具做确定性工作,慢、贵,还可能跟真值差一点。

分界线划完了,下一个问题是:一个 Agent 到底由哪几件东西拼成。 下一节把这四件摆出来,再一件一件拿掉,看每一件缺了会出什么事。

相关笔记