都说ai agent是未来,是行业落地,是AGI的关键。我一直在想agent和面向对象有什么区别?有什么是面向对象做不了,需要用agent的?
agent里大部分概念其实和面向对象是对应的,没有太多新东西。长期记忆对应数据库,短期记忆对应内存,action对应对象方法,状态和计划对应面向对象编程的各种if else就好,所谓目标,就是抽象层级高一些的方法就是。抽象层级高的方法,内部if else判断多写一些,调用抽象层级低的action,不和agent所谓ReAct效果一模一样吗?
如果你说区别在于plan是LLM做的,而if else是人脑做的,那么问题来了:你设计个系统,要不要做黑盒和白盒测试?白盒测试不就是验证LLM是不是按你设想的if else在制定plan? 边界测试时,是不是就是在测plan会不会自动调整,和测边界情况的if else有什么不同?甚至不到测试阶段,你写action时就已经人脑想好了各种if else,各种plan了,对吧?也就是说,就算有LLM做plan,但人脑做plan的工作还是省不掉!工作量一点也没少啊!
更严重的问题是:如果ReAct的plan只有一两步,那么还不如直接调action,LLM生成plan简直多此一举;而如果ReAct生成的plan很复杂,有很多步,还有各种边界情况可能不停调整plan,虽然LLM的价值看似大了一些,但因为LLM function calling的准确性问题,哪怕90%的准确率,但多轮step下来,整个plan的准确率会直线下滑,还不如传统编程多写几个if else可控。
multi-agent看似很棒,但其实多agent合作和多对象合作有什么区别?多step的准确性问题不解决,越多agent越不可靠吧。
基本上,agent能做的事情,面向对象都能做,甚至做得更好。agent的王牌是ReAct,输入目标,LLM自动生成plan,代替人脑写if else。agent如果要想立足,真正取代if else硬编码,那么两件事很关键:
补短 — LLM变得更聪明,prompt引导写得再详细清晰一点,从而提高多step的plan的成功率。
扬长 — 1、action写得很丰富,最好高抽象层级和低抽象层级的action都写上。然后充分发挥“用户输入目标,LLM自动生成plan的优势”,把agent内部想象成一个乐高积木,积木越多,越可能搭出各种有趣的成品。action就是积木,LLM就是搭积木的人,而用户尽管提需求。step越意外,agent越强大。产品内测时,就让产品和测试放飞了去提需求,agent越耐燥越好。
2、agent的另一个优势是多模交互和nlp。不同于传统的GUI交互,用户只能点击有限的按钮,触发预设好的step。多模交互和nlp,可以支持用户以更丰富更自由的形式去提需求,配合1中提到的丰富action、聪明的LLM自动生成plan,agent的威力就能最大化了。
agent的潜力暂时还没被发掘出来,最佳实践有待市场先驱们多多努力,打造些成功案例出来。LLM只是起点,agent才是完成形态,我们需要更多聪明脑袋投入进来,早日树立标杆引爆市场。agent火了,从“互联网+”时代才真正交棒到“AI+ ”时代。