这篇文章应该另有一个标题叫做"中老年文科零编程基础女教师死磕 Dify :)"
作为一名学术搬砖老民工,文献阅读是我日常工作的一部分。除了写文章时的大量文献搜索,我还通过订阅期刊的邮件RSS Feeds来获取最新的学术资讯。以 Google Scholar 为例,我通过订阅其邮件RSS Feeds,可以及时获取到自己关注领域最新的学术资讯 (包括关键词和学者)。
但是在方便的同时,海量的文献信息也带来了极大的阅读负担。尤其是 Google Scholar 的邮件RSS Feeds,每天都会收到大量的文献信息,可供判断质量的基本只有文献标题,在具体阅读的时候需要逐一打开,判断价值,再存入 Zotero 进行后续阅读。期刊订阅的邮件RSS Feeds虽然可以有文献质量保障,但是仍然需要逐一打开,阅读摘要,再决定后续的处理方式。
因此,我长久以来的梦想是有一个文献泛读助手,只输入简单的信息(如网址或 DOI或标题),便可以自动整理相关信息加入表格,以供后续选择是否精读。这样的操作可以大量节省时间,并提高阅读效率。但是对于一个没有任何编程背景的文科女教师来说,这无疑是一个只知道需求,没有任何实践方案,“寸步难行”的挑战。经常在 Bilibili 现身的各位 AI 科技博主鲜有我这个年龄层段和背景,咨询学校 IT 部门,也被告知自学用AI 编程工具辅助即可,于是我怀着一腔孤勇,开始了一段死磕的旅程。
我的最初思路如下:
1. 复制文献所在页的链接
2. 输入到 Agent 中,提取相关信息
3. 将信息整理到表格中
但无知无畏的我第一步就走错了方向, 最初我天真的以为输入文献所在页的链接,就可以提取到相关信息,但是后来发现,这个想法是错误的。因为很多文献在我的浏览器上可以打开,但是真正用插件打开的时候,却无法提取到相关信息。但后续偶然发现 Dify 的 Crossref 插件之后便迅速调整思路,准备用 Crossref 提取标题。
下一步的难点是抓取 CrossRef 提取文献信息之后json file之后的处理, 因为 json file 中包含的信息量很大,哪怕是用 Cursor 辅助写代码,也很难跑通流程。我曾经决定用 LLM 读取 json data,但是效果依然不好。最后失败了 n 次之后,决定让代码只提取 json file 中提到的第一篇文章的信息,这样就大量减少了后续的处理难度。
到这一步之后,后续的思路就相对简单了,用参数提取器提取相关的信息(如标题、作者、年份、期刊、DOI、摘要等),最后一步和是飞书打通,这样完整的效果是复制文献标题,放在做好的 Dify工作流中,飞书自动新增多条记录。当然过程中还有一些小 bug,比如有些标题无法在crossref 中找到,或者有些标题在 crossref 中找到的 json file 中没有相关信息,这些都需要手动处理, 但是在失败了一百多次之后,终于跑通流程的喜悦还是让我兴奋了好久。
在整个过程中,我最大的感受是,因为没有编程背景,很难理解代码的运行逻辑,所以很多问题即使是有了 AI 的辅助也很难解决。就好像一个不会游泳的人,即使有救生圈,如果看不清方向,即使最终能游到岸,也是很小概率的事情。若非是极其善于折腾,极其有自驱力,我恐怕已经放弃无数次了。但是也正是因为这个经历,让我对于打造 AI Agent 有了更深的理解,也让我今后的探索方向有了很大的信心。
做一个终身学习者是一件浪漫的事情,after all, 人生要是不用来折腾,那还有什么意义呢?