-
订阅Agent:让Agent为我们关注某些想关注的信息,当有我们关注的事件发生时,Agent获取信息并进行处理,然后通过一些如邮件、微信、discord等通知渠道将处理后的信息发送给我们
- 订阅Agent = 咨询订阅员Role + [SearchInfo Action, Summary Action]; 扩展: 定时发送,发送通知渠道
-
订阅Agent的第一个例子 SubscriptionRunner
- 是使用Runner(SubscriptRunner运行3个要素Role(Searcher), Trigger, Callback;宏观的理解SubscriptionRunner的功能,即是实现订阅一个角色及其行为(e.g. Searcher Role),发生的触发条件,回调行为;
- 此例踩坑严重,参考这里
-
Python Package所需知识
-
因为request常需要访问国外service, 而aiohttp 默认不走系统代理,metagpt的 key.yaml参数GLOBAL_PROXY
用于设置全局代理
-
实现概述
- OSSWatcher Role:定义该role从某个网站获取信息,将相关信息推送给我们
- Trigger: 是指这个OSSWatcher触发的条件,e.g. 定时 / 某个网站有更新时, etc
- Callback: 处理OSSWatcher role返回的Message信息,e.g. 将数据发送到微信或discord
-
实现
- 确认OSSWatcher需要哪些Action: 爬取热门开源项目 / 分析热门开源项目
- GitHub Trending: 热门开源项目的来源, 是github的主要板块之一,主要展示指定时间段内github上最受关注,热度上升的最快的的资源库和开发者 - "热搜榜"
- 如何分析:可以对爬取网页进行分析,以如下比较通用的角度:
- 编程语言趋势:观察Trending列表中使用的language,了解哪些编程语言在开发者社区中更受欢迎
- 项目类型和用途
- 活跃度
- 新兴技术和工具
- 通过对话请chatgpt写出针对github trending的爬虫代码,参考教程的版本
- OssWatcher Role & 2 actions
- OssTrigger类是定义如何触发Role的动作, 在触发时一般也会返回一条Message;这里我们实现2个Trigger,一个是隔一段时间通知,一个是利用aiocron, pytz在每天8点定时触发;
思考1:如果需要榜单更新再推送,可以如何实现?
思考2:Crontab的定时方式可能不是很方便进行调试,有什么方便调试的方法吗?
- OssCallback, 回调的动作设定为把Message发送到微信/discord上;
-
task4 作业: 任务要求见这里
- crawler实现踩坑非常严重,见这里
- 需求:
- 写一个爬取huggingface paper detail的爬虫;
- 把crawler爬到的信息作为输入,写一个Role+Action,参考$3的WriteDirector & WriteContent action生成目录和2级标题分块,根据2级标题写分析总结,形成一篇咨询文档;WriteDirectory 调用crawler的爬取papers outline信息;WriteContent爬取每个paper的detail信息;中间可以提示询问用户选取想看那个paper的摘要,可以把simple code & simple code run加入进来。并且可以考虑用原生python + function call实现选取第二阶段爬取的方式;
- 自定义SubscriptionRunner,Trigger,Callback,让此agent定时发布邮件给用户
- 代码实现:OSSWatcher