‘内部 AGENTS 用于构建半自主 LLM 代理的新开源框架’

New open-source framework for building semi-autonomous LLM agents using internal AGENTS.

该框架基于浙江大学和苏黎世联邦理工学院的深入研究。

我最近开始了一个以人工智能为重点的教育性新闻通讯,已经有超过160,000订阅者了。TheSequence是一个没有噱头(不包含炒作、新闻等)的面向机器学习的通讯,每次阅读只需5分钟。目标是让您及时了解机器学习项目、研究论文和概念。请通过以下链接订阅,试试看:

TheSequence | Jesus Rodriguez | Substack

机器学习、人工智能和数据方面最好的信息来源…

thesequence.substack.com

自主代理是基础模型生态系统中最受欢迎的话题之一。AutoGPT或BabyAGI等项目的早期迭代引发了开发者对使用大型语言模型(LLMs)自主解决任务的可能性的想象。许多研究人员认为自主代理是基础模型的下一个前沿之一。然而,今天关于什么构成一个代理的定义非常宽泛。最近,来自AIWaves浙江大学和苏黎世联邦理工学院的研究人员发表了一篇详细介绍 LLMS 动力代理框架 AGENTS 的论文

AGENTS 的核心思想是将这个概念扩展到研究圈以外的主流用户群体。AGENTS试图在单一编程模型下融入重要的构建模块,例如规划、记忆、工具使用、多代理通信和符号控制。该论文附带了一个开源版本,非常易于使用。

让我们深入了解:

AGENTS原则

AGENTS框架作为一个面向LLMs的语言代理的开源平台脱颖而出。它的核心原则是简化定制、部署和调优语言代理的过程。

Image Credit: AGENTS Paper

AGENTS被设计成对初学者友好,基于一系列核心原则:

1. 长短期记忆: AGENTS认识到在自主代理中记忆的重要性。传统的机器学习模型对单个输入做出反应,而自主代理则与环境或其他代理不断进行交互。为了解决这个问题,AGENTS引入了记忆组件,如上文所述。它具备使用VectorDB存储长期记忆的能力,可以进行语义搜索,并使用专用草稿板更新短期记忆。

2. 工具使用和网络导航: 语言代理通常需要超越纯语言交互。它们需要能够利用外部工具并浏览互联网。AGENTS提供了与常用外部API的集成,并提供了一个可适应的类来添加更多工具。它还通过专门的API接口使代理能够搜索和浏览互联网。

3. 多代理通信: AGENTS不仅关注个体代理的能力,还涉足多代理系统的领域,适用于各种领域,如游戏、社会实验和软件开发。在这个领域内的一项创新特性是“动态调度”方法。AGENTS允许一个控制代理(一种“调度员”)根据其角色和过去的活动来决定代理的后续行动,而不是依赖静态规则来进行代理活动。

4. 人与代理的互动: 许多代理框架在与人类的互动范围上存在局限,特别是在多代理环境中。AGENTS轻松弥合了这一差距。它支持人类与代理之间的互动,无论是在单一代理环境还是多代理环境中。

5. 可控性: 传统框架通常将代理行为限制在系统提示中。AGENTS引入了标准操作规程(SOP)的概念。这些类似于现实世界应用的SOP是详细的逐步指南,指导代理任务和行动。这样的详细计划可以由LLM生成,并由用户进行修改。

这些是相当多的概念!然而,AGENTS的初始实现使得构建使用这些功能的智能Agent变得非常简单。

使用AGENTS进行编程

AGENTS框架以Agent、SOP(标准操作流程)和环境三个主要类为基础进行优雅的结构化。这些类通过一个简单的纯文本配置文件进行方便的初始化。让我们深入了解AGENTS的架构和编码基础。

  1. Agent类:作为AGENTS框架的核心,Agent类封装了语言Agent的特征和行为。如图1的UML图所示,Agent管理其复杂的长期和短期记忆。在该类中,方法使Agent能够:
  • 与周围环境互动(agent._observe(environment)
  • 根据当前状态采取行动(agent._act()
  • 修订其记忆数据(agent._update_memory())。

为了简化体验,上述功能集成到agent.step()方法中。

  1. SOP(标准操作流程)类:该类描绘了Agent状态的整体进展。SOP类中的每个状态映射到Agent需要实现的特定子目标或子任务。每个状态作为一个’State’类对象构建,其中包含了帮助Agent利用LLM能力的专业提示,并提供了在该状态下使用的API工具包。
  2. 环境类:作为Agent的背景,该类提供了Agent所处的外部条件的表示。该类主要分为两个功能方面:
  • environment._observed()函数说明了环境对Agent行动的影响,概述了观察到的可传递信息。
  • environment.update()函数定义了Agent行动对环境的后果。
def main():# agents是一个由一个或多个Agent组成的字典.agents = Agent.from_config("./config.json")sop = SOP.from_config("./config.json")environment = Environment.from_config("./config.json")run(agents, sop, environment)

AGENTS框架不仅体现了前面讨论的工具整合和多Agent通信等基本原则,还赋予了人-Agent界面以重要性。值得注意的是,通过将配置文件中的“is_human”属性调整为“True”,AGENTS提供了用户进入Agent角色的灵活性。这种安排允许人类用户与给定环境中的其他语言Agent之间进行动态交互,全部通过专用控制台界面。

图片来源:AGENTS论文

在部署方面,AGENTS以FastAPI为首选路线。此外,该框架足够灵活,可以适应个体和多Agent的配置。