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

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

相关推荐
西岸行者6 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码6 天前
嵌入式学习路线
学习
毛小茛6 天前
计算机系统概论——校验码
学习
babe小鑫6 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms6 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下6 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。6 天前
2026.2.25监控学习
学习
im_AMBER6 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J7 天前
从“Hello World“ 开始 C++
c语言·c++·学习