记录智能阅读助手 ReaderGPT 开发过程

这篇文章是关于智能阅读助手 ReaderGPT 开发过程的记录,尽管本地玩了很多项目 demo,AutoGPT、JARVIS (HuggingGPT) 、知识库之类的,但一直未正式开发一个端到端服务。直到上个月申请到 Azure OpenAI,我想是时候开发一个完整的应用了,可以给朋友直接上手使用,并且确实可以大幅节省时间的工具,所以才有了这个和信息处理相关的智能阅读助手,我将从需求思考,应用架构,功能特性及后续迭代计划四部分来进行说明。

我的新书《LangChain编程从入门到实践》 已经开售!推荐正在学习AI应用开发的朋友购买阅读!
LangChain编程从入门到实践

需求思考

个人每天会花费大量时间去消费信息,一方面需要花时间维护旧的信息源(尽管起初信息源产出比较优质,但仍然避免不了好的信息源由于各种因素产出垃圾信息,而往往是阅读之后才发现,浪费时间),一方面不断引入新的信息源(可能出于对新的技术趋势的关注或者其他主题的关切),特别是接触一个新方向,自己的理解能力也有限(推荐使用知识贴身度领域掌握度这两个指标来量化信息理解程度),正好可以利用 LLM 优势,即拥有世界知识的同时,还具备长文本总结和概括的能力

其次,读一些论文和或者深度思考的长文章,我需要一个 Copilot 和我结对阅读,通过苏格拉底式的对话去探讨其中一些观点,我觉得是一种非常不错的方式,远远超过分享在社交网络和网友讨论的效果。

这就是我需要这个工具的原始动机,但是做着做着发现可以给我带来附加收益。

当前的信息处理流程

ReaderGPT辅助的信息处理流程

我甚至不需要自己来维护信息源了,随着 ReaderGPT 阅读过的内容越来越多,TA 甚至已经知道了我的阅读喜好,自己就可以进行信息源迭代,我只需要按照系统化思维模板给他不断更新分析方法,根据内容源的差异进行处理规则更新即可,实现将个人信息处理系统的最耗时的分析阶段(什么是有效的信息?)和组织阶段(如何高效组织筛选后的信息)解放出来。

应用架构

一旦理清自己的需求,应用架构也很清晰了,软件形态最后选择依托于 Slack 应用,天然支持跨端,节省不少时间成本。刚开始本来想搞飞书和企业微信群组,但是部分我需要的接口权限需要有企业资质;Discord 和 Telgram 又因为身边朋友访问不方便,所以 Slack 是一种不错的折衷方案。

  • 文本消息和语音消息情况分开处理
  • 对消息内容通过正则匹配,分离内容链接和需求指令
  • 语音消息利用 SSML(语音合成标记语言)的方式保证多语言混合输出场景下的流畅

Slack应用调用流程图

技术栈选择

  • LLM:Azure OpenAI 服务
  • sbert-base-chinese-nli:基于 bert,针对中文有优化,做 Embedding
  • Chroma:矢量数据库
  • LlamaIndex(GPT Index)):为结构化和非结构化数据提供索引
  • Whisper:开源自部署,语音转文本
  • Azure TTS 服务:文本转语音
  • 服务端配置:Azure 服务器+FastAPI+Gunicron+Nginx+Supervisor
  • Cloudflare Worker:将网页内容和油管视频的内容预处理都放在边缘处理,这样服务端拿到的就是标准化的纯文本内容,减少数据传输量,降低处理延迟
  • Cloudflare Zero Trust:对 Worker 服务进行防护

功能特性

网页内容

提取在线网页和视频内容进行总结,并根据这些内容回答你提出的相关问题。

视频内容实现效果

文档读取

支持读取常用格式的文档,包括 Markdown、PDF、EPUB、Docx、TXT 等,并根据这些内容回答你提出的相关问题。

文本读取实现效果

语音交互

支持常见语种的语音交互(英文、中文、韩语与日语),自适应用户的语言进行回答。

语音交互效果实现

多轮对话

对自己接受有难度的信息,可以通过苏格拉底式的问答方式进行多轮探讨去加深思考。

多轮对话实现效果

后续迭代计划

矢量数据库服务

后续计划接入 Milvus

增加服务监控

准备基于 Statping做一个服务监控页

输入信息建模

应用最终形态

就像氧气、食物、水一样,普通人的生活已经离不开信息,信息作为日常必需品,大脑会指挥你去源源不断的获得,所以我赞同信息塑造人的观点,制作数字版的自己个人认为最好的切入方式也是通过对日常摄入信息的建模,目前 AI 技术透过海量文本数据,已能窥探到人类认知层面的线索,如偏见(刻板印象)、群体态度、文化差异、文化变迁等。

这也是我对这个应用的最终形态的设想,一个全自动、能够模仿我思考方式进行信息消费的 Agent,代替我做全部信息处理,最终将最有价值的部分形成一份简报提供给我决策。

👏欢迎大家去体验智能阅读助手 ReaderGPT

记录智能阅读助手 ReaderGPT 开发过程

https://liduos.com/openai-based-reading-assistant-slack-bot.html

作者

莫尔索

发布于

2023-08-03

更新于

2024-05-19

许可协议

评论