自动代理系统设计 (ADAS)

在读Automated Design of Agentic Systems,该论文关注的是自动化代理系统的设计,而不是具体算法的实现。 它提供了一个高层次的视角,说明如何利用元代理和代码生成来发现新的代理系统设计模式,从而提高代理的性能和泛化能力。 生成代理

核心概念

  • 自动化设计代理系统,取代人工设计,提高效率和性能。
  • 使用代码定义代理系统,利用编程语言的图灵完备性,探索所有可能的代理系统设计。
  • 使用基础模型 (如 GPT-4) 作为元代理,自动生成和改进代理系统代码。

Meta Agent Search 算法

  1. 元代理编程新代理:基于不断增长的代理档案库,元代理迭代地编写新的、有趣的代理。
  2. 测试代理性能:在新代理生成后,使用验证数据评估其性能(例如,成功率或 F1 分数)。
  3. 更新代理档案库:将生成的代理及其评估指标添加到档案库中。
  4. 迭代改进:重复步骤 1-3,直到达到最大迭代次数。

算法

  • 基础模型 (Foundation Models, FMs): 如 GPT 和 Claude,作为代理系统中的模块。
  • 思维链 (Chain-of-Thought, COT): 引导代理在回答问题之前进行逐步推理。
  • 自反思 (Self-Reflection): 允许代理迭代地反思并纠正自身错误。
  • 工具使用 (Tool Use): 代理能够使用外部工具,如搜索引擎和代码执行器。
  • 元代理搜索 (Meta Agent Search): 使用元代理迭代地编写新的代理代码,测试其性能,并将其添加到不断增长的代理库中。

基础模型 (Foundation Models, FMs): 如 GPT 和 Claude,作为代理系统中的模块

基础模型 (FMs) 如 GPT 和 Claude 是 ADAS 的核心。它们被用作代理系统中的模块,为代理提供强大的推理、规划和自然语言处理能力。 就像人类大脑的不同区域负责不同的功能一样,FMs 在代理系统中可以扮演不同的角色,例如:生成文本、进行推理、评估答案、提供反馈等等。 ADAS 的目标之一是自动设计如何有效地利用这些 FMs 模块来构建强大的代理系统。

思维链 (Chain-of-Thought, COT): 引导代理在回答问题之前进行逐步推理

思维链 (COT) 是一种引导代理进行逐步推理的技术,帮助代理在回答问题之前进行更深入的思考。 通过 COT,代理可以将复杂问题分解成更小的子问题,并逐步解决,最终得到更准确的答案。 在 ADAS 中,COT 可以作为一种重要的构建模块,被整合到代理系统中,提高代理的推理能力。

自反思 (Self-Reflection): 允许代理迭代地反思并纠正自身错误

自反思 (Self-Reflection) 允许代理迭代地反思自身的行为和答案,并尝试纠正错误。 代理可以通过分析自身的推理过程、评估答案的质量,并根据反馈进行改进,从而提高性能。 在 ADAS 中,自反思机制可以帮助代理不断学习和改进,最终得到更可靠的解决方案。

工具使用 (Tool Use): 代理能够使用外部工具,如搜索引擎和代码执行器

工具使用 (Tool Use) 指代理能够利用外部工具来增强自身的能力。 例如,代理可以使用搜索引擎获取更多信息,使用代码执行器运行代码,或者使用数据库查询相关数据。 在 ADAS 中,代理系统的设计可以包含对各种工具的使用,从而扩展代理的功能,使其能够解决更复杂的任务。

元代理搜索 (Meta Agent Search): 使用元代理迭代地编写新的代理代码,测试其性能,并将其添加到不断增长的代理库中

元代理搜索 (Meta Agent Search) 是论文提出的核心算法,它使用一个元代理 (Meta Agent) 来自动设计新的代理系统。 元代理会迭代地编写新的代理代码,测试其性能,并将性能优良的代理添加到一个不断增长的代理库中。 这种方法类似于人类程序员不断改进代码的过程,但由元代理自动完成,从而加速代理系统的设计和优化。

搜索什么

  • 搜索空间 (Search Space): 代码空间

元代理搜索的核心思想是在代码空间中进行搜索,而不是像一些其他方法那样只搜索提示词 (Prompt)。这意味着元代理可以修改代理系统的各个组成部分,包括:

提示词 (Prompts): 元代理可以学习如何编写更有效的提示词来引导基础模型 (Foundation Model)。 工具使用 (Tool Use): 元代理可以学习何时以及如何使用外部工具,例如搜索引擎、代码执行器或数据库查询。 控制流程 (Control Flow): 元代理可以学习代理系统内部各个模块之间的最佳交互方式,以及如何组合不同的步骤来解决问题。

  • 搜索算法 (Search Algorithm): 元代理迭代编程

元代理搜索采用了一种迭代的搜索算法,其中一个“元代理” (Meta Agent) 负责编写新的代理系统代码。这个元代理通常是一个大型语言模型 (LLM),例如 GPT-4。

元代理 (Meta Agent): 负责根据不断增长的“代理档案” (Agent Archive) 编写新的代理系统代码。 代理档案 (Agent Archive): 存储了之前发现的所有代理系统及其性能指标,用于指导元代理的后续搜索。

  • 搜索目标 (Search Objective): 性能指标

元代理搜索的目标是找到性能最佳的代理系统。性能指标可以根据具体任务进行定义,例如准确率、F1 分数等。元代理会根据这些指标来评估新生成的代理系统,并将其添加到代理档案中。

  • 具体实现过程:

  • 初始化: 代理档案中会预先添加一些基线代理系统 (Baseline Agents)。
  • 迭代搜索: 元代理根据代理档案中的信息,尝试编写新的代理系统代码。
  • 评估: 新生成的代理系统会在验证集上进行评估,并计算其性能指标。
  • 更新档案: 将新代理系统及其性能指标添加到代理档案中。
  • 重复迭代: 重复上述步骤,直到达到预设的迭代次数或找到满足性能要求的代理系统。

元代理搜索的是代码,更准确地说,是定义代理系统的 Python 代码。它通过修改和组合代码来探索不同的代理系统设计,并最终找到性能最佳的方案。

实验结果

  • ARC 逻辑谜题任务:Meta Agent Search 发现的代理性能显著优于最先进的人工设计代理,准确率提高了 14%。
  • 推理和问题解决领域:在阅读理解、数学、科学问题和多任务问题解决等多个领域,Meta Agent Search 发现的代理均优于基线。
  • 泛化性和可迁移性:发现的代理在跨模型和跨领域迁移时表现出强大的性能,证明了其鲁棒性和通用性。

发现的代理示例

  • 多步同行评审代理:使用多个领域专家模型生成答案,并进行多轮同行评审和改进。
  • 分而治之代理:将问题分解成子问题,分配给专门的专家模型解决,最后整合子问题的解决方案。
  • 经过验证的多模态代理:生成问题的可视化表示,验证其准确性,并使用经过验证的可视化辅助解决问题。

未来研究方向

  • 高阶 ADAS:通过 ADAS 递归地改进元代理本身。
  • 引入更多构建块:将搜索引擎工具、RAG 和现有代理框架中的功能集成到 ADAS 中。
  • 多目标 ADAS:考虑成本、延迟和鲁棒性等多个目标。
  • 更智能的评估函数:分析运行日志以获取更详细的反馈。
  • 更复杂的领域:将 ADAS 扩展到多步交互和复杂环境。

安全考虑

  • 运行模型生成的代码时需要谨慎,使用沙盒环境以确保安全。
  • 需要研究如何开发安全的 ADAS 算法,避免生成不诚实、无益或有害的代理。

总结

Meta Agent Search 是一种很有前景的 ADAS 算法,它能够自动发现和改进代理系统,在多个领域取得了优于人工设计的性能。这项工作为开发更强大的代理系统开辟了新的方向,并为理解基础模型的能力提供了新的视角。

其它引人关注的问题

  1. 元代理最后得到的代理花费了多少token?
    • 文并没有提及元代理最终产生的代理花费了多少token。
  2. 衡量产生的代理的标准?

元代理最终产生的代理的优劣是根据以下指标或衡量标准来裁定的:

  • 性能 (Performance): 这是最主要的指标,例如在ARC挑战中使用准确率,在阅读理解、数学和科学问答中使用准确率或F1分数。
  • 新颖性 (Novelty): 元代理被鼓励生成与存档中已有代理不同的、有趣的新代理。
  • 代码正确性 (Code Correctness): 生成的代码需要能够正确运行,没有语法错误或运行时错误。
  • 效率 (Efficiency): 有些代理会评估生成的代码的效率,例如在ARC挑战中,效率专家会评估代码的简洁性和执行速度。
  • 可读性 (Readability): 有些代理会评估生成的代码的可读性,例如在ARC挑战中,可读性专家会评估代码的易懂程度。
  • 简洁性 (Simplicity): 有些代理会评估生成的代码的简洁性,例如在ARC挑战中,简洁性专家会评估代码的复杂程度。 总的来说,元代理会综合考虑以上指标,并试图找到在性能和其他方面都表现良好的代理。 需要特别指出的是,文章中并没有明确列出所有衡量标准的权重或具体的量化方法。

参考资料