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

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

相关推荐
VertexGeek13 分钟前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
二进制_博客1 小时前
Flink学习连载文章4-flink中的各种转换操作
大数据·学习·flink
codebolt1 小时前
ADS学习记录
学习
Komorebi.py2 小时前
【Linux】-学习笔记05
linux·笔记·学习
朝九晚五ฺ10 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
猫爪笔记11 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html
pq113_612 小时前
ftdi_sio应用学习笔记 3 - GPIO
笔记·学习·ftdi_sio
澄澈i12 小时前
设计模式学习[8]---原型模式
学习·设计模式·原型模式
爱米的前端小笔记13 小时前
前端八股自学笔记分享—页面布局(二)
前端·笔记·学习·面试·求职招聘
alikami13 小时前
【前端】前端学习
学习