学习链接:【多Agent】MetaGPT学习教程
源代码链接(觉得很好,star一下):GitHub - 基于MetaGPT的多智能体入门与开发教程
MetaGPT链接:GitHub - MetaGPT
前期准备
1、获取MetaGPT
(1)使用pip获取MetaGPT
pip install metagpt==0.6.6#或者在国内加速安装镜像
#pip install -i https://pypi.tuna.tsinghua.edu.cn/simple metagpt==0.6.6
(2)通过github仓库获取MetaGPT
#如果要获取指定版本的MetaGPT,可以自行选择不同的分支与tag
git clone https://github.com/geekan/MetaGPT.git
cd /your/path/to/MetaGPT
pip install -e .
2、配置MetaGPT
(以配置ChatGPT为例)
与我们在 chatgpt 官网使用的所见即所得的 chat 功能不同,在使用metagpt时我们需要确保自己能够使用 openai的 api 服务,OpenAI API 服务是付费的,每一个开发者都需要首先获取并配置 OpenAI API Key,才能在自己构建的应用中访问 ChatGPT。
命令行执行:
export OPENAI_API_KEY="sk-..." 填入你自己的OpenAI API key
export OPENAI_API_MODEL="intended model" 选择你要使用的模型,例如:gpt-4, gpt-3.5-turbo
或者在代码中使用os库来将自己的OpenAI API key设定为环境变量来使用OpenAI API 服务:
import os
os.environ["OPENAI_API_KEY"] = "sk-..." # 填入你自己的OpenAI API key
os.environ["OPENAI_API_MODEL"] = "intended model" # 选择你要使用的模型,例如:gpt-4, gpt-3.5-turbo
os.environ["OPENAI_API_BASE"] = "https://api.openai-forward.com/v1"
同时MetaGPT还提供了利用config.yaml
文件来配置OpenAI API服务的方法
-
在当前项目的工作目录下,新建一个文件夹
config
并在该文件夹下添加一个config.yaml
或key.yaml
文件 -
拷贝样例配置 config.yaml 中的内容到你的新文件中。
-
在新文件内设置自己的OPENAI API KEY配置
OPENAI_API_KEY:"sk-..."
YOUR_API_KEYOPENAI_API_MODEL:"intended model" # gpt-4, gpt-3.5-turbo, etc.
记住:如果你按照通过github仓库获取MetaGPT,config/config.yaml
已经存在于目录中。只需要直接进行配置,或拷贝一个新文件 config/key.yaml
并进行配置。 这样你就不会因为不小心提交了API KEYT而导致泄露。
MetaGPT将会按照下述优先级来读取你的配置:
config/key.yaml > config/config.yaml > environment variable
我们也可以配置其他LLM大模型的API,这里只是以ChatGPT为例进行配置。
3、首次尝试
代码中创建了两个角色,分别代表民主党候选人Alex和共和党候选人Bob。他们将在一个名为"US election live broadcast"的环境中进行对话。您的代码还定义了两个动作,分别是"AlexSay"和"BobSay",以及一个团队,其中包括了这两个角色。目标是模拟两位候选人在直播环境中就气候变化这一话题进行对话。这将有助于模拟候选人在现实选举中的表现和对话。
import asynciofrom metagpt.actions import Action
from metagpt.environment import Environment
from metagpt.roles import Role
from metagpt.team import Teamaction1 = Action(name="AlexSay", instruction="Express your opinion with emotion and don't repeat it")
action2 = Action(name="BobSay", instruction="Express your opinion with emotion and don't repeat it")
alex = Role(name="Alex", profile="Democratic candidate", goal="Win the election", actions=[action1], watch=[action2])
bob = Role(name="Bob", profile="Republican candidate", goal="Win the election", actions=[action2], watch=[action1])
env = Environment(desc="US election live broadcast")
team = Team(investment=10.0, env=env, roles=[alex, bob])asyncio.run(team.run(idea="Topic: climate change. Under 80 words per message.", send_to="Alex", n_round=5))
智能体综述及多智能体框架介绍
1、AI Agent体系介绍
(1)什么是AI Agent
Agent(智能体) = 一个设置了一些目标或任务,可以迭代运行的大型语言模型。这与大型语言模型(LLM)在像ChatGPT这样的工具中“通常”的使用方式不同。在ChatGPT中,你提出一个问题并获得一个答案作为回应。而Agent拥有复杂的工作流程,模型本质上可以自我对话,而无需人类驱动每一部分的交互。
——Logan Kilpatrick,OpenAI 开发者关系负责人
ChatGPT接收单一查询的输入并返回输出,它一次不能完成超过一个任务。而AI Agent则可以自驱的定义工作流程并规划任务进行解决。
在 LLM 支持的自主Agent系统中,LLM 充当Agents的大脑,并辅以几个关键组成部分如下:
①规划
-
子目标和分解:Agents将大型任务分解为更小的、可管理的子目标,从而能够有效处理复杂的任务。
-
反思和完善:Agents可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并针对未来的步骤进行完善,从而提高最终结果的质量。
②记忆
-
短期记忆:我认为所有的上下文学习都是利用模型的短期记忆来学习。
-
长期记忆:这为Agents提供了长时间保留和回忆(无限)信息的能力,通常是通过利用外部向量存储和快速检索来实现。
③工具使用
-
Agents学习调用外部 API 来获取模型权重中缺失的额外信息(通常在预训练后很难更改),包括当前信息、代码执行能力、对专有信息源的访问等。
(2)智能体用例
①概念验证Agent-BabyAGI
Baby AGI 是一个 python 脚本,它使用 OpenAI 和 Pinecone API 以及 LangChain 框架来创建、组织、确定优先级以及执行任务。Baby AGI 背后的过程是,它将使用基于上一个任务结果的预定义目标创建一个任务。
这是通过使用 OpenAI 的自然语言处理 (NLP) 功能实现的,该功能允许系统根据目标创建新任务。它使用 Pinecone 来存储该特定任务的结果并检索上下文,并使用 LangChain 框架来处理决策过程。
②生成Agents模拟
-
记忆流:是一个长期记忆模块(外部数据库),用自然语言记录智能体经验的完整列表。
-
检索模型:根据相关性、新近度和重要性,呈现上下文以告知Agents的行为
-
反射机制:随着时间的推移将记忆合成更高层次的推论,并指导智能体未来的行为。它们是对过去事件的更高层次的总结
-
规划与反应:将反思和环境信息转化为