虽然基于LLM的Agent业内已有很多优秀的开源项目,甚至是开发框架,但大都还局限在Assistant的范畴,也就是“它们”被设计为人类的副手,执行人类的指令,而不擅长自己产生“想法”【这里的“想法”不是指为执行任务的self-plan机制】。
我们并不否认Assistant的价值,事实上Assistant的应用范围确实很广,但是依然有很多场景我们是需要bot具有类似人脑这种较为“感性”、会偶尔“灵光一现”的决策机制。
这些典型的场景可以举例如下:
- 数字演员,尤其是互动类体验的演员,如“剧本杀”;
- 销售/BD机器人,既能根据业务资料对客户答疑解惑,又能“坚持己见”,有效说服客户,促成合作;
- 社交网络博主,可以自主使用各类AIGC工具,在各类社交平台(如小红书、微博、知乎等)进行创作与发布,并与粉丝互动
……
目前我们已经初步实现了具有自主人设的角色扮演对话流程,并在实际项目中落地应用,效果详见如下demo:
该流程采用了全新的框架构思,将多个拒答策略封装成function,并直接利用LLM的function_call能力,每次对话只需调用一次LLM并无需向量模型(所以也不需要搜集拒答sample)。
上面demo中人物的记忆资料很短,实际上可以直接拼接到prompt中。 下一步的开发计划 6FC8 可以支持更庞大的记忆资料,甚至是多来源的记忆资料,这在销售/BD机器人、数字演员场景中非常有价值。
我们的初步想法是,将不同来源的记忆召回流程封装成独立的function, 然后统一纳入目前的function_call架构。
这有点类似人脑的记忆机制,想想看,你并不会在与女朋友讨论晚上吃什么的时候刻意回忆公司的产品手册……
不过另一方面,也确实有可能你在跟女朋友共进晚餐的时候,想到了什么工作上的灵感,所以除了回忆外,我们还需要定期对经历进行反思。目前设想这个反思功能也会做成一个独立的function。
随着function的增加,考虑到这些function特有的调用逻辑,我们可能需要微调专用版本的模型(召唤有微调实战经验的同学加入!)
我们相信,类似人脑的决策机制一定来自其内部多个Agent的“社会性竞争”(该思路来自马文明斯基的《心智社会》),所以最终awada架构也一定是 multi-agents 模式,但可能这与目前流行的“斯坦福小镇”模式有所不同。
具体而言,这些Agents首先是有级别的,上级Agent可以调用并支配下级Agent,并且会有很多层级,而最底层的Agent会调用最直接的function,这些function可能基于LLM,也可能就是固定的编码workflow。
其次,层级是固定的(也就是某个Agent属于哪个层级这是确定的),但是调用关系是不固定的,上级Agent需要通过与平级的Agent进行“竞争”,才能获得下级Agent的调用权限。并且这个竞争是动态的,具体而言,类似人脑,激活的Agent会默认的向平级Agent散发“抑制剂”,但同时也会因为合作需要,主动激活其他Agent。
(一个有趣的例子,假如“运动”是一个Agent,那么在它处于激活状态时会压抑平级的其他Agent,如“吃饭”、“喝水”等,但是经过一段时间,“运动”会发现能量不足,这个时候它又不得不激活“吃饭”、“喝水”,并最终失去已经到手的下级智能体调用权……)
该机制的详细实现设计还有待完善,欢迎各路大神参与讨论!
目前我们在repo中提供了一个简单的web对话界面示例,参考 DialogWeb目录
对于有需求接入微信公众号的项目,推荐参考 微信SDK
对于有需求接入微信(个微或企微),推荐参考 wechaty
Awada项目目前处于起步阶段,希望大家可以一起参与贡献。(项目开源许可证为Apache2.0,所有贡献者需要签署CLA)。
如果您在相关工作中参考或引用了本项目的部分或全部,请注明如下信息:
Author:Project Awada
https://openi.pcl.ac.cn/wiseflow/awada
https://github.com/TeamWiseFlow/awada
Licensed under Apache2.0