【技术前沿】MetaGPT入门安装部署——用多个大语言模型解决任务!一键安装,只需填写OpenAI API

news2024/12/23 3:46:12

项目简介

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 options
  model: "gpt-4-turbo"  # or gpt-3.5-turbo
  base_url: "https://api.openai.com/v1"  # or forward url / other llm url
  api_key: "YOUR_API_KEY"

MetaGPT 支持一系列 LLM 模型。根据需要配置模型 API 密钥。
也可以配置Claude:

llm:
  api_type: 'claude' # or anthropic
  base_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/ddg
  api_key: 'YOUR_API_KEY'
  cse_id: 'YOUR_CSE_ID' # only for google
 params:
   engine: google # google/bing/yahoo/baidu/yandex, check https://serpapi.com/bing-search-api for more details
   google_domain: 'google.com'
   gl: us
   hl: en

使用MetaGPT、导入已有的角色

我们可以用下面的代码来导入一个产品经理。
具体更复杂的用法,可以参考这个文档:Tutorials

import asyncio

from metagpt.context import Context
from metagpt.roles.product_manager import ProductManager
from metagpt.logs import logger

async 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 object
    role = 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_history

async 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.jsondata/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!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2048042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

点接触导致Fluent Meshing网格划分出错的处理

问题概述 在CFD建模中,几何处理有时会出现两个面是单点接触的情形。 举例如下图所示,在球形计算域内部,存在分别用黄色和粉红色标记的内部悬浮面,两者接触区域为一个点,而非一条曲线。 上述几何模型可正确的导入Flue…

从零搭建xxl-job(四):xxljob进行一些性能优化

之前的代码这部分并没有补充完毕,假如调度中心如果判断有定时任务要执行了,该怎么远程通知给执行定时任务的程序呢?当定时任务要把自己的信息发送给调度中心时,是通过一个RegistryParam对象发送的。该对象内部封装了定时任务相关的…

鸿蒙自定义Tab,可居左显示

最近写鸿蒙项目时,需要用到类似Android的TabLayout控件,鸿蒙官方也有提供类似实现的组件Tabs。但是官方Tabs组件,实在有点鸡肋,首先 TabContent和 TabBar是绑定在一起的放在Tabs里面的,如果UI是TabBar的背景是一个整体…

可视化大屏入口界面,炫酷科技又不失简洁时尚。

可视化大屏界面,大家见到很多了,当可视化大屏是多个系统的融合,而且彼此又相互独立,就需要设计一个入口页面,便于分流客户,这次我给大家分享一批。 设计可视化大屏入口界面时,可以结合炫酷科技…

#laravel部署安装报错loadFactoriesFrom是undefined method #

场景: 在git上clone一个项目代码吗laravel版本是5.6 php的版本是7.1 但是运行的时候一直提示错误 Call to undefined method Eachdemo\Rbac\RbacServiceProvider::loadFactoriesFrom() 解决办法: 给RbacServiceProvider,手动添加方…

中国生态地理区划更新和优化

在机器学习或深度学习研究时,建立的模型用于不同地区或时间的数据进行泛化时,其泛化能力往往较差,所以目前在遥感领域用深度学习或机器学习建模时很多文献都是建立分区的模型,即在不同的地理分区内建立模型,泛化时针对…

代码随想录算法训练营第十八天

力扣题部分: 530.二叉搜索树的最小绝对差 题目链接: 题面: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 思路: 写关于二叉搜索树的问题,一定要先掌握二…

socket回显服务器练习

前言 什么是回显服务器(echo server)呢? 回显服务器接收客户端发送的任何数据,并将这些数据原封不动地发送回客户端。回显服务器在连接成功的基础上只需要知道如何在客户端将收到的信息打印输出到控制台即可。我接下来会使用两种方法来输出,…

“TCP粘包”不是TCP的问题!

前言 写RPC用了Netty。涉及到粘包拆包问题。想复习一下。发现网上博客多是概念模糊不清。没有触及本质或者没有讲清楚。 遂决定自己写一篇 “TCP粘包”是谁的问题? 首先我们要明确TCP是面向字节流的协议。也就是说我们在应用层想使用TCP来传输数据时,…

ARM 处理器异常处理机制详解

目录 异常 异常源 异常处理 异常向量表 安装设置异常向量表及保存现场指令 异常处理的返回 异常源与异常模式对应关系 异常响应优先级 ARM7-11 有7种基本工作模式,而 Cortex-A 系列处理器则额外支持 Monitor 模式: User:非特权模式&…

测试流程自动化实践!

测试流程自动化的最佳实践涉及多个方面,旨在提高测试效率、确保测试质量,并降低测试成本。以下是一些关键的实践方法: 1. 明确测试目标 确定测试范围:在开始自动化测试之前,需要明确哪些功能、模块或场景需要被测试。…

Leetcode JAVA刷刷站(39)组合总和

一、题目概述 二、思路方向 为了解决这个问题,我们可以使用回溯算法来找到所有可能的组合,使得组合中的数字之和等于目标数 target。因为数组中的元素可以无限制地重复选择,所以在回溯过程中,我们不需要跳过已经选择的元素&#x…

python爬虫爬取某图书网页实例

文章目录 导入相应的库正确地设置代码的基础部分设置循环遍历遍历URL保存图片和文档全部代码即详细注释 下面是通过requests库来对ajax页面进行爬取的案例,与正常页面不同,这里我们获取url的方式也会不同,这里我们通过爬取一个简单的ajax小说…

第N6周:中文文本分类-Pytorch实现

本文为365天深度学习训练营 中的学习记录博客原作者:K同学啊 一、准备工作 任务说明 本次将使用PyTorch实现中文文本分类。主要代码与N1周基本一致,不同的是本次任务中使用了本地的中文数据,数据示例如下: 任务: ●1…

Diffusion Model相关论文解析之(二)DENOISING DIFFUSION IMPLICIT MODELS

目录 1、摘要2、创新点3、主要公式4、自己的理解,对错不确定 1、摘要 ‌Denoising Diffusion Implicit Models (DDIM)‌是一种扩散模型的改进版本,旨在加速采样过程并提高采样速度。DDIM通过引入非马尔可夫扩散过程,相对于传统的去噪扩散概率…

H. Ksyusha and the Loaded Set

https://codeforces.com/contest/2000/problem/H div3 H 一开始看就感觉要维护一些比较有趣的量 看了一下数据范围ai<2e6,k<2e6 似乎可以直接开一个线段树来表示是否存在集合当中 我们开4e6维护每个数字是否存在&#xff0c;ai2e6时候k2e6&#xff0c;最大是4e6 存在…

用python 实现一个简易的“我的世界”游戏(超详细教程)

编写一个完整的“我的世界”游戏风格的程序在Python中是一个相当复杂的任务&#xff0c;因为它涉及到图形渲染、物理引擎、用户交互等多个方面。然而&#xff0c;我们可以创建一个简化的、基于文本的“我的世界”风格的探险游戏&#xff0c;来展示基本的游戏逻辑和交互。 第一步…

基于Spring Boot的高效宠物购物平台

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

STM32单片机 主、从、触发模式

主模式&#xff0c;将定时器内部信号映射到TRGO引脚&#xff0c;用于触发别的外设 在手册 控制寄存器2 一节可以知道各种主模式的解释从模式&#xff0c;接收其他外设或者自身外设的一些信号&#xff0c;用于控制自身定时器的运行&#xff0c;被别的信号控制触发源选择&#xf…

使用Logstash同步MySql数据到Elasticsearch

1、下载Logstash logstash下载地址 环境为 windows 2、将Logstash压缩包进行解压 将 mysql 驱动文件放在文件夹内 在Logstash根目录下创建 mysql-es.conf文件 input {jdbc {jdbc_driver_library > "E:\linshi\mysql-connector-java-8.0.11\mysql-connector-java-8.…