来自波形智能、苏黎世联邦理工和浙江大学的算法团队和研究者发布了名为 Agents 的开源框架。
近一年来,随着大模型突飞猛进的发展,基于大模型的推理泛化能力的语言智能体 (Language Agents) 展示了通向 AGI 的巨大潜力。科研和开发者社区也涌现出各种语言智能体的框架和系统,如 AutoGPT [1], LangChain [2], SuperAGI [3] 等。这些系统能够接受人类提供的简单的指令之后自主规划和执行任务。尽管看起来很炫酷,这些框架和系统的都存在一个非常致命的通病:智能体的运行一旦开始,就几乎脱离了人类的控制,对任务规划和执行一旦出错,就会通过误差传播引起明显的滚雪球效应,因此任务失败概率很高。除了失败率高以外,更致命的是用户或开发者遇到这种情况,对于如何调优很容易完全没有头绪,只能盲目更改任务描述,依靠玄学希望得到更好的效果。
为了解决这个痛点,让 LLM Agent 更可控,调优 LLM Agent 的过程更简单更系统化,波形智能联合苏黎世联邦理工大学和浙江大学,开发了名为 Agents 的开源智能体框架。
代码 / Demo 链接:https://github.com/aiwaves-cn/agents
官方网站:http://www.aiwaves-agents.com/
Agents 框架探索了通过结合基于推理图的符号主义 (symbolism) 推理和基于 LLM 的连接主义 (connectionism) 推理,来结合高层次的世界模型知识和低层次的简单推理泛化能力,从而实现更智能更可控的通用人工智能 (AGI) 方案。
具体来说,该框架创新性地提供了通过符号式的推理图,即 “SOP”,来对任务进行分解,首次实现了对 LLM Agent 的细粒度控制。框架同时支持长短期记忆,工具使用,网络搜索,以及多智能体系统的构建,用户只需要用自然语言填写配置文档,就能轻松定义各种功能和使用场景的 AI 智能体 / 多智能体系统,比如导购机器人,客服机器人,以及包含各种角色的小说工作室。
在支持零代码定制 / 微调多智能体系统的同时,Agents 框架也对开发者和研究者扩展新的功能和定制复杂的多智能体环境 / 场景提供了很好的支持,为基于语言的智能体 (Language Agents) 研究提供便利。Agents 框架的主要功能和亮点如下:
长短期记忆:基于 RecurrentGPT [4] 的方案让自主智能体能够维持长短期记忆,从而更好地和人类 / 环境 / 其他智能体交互。长期记忆将智能体自己的以及观察到的对话 / 行为历史储存在向量数据库 (VectorDB) 中并根据当前的观察 (observation),通过语义搜索 (semantic search) 来选择性的激活储存的记忆。短期记忆则是以文字形式,通过 LLM+prompt 进行更新,负责智能体的 working memory。
工具使用 / 网络搜索:该框架通过将各种工具 / API 封装在 "ToolComponent" 类中,统一定义接口,让智能体能够通过 OpenAI GPT 的 function-calling 来智能地使用各种工具。网络搜索功能也被封装成了 API,模型可以根据需求,通过 function-calling 自动生成搜索 query,获取搜索结果来辅助行动。
多智能体系统: Agents 框架中同时支持单智能体和多智能体系统。其中多智能体系统区别于现有框架的一点是,不同于其他系统一般利用事先规定好的规则来决定智能体行动的先后顺序,Agents 库当中支持了基于 LLM 的控制器,可以根据当前状态的目标,智能体的行为,和当前环境,来决定是否进入下一个状态,以及确定下一个行动的智能体应该是谁。
人 - 智能体交互: Agents 框架除了支持多智能体之间的相互交互,也支持了能够让人类使用者扮演多智能体系统中的一个或多个智能体的功能,可以方便地支持各种人 - 智能体交互的应用场景,如人和智能体一起玩游戏、辩论等。
符号化细粒度控制:作为 Agents 框架的核心亮点,框架中的 SOP 系统支持了通过符号化的推理图来对智能体 / 多智能体系统提供更细粒度的控制。一个任务 / 场景的 SOP 是一个图结构,图中的每个节点被称作 "状态",每个状态定义了该任务场景的一个子任务或者中间过程。用户可以在 Agent 系统的设置模版 (config template) 中定义每个智能体在每个状态中的任务描述,策略,规则,和 in-context learning 的样例等。状态和状态之间的切换通过一个基于 LLM 的控制器来决定。基于 SOP 的细粒度的控制让智能体系统更能够严格按照人类确认过的流程运行,从而更加稳定,可控,进而达到可以作为商业化的客服 / 销售 / 导购等智能体的目标。另外因为智能体系统的控制严格按照 SOP 的流程,所以任何一步发生问题,用户都可以方便的定位到问题所在,并且有针对性地对 SOP 进行修改,提升系统的表现,既提高了 Agent 系统的可解释性,又方便了系统的编辑和调优。
Agents 框架介绍
Agents 框架包含三个主要类:Agent、SOP 和 Environment,具体如下:
Agent 类包含了 Agent 的各种功能,包括长短期记忆,观察环境,使用工具,调用 LLM 进行推理和生成回复等。
SOP 类是由状态和状态之间的连接定一个一个符号式的计划(Plan)。SOP 的每个状态节点由 State 类定义,State 类中涵盖了 Agent 在这个状态内特有模块化的 Prompt 和可以使用的各种工具 / API 等,由用户在配置文件中定义。每次行动时,Agent 会将这些模块化 prompt 和工具 / API 的输出组装成完整的 prompt,然后调用 LLM 决定如何行动。SOP 中还包括了一个控制器函数,利用大模型的推理能力来动态决定状态的转移和下一个行动的 Agent 是哪个。
Environment (环境类) 是智能体之间交互的媒介,储存了智能体之间的对话历史和环境本身的状态 / 变化等。
智能体系统的初始化代码如下:所有类均可由一个用户定制好的 config 文件加载。
加载之后多智能系统的运行逻辑如下:SOP 的控制器决定了下一个状态和行动的智能体是哪个,之后智能体结合环境和状态执行行动,最后环境根据智能体的行为进行自我更新。Agents 框架同时支持让智能体系统动态 Planning,生成新的后续状态和节点,只需要定义从 action 抽取新状态节点设置的函数并将对应的设置动态添加到当前的 SOP 中即可。
利用 Agents 框架定制多智能体系统的流程
Step 1:配置多智能体系统参数 (框架提供了相应的 WebUI)
Step 2: 得到 JSON 配置文件
Step 3:启动多智能体系统
基于 Agents 框架搭建的 “影视工作室” 系统
接下来,作者展示了一个利用 Agents 框架开发的多智能体影视工作室的 Demo。小说工作室中包括了作家,编辑,导演,和演员等角色。SOP 中规定了首先作家和编辑要根据特定的剧情设定来构思人设和剧本大纲,之后作家根据大纲写出剧本,再由导演根据剧本指导多个演员一起进行每一段情节的表演:
其他的多智能体框架在接受了这样一个复杂流程的指示之后,很容易会在执行任务的过程中逐渐偏离原始的任务规划和指示。这是因为在每一次执行的时候,各个智能体都只能根据总体的相对笼统的任务介绍来推测系统现在走到了哪一步以及接下来要做什么,而基于 Agents 框架的智能体系统则为每个智能体提供了当前状态特有的指令,规则,和示例,并且有了解全局任务和当前 / 下一个状态各自的目标的控制器来决定状态的转变,因此能够更准确、稳定地沿着预先设定的流程完成整个剧本设计,创作到表演的复杂任务流。
Agents 框架除了支持在终端和 Gradio 体验多智能体系统之外,还为开发者提供了利用 FastAPI 在后端部署自主智能体系统的示例代码,可以让开发者便捷的将调教好的智能体部署到应用程序中。另外 Agents 开发团队还提供了 community AgentHub,可供方便地供用户搜索他人共享的智能体系统从而更便捷地打造自己的智能体系统,也可以将自己调试好的智能体系统方便地共享给社区其他用户。
文章转载自微信公众号“机器之心“ ,作者 机器之心编辑部
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0