Packet Tracer,但用于智能体
人人都在造智能体。没有人看见它们。
我有一支小小的智能体团队为我工作。他们准备、写代码、互相复核、测试。几个月来他们一直在交谈。成千上万条消息。数百对彼此对话的智能体。一切都整齐地排在行与列里。
而这正是问题所在。我能读到某条消息被拒绝了。我却看不见它。
在表格第4 812行读到"已拒绝",什么也学不到。感觉不到工作停在了哪里。看不出同一个智能体每次都拒绝同一样东西。表格藏起了对话的形状。
这个想法来自 Packet Tracer
如果你学过网络,就用过 Packet Tracer。把机器放在页面上,在它们之间拉线,按下播放,小小的信封就沿着线路滑下去。有一个掉落时,你看得见它掉落。
从那以后,再没有人需要向你解释什么是网络。你已经亲眼看过了。
我沿用了同样的对应关系:
一根线变成一对互相对话的智能体
一个信封变成一条消息
一个丢失的信封变成一次拒绝,附带它的原因
整幅图就是这样。里面再没有别的。
它长什么样
只有一个页面。在浏览器里打开,它就自己动起来:准备者、编写者、复核者、测试者之间的一段示例对话,一个信封接一个信封地展开。
每个智能体是一个方框。每条消息是一个从一个方框滑向另一个方框的信封。绿色信封:门说了"是",工作通过。红色信封:门拒绝了,原因写在屏幕上。
可以暂停,可以一次前进一条消息,也可以点击日志里的一行跳到那个时刻。无需安装。无需下载。没有网络也能运行。
真正重要的:红色
大多数智能体仪表盘展示的是吞吐量。消耗了多少词,完成了多少任务,一条漂亮的、向上爬的绿色曲线。
那是故事里最不有趣的一半。
只会说"是"的智能体不是智能体。它是一根管子。你的系统变得值得信任的那一刻,就是它内部有什么东西有权说"不",然后告诉你为什么的那一刻。
所以,拒绝是屏幕上最醒目的东西。红色信封带着它的原因,而原因是完整写出来的:
这一行比一百行绿色更有价值。这是系统教给你东西的唯一地方。
我的办公桌上方贴着一句话:
如果你把日志放进去,一个红色也看不见,那并不意味着你的系统是安全的。那意味着这些日志里没有任何东西让你的检查真正工作过。没有红色什么也证明不了:这时就得去故意弄坏点什么,看看门会不会说"不"。
七个词
消息使用一套极小的词汇,借自机场的控制塔。在塔台里,管制员给出航向,飞行员在转向之前复述一遍。这种复述不是礼貌:它是在飞机动起来之前抓住误解的办法。
我的智能体也这样说话。给他们的词有七个,只有七个。你的智能体可以保留自己的词:下面这七个会被上色,其他的照样通过。
复述 — 明白,我用自己的话重复你的指令。
执行中 — 我正在做。
完成 — 做完了,这是证据。
拒绝 — 我不会做,原因在此。
受阻 — 我无法继续,拦住我的是这个。
不知道 — 我不清楚,能决定的是这个。
前四个很容易。后三个才是全部的价值。
"不知道"是我最喜欢的一个。说不出这句话的模型会编造一个答案来代替,而一个编造的答案,代价远远高于一个问题。所以这个词存在,它有自己的颜色,并且带着一个栏位,用来写下什么能作出决定。
把你自己的日志交给它
把文件拖到页面上。什么都不会被发送到任何地方:背后没有服务器,没有上传,没有隐藏的统计。文件在你的浏览器里被读取,并留在那里。
格式是故意做得乏味的。对每条消息:谁在说,对谁说,七个词中的哪一个,主题,以及有原因时的原因。
三件事让它容易采用。智能体清单是可选的:没有它,棋盘会根据消息里出现的名字自动重建。词是自由的:上面七个会被上色,其他的照样通过。原因是可选的,但它是你拥有的最珍贵的栏位——没有原因的拒绝,教不了任何人任何东西。
如果你的工具已经在写记录,转换只需二十行。
它从哪里来
这是一件更大东西的窗口:一座控制塔,一支智能体团队在有权说"不"的门后做真正的工作——自动检查、智能体之间的复核,以及对所有输出拥有最后决定权的人。
我把这扇窗单独拿出来,因为它被证明自己就有用。所以,把你自己的日志放进去,告诉我你看到了多少红色。如果答案是"一个也没有",那本身就已经是一个结果。