1. 背景
花了整整两天时间,本 qiang~ 开发了一个关于 AI 新闻资讯的自动聚合及报告生成工具。
本篇记录一下整体的框架和实现原理,并且本着它山之石可以攻玉,本 qiang~ 开放了所有的源码,源码可见如下第 5 章节,感谢各位看官的大力支持。如有问题,可私信或留言沟通。
成品可以参考链接:《 AI 资讯每日速递 (2024.11.05) 》
2. 为什么要做这件事?
深处 AI 时代,想要追赶前沿的一手技术与资讯,有一个工具能够实时获取每天的重点内容,包括咨询和技术相关内容,并且能够按照公司及内容的优先级进行筛选,然后午后捧着一杯奶茶,点开自动生成的报告,岂不美哉美哉?
3. 相关技术
- Crawl4ai : 一块集成 LLM 的开源爬虫工具
- Swarm : OpenAI 发布的 Multi-Agent 编排框架,可以参考本人先前的辛苦整理:《 LLM 应用实战 : OpenAI 多代理框架 -Swarm 》
- Python-docx : word 的操作工具
- Textdistance : 用于报告模块中资讯排序结果与原始资讯结果的对齐
- Gpt-4o-mini : 采用的大模型是 gpt-4o-mini ,每日免费调用 200 次,不够用 ...
4. 整体框架
整体框架分为三个模块:
4.1 下载模块
下载模块的数据源包括各大 AI 新闻网站及知名博客,然后通过开源爬虫工具 crawl4ai 进行爬取,爬取的维度包括标题、内容、图片等。
4.2 解析模块
解析模块是针对爬取的结果进行解析,采用 OpenAi Swarm 框架,包含 4 个 Agent ,其中 Analysis Agent 是主体 Agent ,遍历下载的每一个资讯,将每条资讯分别同步给其他 Agent 完成具体的解析任务。其中 Translator Agent 主要功能是翻译,将英文翻译为中文; Classifier Agent 主要功能是针对资讯进行分类,如涉及技术还是产品之类的; Modifier Agent 主要功能是将资讯的标题和内容进行改写,标题可以改写更醒目一些,内容主要是提取摘要信息。
Analysis Agent 负责串联其他 3 个 Agent ,每个 Agent 结束后均会返回到 Analysis Agent ,以便让 Analysis Agent 决定下一步的操作。
4.3 报告模块
报告模块包含 Sorter Agent ,主要功能是将解析后的资讯按照公司、内容等维度进行排序,然后筛选出其中相对排名较高的资讯。
经过排序 Agent 后,最终将结果保存为 word 。
5. 全部源码
5.1 下载模块
采用 crawl4ai 工具进行网站爬取,示例的网站是 https://www.aibase.com ,网站存在中文及英文,但增加翻译 Agent 是为了兼容其他网站。
1. 文件处理 file_util.py
2. 网站爬取 web_crawler.py
5.2 解析模块
1. 解析提示语prompt.py
2. 解析Agent整体流程agent.py
5.3 报告模块
1. 排序提示语prompt.py
2. 排序流程agent.py
3. 报告生成word_util.py
6. 优化思考
1. 爬取模块目前是串行下载,且未增加反爬机制 ,后续可以增加多线程,且增加代理池机制。
2. 免费的 gpt-4o-mini 每日调用次数仅有 200 次,执行本任务远远不够 ,因此后期尝试切换为私有部署的 Qwen2.5 。
其实已经尝试了 Qwen2.5 ,以 vllm 部署,但与 Swarm 框架中的 OpenAi 接口存在少许不兼容,例如不支持特定的参数,只能运行一轮。不过可以进一步优化 Swarm 框架来进行适配。
本次实验本 qiang~ 花费了 30 大洋,买了一个 gpt-4o-mini ,生成最终结果,直接耗费了其中的 8 个大洋,烧钱 ....
3. 信息推送机制不支持,如一键同步 到公众号、 CSDN 、知乎,这块如果有精力可以基于网站的开发接口,实现一键自动发布文章。
7. 总结
一句话足矣 ~
开发了一块 AI 资讯的自动聚合及报告生成工具,包括具体的框架、实现原理以及完整源码,满满诚意,提供给各位看官。欢迎转发、订阅 ~
有问题可以私信或留言沟通!
8. 参考
(1) Swarm: https://GitHub.com/openai/swarm
(2) Crawl4ai: https://github.com/unclecode/crawl4ai
(3) 资讯网站 : https://www.aibase.com/news