MetaGPT教程学习笔记

官方文档:

MetaGPT: 多智能体框架 | MetaGPT

学习手册及教程:

Docs

Docs


第一章 前期准备

安装提供了两种方式,pip和github安装包。

配置也提供了两种方式,执行命令或在config.yaml中修改,需提前获取API key。

或者适配国内的大模型。

第二章 AI agent知识体系结构

智能体 = LLM+观察+思考+行动+记忆

多智能体 = 智能体+环境+SOP+评审+路由+订阅+经济。

智能体及智能体案例;

菜单式交互界面变为Agent交互界面;搜索引擎的另一种方式。

思考的树状结构。

ZeroShot零样本学习。

agent像一个类,包含属性和方法,可以与其他类进行交互。

第三章 metaGPT框架组件介绍

角色role类被抽象为agent。单agent和多agent。

相对于其他类多了观察和思考功能,自行规划后续动作。

单动作agent-生成代码:

场景:输入需求,执行代码。

两个类SimpleCoder(Role);SimpleWriteCode(Action)。

重写上述两个类。继承的Role和Action中有很多方法,单看修改后的代码不知道整个代码的运行动作,即执行run后,不知道run后都调用了哪些方法。

对消息、观察进行了封装。run方法怎么引用act方法的没看懂。

多动作agent:

场景:输入需求,并执行代码(在本地执行),返回执行结果。

怎么依次执行writeCode和runCode这两个动作的,没看懂。

复杂agent:

场景:写长文档,先让大模型生成文档目录,再基于目录的二级标题进行分块,对于每个小标题生成消息内容,最后将标题与内容进行拼接,解决大模型长文本限制问题。

开发流程:写大纲、基于大纲写内容、角色控制整个过程。

第四章:OSS-订阅智能体

业务场景:爬取github-trending上的信息,只筛选前几条,通过discord或wechat发送。

开发流程:爬取网页、解析网页、大模型解析总结、将总结的内容定时发送、discord/wechat接口、角色串联整个动作。

大模型的作用是进行了解析和总结。如果没有大模型,也能实现。

订阅智能体的实现过程:要分别完成SubscriptionRunner运行需要的三个要素:Role、Trigger、Callback,Trigger是触发器,我们实现了一个定时触发器,Callback是回调函数,我们实现了将消息发送到discord/微信,Callback,Trigger这二者比较固定,实现后可以复用.

第五章 ActionNode

树状CoT(思维链)。

业务场景:设计一款贪吃蛇的游戏,把不同的流程分给不同的ActionNode。感觉意义不大。属于action类的细分,action类可以实现这样的特点,没必要再添加一个单独的特殊类。

优点为可简化对Action的重新修改,省很多重复代码。

第六章 订阅智能体进阶

Role变得通用呢?可以有两个思路:1. 我们实现一个智能体,它可以爬取我们要求的任意网站,然后进行数据的分析,最后再总结;2. 实现一个可以写订阅智能体代码的智能体,这个智能体可以浏览我们需要爬取的网页,写爬虫和网页信息提取的代码,生成Role,甚至根据我们的订阅需求,直接完整调用SubscriptionRunner,实现我们的订阅需求

使用了aiohttp成功爬取了Github Trending的数据,爬取动态网页或有反爬机制实现起来成本太高,可以使用浏览器自动化的方式来爬取网页,从而让我们的网页爬取实现更加简单,python中也有很多的浏览器自动化工具,例如Selenium、Playwright,浏览器自动化是通过编程方式控制和操作浏览器的过程,即通过浏览器直接打开网页,所以正常人可以浏览的页面,基本都可以通过这个方式进行爬取。

但不能找到一个通用的网页特定信息提取方式。所以用思路2------先写爬虫代码。困难点:html内容过长;token容易消耗过多。解决方案:添加一个网页数据分析的Action,并提一个需求实现自动写爬虫,类似爬虫工程师的角色。

如果遇到反爬或动态网页,大模型也不太好解决。

总结:该教程介绍了智能体agent,MetaGPT框架。通过智能体的角度将业务场景抽象为角色执行类需求。

各举例场景:

单动作智能体基于需求写代码;多动作智能体基于需求写完代码后,还能再执行下代码;复制智能体可以基于需求写大纲,并基于每个大纲的子标题写内容,最后再将内容拼接起来。

订阅智能体,爬取网页并将爬取内容转发到社交平台。用python就可以实现,通过智能体抽象后,爬取网页、解析网页、大模型理解并总结、触发定时爬取任务、回调函数爬取完成后发到社交平台等各个动作抽象为action,智能体串接和实现整个action。

ActionNode可简化继承和重写Action的相关代码,让COT(思维链)实现起来更简单丝滑。

订阅智能体进阶,目标是让订阅变得更通用,提一个想获取哪个网页的目的信息的需求,智能体能自动实现,方案是加了一个自动观察网页和写爬虫代码的动作,如果某些网页反爬机制比较严格,爬虫代码写不出来,该需求就实现不了了。

总体来看,该框架的Role、Action、Team、Message等抽象容易理解,并在一定程度上可以少写很多代码。感兴趣的点,产品经理、测试QA角色,以及如何通过反复的测试提高代码质量,循环结束后仍不能解决问题怎么办。这个课程确实是一个初级入门课程,但看里面的代码还是有些吃力,python代码理解能力较弱。映射关系也有些复杂,看着看着就找不到上下文了,稍微大点的工程都会遇到这个问题,java还能跳来跳去的找上下文,python不会了。

遗留问题点:

1.run方法怎么引用act方法的没看懂。

2.怎么依次执行writeCode和runCode这两个动作的,没看懂。

对应的论文看起来很舒服,第二篇没看懂:

MetaGPT META PROGRAMING FOR A MULTI-AGENT COLLABORATIVE FRAMEWORK,2023.

介绍多智能体框架,通过软件工程的理念,将软件开发SOP(标准工作流程)化,抽象多种角色完成复杂的软件开发工作,还引入了自我迭代和优化策略。通过将上述想法抽象为框架,搭建的多智能体组合在大模型测试集上的数据优于所有模型。

Data Interpreter An LLM Agent For Data Science

关于数据科学,基于数据集做相关性分析的。

相关推荐
Code哈哈笑27 分钟前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
QQ同步助手1 小时前
如何正确使用人工智能:开启智慧学习与创新之旅
人工智能·学习·百度
流浪的小新1 小时前
【AI】人工智能、LLM学习资源汇总
人工智能·学习
A懿轩A2 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
haibo21448 小时前
GPT-Omni 与 Mini-Omni2:创新与性能的结合
gpt
hunteritself10 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
南宫生10 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__10 小时前
Web APIs学习 (操作DOM BOM)
学习
数据的世界0112 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐13 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习