【技术前沿】MetaGPT入门安装部署——用多个大语言模型解决任务!一键安装,只需填写OpenAI API
项目简介
MetaGPT 是一个多智能体框架,旨在构建全球首家 “AI 软件公司”。该项目通过为 GPT 分配不同的角色,模拟产品经理、架构师、工程师等职业,协同完成复杂的软件开发任务。MetaGPT 将一个简单的需求转化为完整的软件开发流程,包括用户故事、需求分析、数据结构设计和 API 文档生成等。其核心理念是将标准操作程序(SOP)应用于由多智能体组成的团队,使得自然语言编程成为可能。
项目地址:MetaGPT on GitHub
由于项目是英文的,博主在这里做一版中文教程,给后来人一些参考。
关注CSDN心若为城,获得计算机领域与人工智能领域的前沿技术。
博主碎碎念,可跳过:
打算重新做做自己这个老号,高中时候开始做CSDN,那会儿写的是NOIP/NOI相关的算法东西,纯粹是写给自己看的;现在时隔多年,我也在清华站稳了脚跟,在互联网开发和量化交易领域都算是小有成就了。
接下来这个号(也许也不止这个号)应该会做三个方向:
AI新技术(或者不局限于AI)的抢先浏览,会向大家说明当下热点论文、热点技术的部署等,以及做一些周报或者日报。(类似于AI Weekly)
量化交易相关,我在量化开发技术栈有着多年的开发经验,也拿过一些投资比赛的奖项。可以面向应届生给出就业规划,提供一些指导的同时分享一些含金量高的项目。
互联网面试相关,我应该会着重于分享一些面试的底层技术面,并且尽可能和2进行一些结合,让大家同时能handle住两边的技术。
安装说明
只需要一行!简单明了:
pip install --upgrade metagpt
# or `pip install --upgrade git+https://github.com/geekan/MetaGPT.git`
# or `git clone https://github.com/geekan/MetaGPT && cd MetaGPT && pip install --upgrade -e .`
然后运行下面的命令
# Check https://docs.deepwisdom.ai/main/en/guide/get_started/configuration.html for more details
metagpt --init-config # it will create ~/.metagpt/config2.yaml, just modify it to your needs
这样会生成一个config文件,我们可以通过修改config文件来部署MetaGPT。
llm:api_type: "openai" # or azure / ollama / groq etc. Check LLMType for more optionsmodel: "gpt-4-turbo" # or gpt-3.5-turbobase_url: "https://api.openai.com/v1" # or forward url / other llm urlapi_key: "YOUR_API_KEY"
MetaGPT 支持一系列 LLM 模型。根据需要配置模型 API 密钥。
也可以配置Claude:
llm:api_type: 'claude' # or anthropicbase_url: 'https://api.anthropic.com'api_key: 'YOUR_API_KEY'model: 'claude-3-opus-20240229'
额外工具的使用
除了 LLM 之外,我们还经常希望代理使用工具。这里将介绍这些工具的设置。
## Supported api_type: serpapi/google/serper/ddg
## serper: Visit https://serper.dev/ to get key.
## serpapi: Visit https://serpapi.com/ to get key.
## google: Visit https://console.cloud.google.com/apis/credentials to get key.
## ddg: it is free, no need to get key.
search:api_type: 'google' # serpapi/google/serper/ddgapi_key: 'YOUR_API_KEY'cse_id: 'YOUR_CSE_ID' # only for googleparams:engine: google # google/bing/yahoo/baidu/yandex, check https://serpapi.com/bing-search-api for more detailsgoogle_domain: 'google.com'gl: ushl: en
使用MetaGPT、导入已有的角色
我们可以用下面的代码来导入一个产品经理。
具体更复杂的用法,可以参考这个文档:Tutorials
import asynciofrom metagpt.context import Context
from metagpt.roles.product_manager import ProductManager
from metagpt.logs import loggerasync def main():msg = "Write a PRD for a snake game"context = Context() # The session Context object is explicitly created, and the Role object implicitly shares it automatically with its own Action objectrole = ProductManager(context=context)while msg:msg = await role.run(msg)logger.info(str(msg))if __name__ == '__main__':asyncio.run(main())
使用MetaGPT进行数据分析与可视化
在这里,官方给了一些数据可视化的官方代码。
import asyncio
from metagpt.logs import logger
from metagpt.roles.di.data_interpreter import DataInterpreter
from metagpt.utils.recovery_util import save_historyasync def main(requirement: str = ""):di = DataInterpreter()rsp = await di.run(requirement)logger.info(rsp)save_history(role=di)if __name__ == "__main__":requirement = "Run data analysis on sklearn Iris dataset, include a plot"asyncio.run(main(requirement))
执行上述代码后,生成的计划和代码将分别保存在 data/output/current_time/plan.json
和 data/output/current_time/code.ipynb
中。
执行结果
DataInterpreter 提出了以下解决方案任务:
[{"task_id": "1","dependent_task_ids": [],"instruction": "Load the Iris dataset from sklearn."},{"task_id": "2","dependent_task_ids": ["1"],"instruction": "Perform exploratory data analysis on the Iris dataset."},{"task_id": "3","dependent_task_ids": ["2"],"instruction": "Create a plot visualizing the Iris dataset features."}
]
DataInterpreter 能够将问题划分为逻辑任务,并按照加载数据、分析数据和绘制图表的步骤运行。
DataInterpreter 写入以下代码:
# ----------------------------------task1------------------------------------
from sklearn.datasets import load_iris
iris_data = load_iris()
iris_data.keys()
!pip install scikit-learn
from sklearn.datasets import load_iris
iris_data = load_iris()
iris_data.keys()
# ----------------------------------task2------------------------------------
import pandas as pd# Create a DataFrame from the iris dataset
iris_df = pd.DataFrame(iris_data['data'], columns=iris_data['feature_names'])
iris_df['species'] = pd.Categorical.from_codes(iris_data['target'], iris_data['target_names'])# Summary statistics
summary_statistics = iris_df.describe()# Check for missing values
missing_values = iris_df.isnull().sum()(summary_statistics, missing_values)
# ----------------------------------task3------------------------------------
import matplotlib.pyplot as plt
import seaborn as sns# Use seaborn's pairplot to visualize the dataset features
sns.set(style='whitegrid', context='notebook')
iris_pairplot = sns.pairplot(iris_df, hue='species', height=2.5)
plt.show()
在完成任务 1 的过程中,由于环境中没有安装 scikit-learn,第一次执行时发生了错误。不过, DataInterpreter 可以通过安装 scikit-learn 来分析并解决这个问题。在任务 3 中, DataInterpreter 使用 seaborn 中的 pairplot 函数创建散点图矩阵,该矩阵可视化数据集中不同特征之间的关系,并使用颜色区分不同物种的数据点。最后,使用 plt.show() 显示图表。
下图是 DataInterpreter 运行代码后绘制的图表。很明显,代码成功执行并生成了漂亮的可视化表格,可以帮助我们更有效地分析数据集的特征。
希望查看更多内容,点这里进入官方文档查看。
总结
MetaGPT is all you need!
相关文章:

【技术前沿】MetaGPT入门安装部署——用多个大语言模型解决任务!一键安装,只需填写OpenAI API
项目简介 MetaGPT 是一个多智能体框架,旨在构建全球首家 “AI 软件公司”。该项目通过为 GPT 分配不同的角色,模拟产品经理、架构师、工程师等职业,协同完成复杂的软件开发任务。MetaGPT 将一个简单的需求转化为完整的软件开发流程ÿ…...
#compsoer基本使用01#
Composer 是 PHP 的依赖管理工具,它允许开发人员管理和安装项目所需的依赖包。 1:查看Compsoer的全局配置命令 composer config -g --list --verbose 这个可以查看composer的镜像地址。例如 [repositories.packagist.org] type (string) : composer [repositor…...
基于c++的yolov5推理之前处理详解及代码(一)
目录 一、前言: 二、关于环境安装: 三、首先记录下自己的几个问题 问题:c部署和python部署的区别? 四、正文开始 4.1 图像预处理讲解 1、BGR---->RBG 2、等比例放缩图片(涉及到短边的填充) 3、归一化…...
Oracle(55)什么是并行查询(Parallel Query)?
并行查询(Parallel Query)是数据库管理系统中的一种查询优化技术,它允许数据库引擎同时使用多个处理器或线程来执行查询操作。通过将查询任务分解为多个子任务,并在多个处理器上同时执行这些子任务,可以显著提高查询的…...

关于 Lora中 Chirp Spread Spectrum(CSS)调制解调、发射接收以及同步估计的分析
本文结合相关论文对CSS信号的数学形式、调制解调、发射接收以及同步估计做了全面分析,希望有助于更好地理解lora信号 long-range (LoRa) modulation, also known as chirp spread spectrum (CSS) modulation, in LoRaWAN to ensure robust transmission over long d…...

Java - API
API全称"Application Programming Interface",指应用程序编程接口 API(JDK17.0)链接如下 : Overview (Java SE 17 & JDK 17) (oracle.com)https://docs.oracle.com/en/java/javase/17/docs/api/中文版: Java17中…...

力扣 3152. 特殊数字Ⅱ
题目描述 queries二维数组是nums数组待判断的索引区间(左闭右闭)。需要判断每个索引区间中的nums相邻元素奇偶性是否不同,如果都不同则该索引区间的搜索结果为True,否则为False。 暴力推演:也是我最开始的思路 遍历q…...

识别和缓解软件安全威胁的最佳工具
软件安全威胁会给企业带来重大损失,从经济损失到声誉受损。 企业必须主动识别和缓解这些威胁,防止它们造成危害。 幸运的是,有许多工具可以帮助企业识别和缓解软件安全威胁。 在本博客中,我们将探讨识别和缓解软件安全威胁的顶…...
Linux下的压缩与解压:掌握核心命令行工具
目录 一.前言 二.压缩文件概述 三.tar:Linux 的通用归档工具 常用 tar 命令 四.gzip:强大的压缩程序 常用 gzip 命令 五.zip 和 unzip:处理 ZIP 压缩文件 常用 zip 和 unzip 命令 实用技巧和最佳实践 六.结语 一.前言 在 Linux …...

BGP选路实验
要求: 1.如图连接网络,合理规格IP地址,AS200内IGP协议为OSPF; 2.R1属于AS 100;R2-R3-R4小AS234、R5-R6-R7小AS567,同时声明大AS 200,R8属于AS300; 3.R2-R5、R4-R7之间为联邦EBGP邻居…...
白骑士的C#教学高级篇 3.3 网络编程
网络编程是现代应用程序开发中至关重要的一部分。C# 提供了一套丰富的 API 来处理基本网络通信、Web请求与响应。在本节中,我们将深入探讨这些内容,帮助您掌握如何在 C# 中进行网络编程。 基本网络通信 基本网络通信通常涉及套接字(Socket&a…...

AI大模型赋能游戏:更智能、更个性化的NPC
参考论文:https://arxiv.org/abs/2403.10249 在传统游戏中,NPC(非玩家角色)的行为往往是预先设定好的,缺乏灵活性和变化性。然而,基于大模型的NPC可以利用其强大的推理和学习能力,实时生成对话…...
pymysql的上下文管理器:简化数据库操作
pymysql的上下文管理器:简化数据库操作 当我们使用 pymysql 操作数据库时,管理数据库连接和游标的生命周期是一项重要的任务。Python 的上下文管理器提供了一种优雅的方式来处理资源的获取和释放。在本文中,我们将探索如何创建一个简单的 py…...
AI秘境-墨小黑奇遇记 - 修炼成神经(二)
在解开了感知机和门电路的谜题后,墨小黑对人工智能的世界渐渐产生了浓厚的兴趣。他开始意识到,自己不仅是在学习一门复杂的技术,更是在探索一个充满未知与挑战的神秘领域。 入夜,墨小黑一脸无奈地盯着电脑屏幕,思考着自…...

计算机网络之分组交换时延的计算
一.类型 分组交换的时延包括一下几种: 1.1发送时延 发送时延,也叫传输时延,结点将分组的所有比特推向链路所需要的时间,即从发送分组的第一个比特算起,到该分组的最后一个比特发送完为止。 发送时延 分组长度 / 发…...

虚幻5|入门AI行为树,建立敌人
本章分成两块部分一块是第一点的制作一个简单的AI,后面第二点之后是第二部分建立ai行为树。这两个部分是一个衔接,最好不要跳看 一,制作一个简单的AI 1.首先,我们创建一个敌人的角色蓝图,添加一个场景组件widget用于…...

ARM处理架构中的PMU(Performance Monitoring Unit)和 AMU(Activity Monitors Unit)简介
在 ARM 架构中,PMU(Performance Monitoring Unit)和 AMU(Activity Monitors Unit)是用于性能分析和监控的硬件单元,但它们的功能和应用场景有所不同。以下是它们的主要区别: 1. PMU (Performance Monitoring Unit) 功能:PMU 是一种用于监控处理器性能的硬件单元。它可…...

Service服务在Android中的使用
目录 一,Service简介 二,Service的两种启动方式 1,非绑定式启动Service 2,绑定式启动Service 三,Service的生命周期 1,非绑定式Service的生命周期 2,绑定式Service的生命周期 四…...

浅谈C语言位段
1、位段的定义 百度百科中是这样解释位段的: 位段,C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“位域”( bit field) 。利用位段能够用较少的位数存储数据。 以下,我们均在VS2022的…...
arcgisserver登陆信息不正确
密码明明对,但是登录提示登录信息不正确 Arcgis server 9.3.1 无法登录ArcGIS Manager 提示Incorrect Login Information 操作系统windows 2008 x64server 解决办法: 关闭window防火墙解决。 如果防火墙已经关闭: 通过修改用户口令后就可以重…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...

轻量级Docker管理工具Docker Switchboard
简介 什么是 Docker Switchboard ? Docker Switchboard 是一个轻量级的 Web 应用程序,用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器,使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...
JavaScript 标签加载
目录 JavaScript 标签加载script 标签的 async 和 defer 属性,分别代表什么,有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...