
机器学习算法有哪些
近年,大语言模型以其强大的自然语言处理能力,成为AI领域的一大热点。它们不仅能生成和理解文本,还能进行复杂的分析和推理。与此同时,大语言模型还带火了智能体(即AI Agent)。智能体是一种能够感知环境、进行决策和执行动作的智能实体。不同于传统的人工智能,智能体具备通过独立思考、调用工具去逐步完成给定目标的能力。在有大语言模型作为其大脑之后,智能体更是具备了对通用问题的自动化处理能力。
MetaGPT是一种多智能体框架,其利用SOP(Standard Operating Procedures,标准作业程序)来协调基于大语言模型的多智能体系统,从而实现元编程技术。该框架使用智能体模拟了一个虚拟软件团队,包含产品经理、架构师、项目经理、工程师、质量工程师等角色,并引入SOP成为框架的虚拟软件团队的开发流程。其专注于软件开发,覆盖了从需求分析到代码实现的全生命周期覆盖。
在MetaGPT中,多智能体被视为一个智能体社会,其中多智能体=智能体+环境+标准流程(SOP)+通信+经济,这些组件各自发挥着重要的作用:
SOP定义了社会中的工作角色和工作流程。在软件工程中,瀑布模型(Waterfall Model)概述了从分析到交付的步骤,促进了跨角色的团队合作。MetaGPT的方法展示了其将高级任务分解为由不同角色(产品经理、架构师、项目经理、工程师、质量工程师)处理的、详细可行性组件的能力,从而促进了角色特定的专业知识和协调。该图说明了MetaGPT如何设计来处理复杂任务并促进清晰的角色划分,使其成为复杂软件开发场景中的有价值的工具。
MetaGPT的设计分为两个层次:基础组件层和协作层。
基础组件层以AI Agent为核心,提供了观察、思考等能力。其建立了个体智能体操作和在系统范围内进行信息交换所需的核心模块,包括环境、记忆、角色、行动和工具,如图2所示。
这一层为智能体在分配的角色中运行提供了基础设施,使它们可以相互交互并与系统交互。
其建立在基础组件层的基础上,协调各个智能体共同解决复杂问题。其提供了两种基本机制:知识共享和封装工作流程。
在这个框架中,MetaGPT中的智能体能力得到了显著增强。智能体的实例化,由专门的角色提示引导,被称为”锚定智能体”,为角色提供了观察、思考、反思和知识积累的能力。这些角色通过已建立的订阅和发布方法与环境进行交互。
基础和协作层的分离有利于实现模块化,同时确保智能体的个人和集体能力。基础组件提供了可重用的构建模块和工具,而协作模块则实现了有目的的协调。
基础和协作层的划分促进了模块化,同时确保了个体和集体代理的能力。组件提供了可重用的构建块和实用程序,而协作模块整合了有目的的协调。
角色定义
MetaGPT框架支持创建各种专业类的角色,如产品经理、架构师等。基础角色类由一组关键属性定义:名称、简介、目标、约束和描述。目标表示角色寻求完成的主要责任或目标。约束表示角色在执行行动时必须遵循的限制或原则。约束可以规定如下:“你编写的代码应符合PEP8等代码规范,具有模块化、易于阅读和维护的特点”。描述提供了额外的具体信息,以帮助建立更全面的角色定义。
MetaGPT框架提供的全面角色定义使得其可以创建高度专业化的基于LLM的智能体,每个智能体都针对特定的领域和目标进行了定制。角色定义不仅引入了基于预期功能的行为指导,而且有助于创建多样化和专业化的智能体,每个智能体都是其领域的专家。
MetaGPT使用提示(Prompt)将现实世界的标准作业程序(SOP)转化为明确定义的智能体工作流。该过程涉及使用提示来实例化SOP,并基于已建立的实践提供逐步指导,确保复杂序列任务的一致和结构化执行。
首先,我们详细介绍Action类,然后展示了如何设计标准化行动级别细粒度提示。在MetaGPT框架中,Action作为智能体执行特定任务的原子单位,通过自然语言进行指定。关键属性包括:
MetaGPT实例化工作流的有效性在很大程度上依赖于每个行动的标准化输出。这些输出利用专家领域知识和行业最佳实践,将工作流程调整到特定的角色和上下文中。结构化输出设计具有以下目的:
标准化的输出保障了一致的LLM结果,这些结果是可预测、可重复的,并符合智能体的责任范围。它们通过设定输出期望来引导高质量、结构化和基于任务的特定LLM生成。
此外,标准化的模式充当了蓝图,将LLM行为限制在适合角色的边界内。同时,这有助于保持对目标任务的关注,防止偏离目标。由于行动是综合角色基准指南的一部分,这种角色意识的引导确保输出与真实世界的质量标准相一致。
总之,在MetaGPT中标准化输出设计和实现为处理复杂任务提供了强大的工具。将自然语言中定义的复杂任务转化为标准化输出促进了协作的一致性,从而减少了可能导致不连贯的多轮对话交互。此外,它可以清晰、一致地表示结构信息,这在仅通过自然语言传达时可能存在困难,特别是对于基于LLM的智能体。此外,通过提供结构化和标准化的输出,不同的智能体可以清晰地对其任务和责任达成一致的理解。
在MetaGPT中,每个智能体通过从共享环境日志中检索相关历史信息,来主动策划个性化知识。智能体不是被动地依赖对话,而是利用基于角色的兴趣来提取相关信息。
如前所述,MetaGPT中的每个智能体都维护了一个内存缓存,并对其角色相关的订阅消息进行索引,实现个性化的知识策划。具体来说,消息的集中复制创建了一个统一的数据源。智能体可以注册订阅,自动从该数据源接收与其角色相关的消息。在内部,智能体通过内容、来源和属性将内存缓存索引,以便在相关上下文中实现快速检索。
通过在智能体角色周围对信息流进行组织,确保多智能体之间的协作。通过结合中心化的知识共享与基于角色的个性化内存缓存相结合,实现定制化的知识管理。这减少了无关数据的存在,并提供了共同的上下文,从而在团队协作和个人效率之间达成平衡。
可访问OpenAI的服务器或者本地电脑。
由于需要调用OpenAI API,因此需要提前准备好OPENAI_API_KEY。
python --version
git clone https://github.com/geekan/MetaGPT.git
cd MetaGPT
pip3 install -e. # 或者 pip3 install metagpt # 安装稳定版本
3、在config/key.yaml
文件中配置OPENAI_API_KEY
。
# 拷贝配置文件config.yaml为key.yaml并进行如下修改
cp config/config.yaml config/key.yaml
变量名 | config/key.yaml |
OPENAI_API_KEY # 用您自己的密钥替换 | OPENAI_API_KEY: “sk-…” |
OPENAI_API_BASE # 可选 | OPENAI_API_BASE: “https:///v1” |
• 4、(可选)如果想在执行过程中保存像象限图、系统设计、序列流程等图表这些产物,可以先安装mermaid-js
。
# 如果执行,确保您的系统上安装了 NPM。并使用npm安装mermaid-js。
npm --version
sudo npm install -g @mermaid-js/mermaid-cli
• 5、开始使用。
python startup.py "写一个命令行贪吃蛇"
# 开启code review模式会花费更多的金钱, 但是会提升代码质量和成功率
python startup.py "写一个命令行贪吃蛇" --code_review True`
运行脚本后,您可以在 workspace/ 目录中找到您的新项目。
本文章转载微信公众号@深度学习自然语言处理