自动化的循环逻辑
8月19日,不列颠哥伦比亚大学的三位研究人员发表了一篇名为《自动化设计智能体系统》的论文。在这篇论文中,他们设计了一个让AI自己发现并搭建智能体,还能自我迭代的系统。
回想一下OpenAI对智能体的经典定义,智能体就是一个能够存储知识,能够进行计划,并且应用工具的产品。
而我们在用工作流构建智能体时,也是利用已有的知识(对智能体形式的知识),自己进行计划(搭建流程)并利用工具(接入API)最终去执行产出,并没有超越智能体自身的能力范围。
那为什么不搭建一个能自动发现和设计智能体的智能体呢?
论文作者就按照这个思路,把设计者称为元智能体,让它去设计新的智能体。把设计好的智能体加到数据库里作为资料,不断迭代出新的、更强版本的智能体。
这整套方法,他们称之为ADAS(Automated Design of Agent Systems,自动化设计智能体系统)。
让链条转起来
ADAS系统中生成新智能体的过程可以被分为三个部分:
第一部分建立搜索空间,可以理解为通过一些基础工具和规则,它可以设计出潜在的新智能体。
第二部分是运行搜索算法,它规定了元智能体如何利用搜索空间,取用其中的元素去具体搭建新的智能体。
最后一部分是运行评估函数,它会根据性能等目标对搭建出来的智能体进行评估。
研究人员在论文中分步解释了如何构建以上三个核心部分。
首先得确定建构搜索空间的基础元素,研究人员认为最好的方法是代码。
这是因为代码具有图灵完备性,能表达所有可能性。所以,理论上元智能体能够发现任何可能的构建模块(如提示、工具使用、控制流程)以及以任何方式组合这些构建模块的智能体系统。
更重要的是,Langchain这样用来构建智能体的网站中已存在的各种工作流都已被代码化。因此相关数据唾手可得,不用再转换。而工具调用,如RAG(retrieval augmented generation检索增强生成)之类的能力组件也已经有了非常充分的代码基础。
采用代码去构建搜索空间,也意味着ADAS生成的智能体可以直接运行,用来纠错、跑分,无需人工再干预。
定义好了搜索空间,研究人员就开始设计搜索算法,即让元智能体去探索可能完成任务的方法。这一过程基本上都是依靠提示词工程完成的。
首先是给它一系列系统提示词。
然后,把基础Prompt提到的资料给到元智能体,包括
1.任务的基本描述。
- 最基本的框架代码,比如格式化提示、封装等操作名称,还有调用其他基础模型(FM)、API的能力。
3.任务输入输出的格式和范例。
4.原来迭代中生成的一些智能体形成的范例库,包括其基线测试结果。
根据这些基础提示,ADAS就可以开始运作,生成一个去解决特定问题的智能体。
在这个过程中,元智能体会进行两轮反思保证生成的智能体具有新颖性和正确性。它会检查新生成的代码框架是否有错误,相对于智能体范例库里的过往结果是否有足够的创新。
元智能体还需要基于其对实用性能能力的"理解"对生成的智能体进行初步评估,判断它是不是比之前的智能体性能更好。
当这些条件中有一些不满足时,元智能体就得对生成的智能体或者修改或者干脆回炉重造。
两轮反思和修改过后,元智能体会把觉得又新又好的新生成的智能体送给第三步的评估系统。
评估系统会根据基线测试对这个智能体的能力打一个客观分数,然后把它返回给到智能体范例库。
元智能体会再根据之前的评分结果和范例库里的过往范例,继续进行下一次迭代优化,以达到更高的任务性能分数。
一整条全自动化的链条就在这一过程中诞生了。而要生成一个效果绝佳的智能体,可能需要进行两位数以上次数的迭代。
超越手搓智能体
通过ADAS方法自动化流程得到的智能体能有多复杂?下图就是经过14次迭代后生成的一个智能体框架。
这个智能体的结构中有五个思维链给出初步答案。三个专家模型和一个模仿人类给出评价的模型对这些答案给出反馈后,这些答案会在优化流程阶段进行三次修改加强。最后经评估筛选出来三个结果,合并给出最终答案。