基于MetaGPT的LLM Agent学习实战(一)

在这page
里插入图片描述

前言

我最近一直在做基于AI Agent 的个人项目, 因为工作加班较多,设计思考时间不足,这里借着Datawhale的开源学习课程《MetaGPT智能体理论与实战》课程,来完善自己的思路,抛砖引玉,和各位开发者一起学习!

一、介绍

今天是打卡的第一天,先说说主要的学习内容:

  • 获取MetaGPT
    • 部署到本地环境
  • 配置MetaGPT
    • 申请ChatGPT API Key
    • 基于ChatGPT API构建调用代码
  • 运行MetaGPT案例代码进行测试

今天学习的内容较为简单,我会尽量以简洁的语言详细描述清楚这个流程,带着读者一起学习Agent开发;

二、配置MetaGPT运行环境

声明
  • python版本为3.9+
  • 为了方便学习,这里我使用jupyter notebook进行讲解;
  • 所有代码我都会同步提交到Github和Gitee,如果各位读者觉得我写的不错,可以给我一个Star.
1. 查看Python版本

为了确保我们的Python环境正确,首先要检查Python的版本。可以使用以下命令来查看Python版本:

!python3 --version

如果上面的命令不起作用或者报错,可以尝试使用以下命令:

python --version

输出

Python 3.10.13
2. 安装MetaGPT

要安装MetaGPT,我们可以使用pip来获取它。以下是在终端中安装MetaGPT的命令:

pip install metagpt==0.6.6

如果你在国内环境,并且希望加速安装过程,可以使用清华源进行按照:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple metagpt==0.6.6

也可以通过拉取官方仓库进行安装:

git clone https://github.com/geekan/MetaGPT.git
cd /your/path/to/MetaGPT
pip install -e .

这里有个重点,如果你的OpenAI API Key是直连且不限速版本,你只需要安装包即可,
如果你的API Key为免费API且有速率限制,我这里建议你直接clone MetaGPT的GitHub仓库,其可以在config2.yaml中自定义配置代理服务器和Key,我在运行MetaGPT的过程中遇到的最大问题就是API限速导致程序报错;所以一定要注意这一点;

作者因为使用的是中转的API Key,因此选择了方法3:

git clone https://github.com/geekan/MetaGPT.git
cd MetaGPT
pip install -e .

我们在config/config2.yaml中配置自己的api key和 base_url 以及选择的model:

llm:api_type: "openai"  # or azure / ollama / groq etc.model: "gpt-4-turbo"  # or gpt-3.5-turbobase_url: "https://api.openai.com/v1"  # or forward url / other llm urlapi_key: "YOUR_API_KEY"
3. 配置MetaGPT

为了配置MetaGPT,你需要调用ChatGPT API服务。你可以在这里查看具体配置方式。如果你没有科学环境,也可以通过去tb buy 一个 中转的 API Key来实现。我们主要介绍官方申请方法:

中转方案修改的部分我在代码中也已经标出

① 登录自己的账号
login
②创建API Key
create key
copy
③本地配置环境变量

import os
os.environ["OPENAI_API_KEY"] = "sk-..."  # 填入你自己的OpenAI API key
os.environ["OPENAI_API_MODEL"] = "gpt-3.5-turbo" # 选择你要使用的模型,例如:gpt-4, gpt-3.5-turbo
os.environ["OPENAI_API_BASE"] = "https://api.openai-forward.com/v1" # 调整API请求地址,设置访问中转代理服务器,如果是商家购买的,可以联系商家要代理服务器地址,这里并不是固定的

④验证配置是否成功:

from openai import OpenAI# client = OpenAI(api_key='sk-......') # 官网直连版本
client = OpenAI(base_url="https://xxxx.com", # 这里填写你的中转服务器地址api_key='sk-......') # 这里填写你的中转apikey
completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "你是一个WebGIS开发者,测绘地理和全栈开发精通."},{"role": "user", "content": "聊聊国内外WebGIS开发与AI结合的场景现在我们可以聊聊国内外WebGIS开发与AI LLM Agent结合的场景吧"}]
)
print(completion.choices[0].message.content)

运行结果如下:
result
🎉🎉🎉bingo!!运行成功,我们成功拿到了我们要的方案!

通过以上步骤,我们终于成功配置MetaGPT,并开始使用它进行各种任务了。

三. 使用MetaGPT

接下来,我们通过下面这个案例,我们用以验证环境配置是否成功,并初次体验多智能体框架中的指令 - 动作 - 角色 - 环境 - 团队的抽象概念。在这个示例中,我们创建了一个团队,其中包括产品经理、架构师、项目经理和工程师。然后,我们投资并运行一个项目,最后让团队运行五轮。

import asyncio
from metagpt.roles import (Architect,Engineer,ProductManager,ProjectManager,
)
from metagpt.team import Teamasync def startup(idea: str):company = Team()company.hire([ProductManager(),Architect(),ProjectManager(),Engineer(),])company.invest(investment=3.0)company.run_project(idea=idea)await company.run(n_round=5)await startup(idea="write a cli blackjack game")

这里我copy了其中几轮Agent的回答,可以看到我们的AI团队已经运行起来了;

[CONTENT]
{"Language": "en_us","Programming Language": "Python","Original Requirements": "write a cli blackjack game","Project Name": "cli_blackjack_game","Product Goals": ["Create an engaging and interactive gameplay experience","Ensure smooth and intuitive user interface for seamless gameplay","Implement various difficulty levels to cater to different player skills"],"User Stories": ["As a player, I want to be able to start a new game easily","As a player, I want to see my current score and progress during the game","As a player, I want to have options to hit, stand, or double down during my turn","As a player, I want to receive clear instructions on how to play the game","As a player, I want to feel the excitement and challenge of a real blackjack game"],"Competitive Analysis": ["Blackjack Game A: Basic interface, lacks interactive features","Blackjack Pro: Offers advanced gameplay options and strategy guides","Blackjack Master: Provides a realistic casino experience with multiplayer mode"],"Competitive Quadrant Chart": "quadrantChart\n    title \"Engagement and User Experience\"\n    x-axis \"Low Engagement\" --> \"High Engagement\"\n    y-axis \"Low User Experience\" --> \"High User Experience\"\n    quadrant-1 \"Enhance Features\"\n    quadrant-2 \"Improve User Experience\"\n    quadrant-3 \"Optimize Engagement\"\n    quadrant-4 \"Maximize User Satisfaction\"\n    \"Blackjack Game A\": [0.3, 0.4]\n    \"Blackjack Pro\": [0.6, 0.7]\n    \"Blackjack Master\": [0.8, 0.9]\n    \"Our CLI Blackjack Game\": [0.5, 0.6]","Requirement Analysis": "","Requirement Pool": [["P0","Implement basic game logic for blackjack"],["P1","Create a scoring system to track player progress"],["P2","Develop a user-friendly interface for easy navigation"],["P2","Incorporate different difficulty levels for player choice"],["P1","Include clear instructions on how to play the game"]],"UI Design draft": "The UI will include options for hitting, standing, and doubling down. It will display the player's current score and provide clear instructions for gameplay.","Anything
2024-05-12 17:36:48.720 | ERROR    | metagpt.utils.common:log_it:554 - Finished call to 'metagpt.actions.action_node.ActionNode._aask_v1' after 10.724(s), this was the 1st time calling it. exp: openai.types.completion_usage.CompletionUsage() argument after ** must be a mapping, not NoneTypeUNCLEAR": ""
}
[/CONTENT][CONTENT]
{"Language": "en_us","Programming Language": "Python","Original Requirements": "write a cli blackjack game","Project Name": "cli_blackjack_game","Product Goals": ["Create an engaging CLI experience for users","Ensure smooth gameplay and fair card dealing logic","Provide an enjoyable and interactive blackjack game"],"User Stories": ["As a player, I want to be able to place bets and receive cards","As a player, I want to have options like hit, stand, double down","As a player, I want to see my current balance and game outcome"],"Competitive Analysis": ["Blackjack Game A: Basic CLI interface, lacks interactive features","cli-blackjack.io: Offers various betting options and clear game instructions","blackjack-cli.com: Provides realistic card dealing but lacks betting flexibility"],"Competitive Quadrant Chart": "quadrantChart\n    title \"Engagement and User Experience\"\n    x-axis \"Low Engagement\" --> \"High Engagement\"\n    y-axis \"Low User Experience\" --> \"High User Experience\"\n    quadrant-1 \"Enhance Features\"\n    quadrant-2 \"Improve User Experience\"\n    quadrant-3 \"Optimize Engagement\"\n    quadrant-4 \"Maintain Quality\"\n    \"Blackjack Game A\": [0.3, 0.6]\n    \"cli-blackjack.io\": [0.45, 0.23]\n    \"blackjack-cli.com\": [0.57, 0.69]\n    \"Our CLI Blackjack Game\": [0.5, 0.6]","Requirement Analysis": "","Requirement Pool": [["P0","Implement card dealing and betting system"],["P1","Include game logic for hit, stand, and double down actions"],["P2","Display player balance and game outcomes"]],"UI Design draft": "Simple text-based interface with clear instructions and game status
2024-05-12 17:36:57.136 | ERROR    | metagpt.utils.common:log_it:554 - Finished call to 'metagpt.actions.action_node.ActionNode._aask_v1' after 19.140(s), this was the 2nd time calling it. exp: openai.types.completion_usage.CompletionUsage() argument after ** must be a mapping, not NoneTypeupdates.","Anything UNCLEAR": ""
}
[/CONTENT]

通过以上步骤,我们可以开始使用MetaGPT进行各种任务,并看到AI Agent的强大潜力!

四、总结

本文是这个打卡系列的第一篇文章,也是后续学习的基础,通过这篇文章,我们了解了MetaGPT开发的基础环境配置方法,在下一篇文章中,我们将深入理解AI Agent的理论,并通过代码来实现Agent的每个模块需求,希望我的文章对各位读者和开发者有所帮助!期待后续学习!!😀😀😀

参考文献

  • MetaGPT 官方文档

项目地址

  • Github地址

如果觉得我的文章对您有帮助,三连+关注便是对我创作的最大鼓励!或者一个star🌟也可以😂.

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 8.4参考手册

5.1 连接到服务器和断开服务器连接 host 和 user 表示主机名,其中 MySQL服务器正在运行,并且您的MySQL帐户的用户名。 为您的设置替换适当的值。代表您的密码;输入它 当 MySQL 显示提示时。********Enter password: 5.2 输入查询 mysql> SELECT VERSI…

美国分析人工智能技术对网络格局的影响(中)

文章目录 前言三、剑更锋利,盾更坚固四、各国对于储存与披露已发现的漏洞有不同的国家级法规五、人工智能将如何改变网络安全的问题既是一个技术问题,也是一个政策问题前言 美国政府正在探索如何使用人工智能来增强其网络能力,如何使用人工智能来加强网络防御,以及如何最好…

照明灯具十大排名都有哪些?市面上比较流行的十大护眼台灯品牌推荐

照明灯具十大排名都有哪些?护眼台灯排名当中靠前的主要有书客、飞利浦、松下等品牌。照明灯具作为家居与办公环境中不可或缺的元素,其品质与选择直接关系到人们的视觉健康与舒适度。本文将为大家揭示照明灯具的十大排名,让大家了解市场上最受…

[QNX] BSP 网络性能优化:调优io-pkt和ClockPeriod提升网速

0 概要 本文介绍如何在QNX系统上优化网络性能,主要通过调整io-pkt和ClockPeriod参数来实现。通过优化,网络吞吐量可以得到显著提升。 1 优化方法 1.1 调整io-pkt的mclbytes参数: io-pkt是QNX系统中常用的网络协议栈,其mclbytes参数指定了…

HTML的使用(上)

文章目录 前言一、HTML是什么&#xff1f;二、使用内容 &#xff08;1&#xff09;换行标记<br>&#xff08;2&#xff09;加粗标记<b> </b>&#xff08;3&#xff09;段落标记<p> </p>&#xff08;4&#xff09;标题标记<h1>~<h6> …

韵搜坊(全栈)-- 前后端初始化

文章目录 前端初始化后端初始化 前端初始化 使用ant design of vue 组件库 官网快速上手&#xff1a;https://www.antdv.com/docs/vue/getting-started-cn 安装脚手架工具 进入cmd $ npm install -g vue/cli # OR $ yarn global add vue/cli创建一个项目 $ vue create ant…

运维基础(二)- 钉钉的使用

一、钉钉的介绍&#xff08;来自百度百科&#xff09; 免费沟通和协同的多端平台 帮助中国企业通过系统化的解决方案&#xff08;微应用&#xff09;&#xff0c;全方位提升中国企业沟通和协同效率。 钉钉&#xff08;Ding Talk&#xff09; 是阿里巴巴打造的企业级智能移动…

安利一个轻量级流程引擎compileflow

写在文章开头 今日推荐一个比较轻量级的工作流引擎——即阿里的compileflow&#xff0c;这款流程引擎算是笔者接触过流程引擎中相对轻量级、且性能和集成扩展表现都比较良好的框架&#xff0c;本文就会从几种常见的使用场景以及源码分析的角度介绍这款工具。 Hi&#xff0c;我…

邓闲小——生存、生活、生命|真北写作

人生有三个层次∶生存、生活、生命。 生存就是做必须做的事。生存的模式是邓&#xff0c;是交易&#xff0c;是买卖。别人需要的东西&#xff0c;你生产出来&#xff0c;卖给他。哪怕这个东西没啥用&#xff0c;也可以卖&#xff0c;情绪也可以卖。你需要的东西&#xff0c;你花…

社交媒体数据恢复:派派

派派是一款非常流行的社交软件&#xff0c;但是如果你在使用派派的过程中&#xff0c;不小心删除了一些重要的聊天记录或者其他数据&#xff0c;那么该怎么办呢&#xff1f;下面是一些简单的步骤&#xff0c;可以帮助你进行数据恢复。 1. 首先打开派派&#xff0c;并进入需要恢…

【论文复刻】堆叠柱状图+饼图

复刻了一下这篇论文里的fig2c&#xff1a;Impacts of COVID-19 and fiscal stimuli on global emissions and the Paris Agreement | Nature Climate Change 效果图&#xff1a; 主要步骤&#xff1a; 1. 数据准备&#xff1a;随机赋值 2. 图像绘制&#xff1a;绘制堆叠柱状…

无列名注入

在进行sql注入时&#xff0c;一般都是使用 information_schema 库来获取表名与列名&#xff0c;因此有一种场景是传入参数时会将 information_schema 过滤 在这种情况下&#xff0c;由于 information_schema 无法使用&#xff0c;我们无法获取表名与列名。 表名获取方式 Inn…