官方文档:
学习手册及教程:
第一章 前期准备
安装提供了两种方式,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
关于数据科学,基于数据集做相关性分析的。