Critic

Anthropic的工程团队这周发了一篇博客,讲他们怎么设计长时间运行的agent系统。核心模式来自GAN:把干活的agent和评判的agent分开。他们叫generator-evaluator pattern。读完之后有两个东西特别有感触。

第一个是context anxiety。他们博客里直接提到了这个问题。context变长的时候,模型会开始急着收尾,像是能感觉到空间快用完了一样。我切到Claude Opus的1M context之后这个现象特别明显。模型明明有这么大的空间,但有时候还是表现得像快溢出了。可能是训练留下的老习惯吧。明明还早就开始试图收尾了。1M窗口是有帮助的,但这种焦虑感还是能从模型的行为里看出来。

第二个是self-evaluation。这个我很早就发现了:让模型给自己的工作打分,几乎每次都打得偏高。就算用代码强制执行评分标准,分数还是会往上漂。模型既是学生又是老师,而且是个很宽容的老师。

Anthropic的方案就是从GAN的思路来的。用一个独立的模型实例做evaluator,不让generator给自己打分。他们的系统里evaluator用Playwright像真实用户一样测试代码,点来点去看东西到底能不能用。关键就是critic必须和generator隔离开,有自己的context和自己的任务。

我在一个业余时间搞的side project上测了这个。借鉴了Karpathy的autoresearch模式,加上了这个harness的思路,放了一个隔离的"critic" subagent进去。critic独立运行,不和主agent共享context,唯一的工作就是找问题。

我把agent挂在那里跑了一晚上。第二天早上看结果,比之前4天的产出都好。

Anthropic的数据也印证了这个:单独跑一个agent花了$9,结果是坏的;用完整的harness花了$200,出来的是能用的应用。这个比例会随着token成本下降而缩小,而quality的差距只会随着模型越来越擅长当critic而越拉越大。

现在是agent的时代了。搞清楚怎么控制和协调agent的工作,这基本上就是当前最核心的问题。GAN pattern、autoresearch、critic subagent,这些都是早期的发现。后面肯定还会有很多。

下一步我要试的是把这些组合起来,加不止一个critic。不同的critic检查不同的维度,像是一个小型review panel而不是单个reviewer。

如果这条路走通了,我在做的产品能从这里面获得很大的提升。

Like
Comment
Share

Leave a comment

Your email address will not be published. Required fields are marked *