MultiAgent和Skills的一些对比

随着Agent产品的迭代,Agent能使用的工具会越来越多,这会导致ToolCall部分无上限地膨胀,进而导致成本上升和Agent能力下降。
在研发A酱的早期我们就发现了这个风险,分别尝试了MultiAgent和Anthropic的Skills方案来解决这个问题,在这里简单分享一下过程中踩过的一些坑。

MultiAgent

就是把Agent按照能力分类为多个子Agent,比如专门用于图像处理的Agent,专门用于管理Minecraft服务器的Agent。每个子Agent都有独立的上下文和System Prompt。

每个子Agent会有自己的一段功能描述,主Agent可以根据这段描述来选择调用哪个子Agent。

主Agent通过ToolCall的方式向子Agent发送指令,由子Agent完成具体的任务,并把执行结果返回给主Agent。

Skills

Anthropic的Skills方案采用的是单个上下文,渐进式披露。整个过程中只有一个Agent,一个上下文(最主要的区别点)

Agent能看到每个Skills的能力描述,根据能力描述来选择想要使用哪个Skills,然后就能通过ToolCall获取Skills里面具体的工具列表,并进一步调用这些工具。

比较

两种方案都对主Agent隐藏了部分工具的信息,这样即使图像处理模块扩张到了有100个工具,也不会导致主Agent的上下文膨胀。

MultiAgent的坑

但是实践下来,MultiAgent在现阶段坑比较多

一个最大的问题是:现阶段大模型信息传递的能力真的不足。一个真实的例子:
用户要求主Agent处理一张图片,但是主Agent没有把图片路径给到图像处理Agent,但是图像处理Agent也不向上反馈说没收到图片,就自顾自的生成了一张图片,完全背离了用户的原始请求,有时真的能把用户气死。

这个背后的原因感觉是在训练大模型时的导向就是让大模型尽可能快地完成任务,这就导致了即使缺少信息,大模型也不会主动提出,而是会进行各种尝试来完成任务。

我们也尝试过在Prompt层面解决这个问题,但是收效甚微

甚至考虑过使用“残差连接”的思路,直接开一条残差通道把用户原始输入导入到子Agent里,这种方法效果更糟

Skills

改成Skills之后,目前体验下来感觉好了很多,目前暂时没发现坑,还有待后续继续体验观察。

总结

不要相信大模型的信息传递能力,目前看起来信息只需要经过一级传递就可能完全失真。

一个好的Agent框架应该是尽可能避免信息丢失的框架。

2 个赞

很solid的评测!

不同的方法对比也算赛博斗兽场 :wink: 给你挪个板块~

其实subagent和skill都在claude code里被提出;skill确实比subagent更靠后提出

总的来说有subagent, skill, slash command这三种子任务调度方法(?

skill老实说我还没特别明白怎么用,和slash command有多少区别((

没怎么用过claude code,看网上资料的话,skill还能包含一些自己写的python脚本,功能会更丰富一些?

感觉claude code已经具备通用agent的能力了,这是好事呐 :grinning_face:

确实通用。我现在认为他最大的问题是效率不足:同样的事情要是我知道怎么做有一定的几率我能做得比它更快;
我认为根本原因一是智能不够,只能通过一点点交互试错排查,有时甚至智能不足以完成任务(时间需要无穷长(
二是交互不充分,agent从被交付任务的那一刻开始记时完成任务时间,而对于人类来说之前我已经花了一些时间了解了情况,我在交付agent任务的时候(agent任务计时开始)我其实可以直接开始修复(也就是说人类解决问题时了解问题情况的时间是不计入的),现在交互不足导致我得花相当一些时间告诉agent发生了什么,如何进一步调查,而agent也要花时间一点点明白情况,做出修复。

如jyy所说,agent现在已出现通用能力,甚至可能具备代替科研者,解决所有可解决问题的能力;但是这并没有考虑到时间成本:agent可能效率低下,而好的研究者(解决问题的人)能更快的解决问题(智能更高)

1 个赞

然而它现在确实具备一定的多媒体感知能力,理解能力,OS层面几乎完全的交互能力(因为它能通过最有力的交互工具——shell来与OS交互),理论上给定足够的时间确实能通用地完成任务

对的,实践下来的体验和这个很类似,就是理想中的agent和实际的agent的差别有点大,理论上agent可以使用手里的工具解决某个问题,但是实际上它很难搜索到正确的执行路径(除非用户手动提示一下)

而且可靠性也是个问题,同一类问题让一个人类多次执行,基本上只要正确一次就能正确很多次(比如整理财务报表),但是现在agent的 pass^k 数据还是比较难看的,同一个任务都无法稳定执行,更别提把经验迁移到类似的任务了 :innocent:

1 个赞