我在本文中提到的东西已经构建好了——如果你想查看一下,它在这里!]!
得益于ChatGPT,家中有AI
Notion 像每家科技公司一样,在过去的几个月里,为了推广AI功能而牺牲了用户体验的质量。所以我禁用了这些AI功能。你可以通过联系客服自行完成这一操作——我这个想法是从 这个 Reddit 线程 得到的,类似这样的讨论还有很多。自从我禁用了这些功能后,用户体验至少恢复到了正常状态,编辑时的性能也有所提升(你有没有注意到每次按下 SPC
键时,Notion 会有一点延迟,以便显示AI工具栏?)。
当我即将进入一段短暂的失业期并致力于个人项目时,我正在寻找一些快速的AI项目来让我迅速进入状态。没想到Notion的一些AI功能其实非常简单,适合作为入门项目。具体来说,我对为我的日记条目构建自动标签功能很感兴趣。Notion有一个功能,可以为特定的数据库添加标签;除此之外,它还有一个AI功能,可以读取你所有的条目并自动为条目添加相应的标签。
所以我已经是 Notion 的付费客户了。但他们居然还要额外收我每月 8 美元来支持这个功能?真是太荒谬了!他们已经每月收我 4 美元仅仅是为了存储我的数据,并且几乎不更新产品。让我来解释为什么这很荒谬:
- 他们已经从我使用Notion支付的费用中获得了利润。他们免费添加这些AI功能将有助于锁定客户。
- 这个功能可以在一周内由一个不满的软件工程师(就是我!就是我!)实现。但对于我的目的来说已经足够了。
- 实际上,使用GPT 4o的API实际上可能比每月8美元更便宜。另外,实际上,当我还拥有这个功能时,他们甚至还没有迁移到后来的GPT模型。 🤮
这真是一个很好的人工智能应用!特别是对于我的日记来说,我希望写日记的门槛尽可能低,尤其是。而手动为每条日记打标签却是一件很麻烦的事,哈哈。
随着OpenAI的结构化输出的发布,现在确保AI输出仅仅是一系列你所需的标签变得非常简单。
截至目前,我有451篇日记条目,这些条目最早可追溯至2016年(是的,反思型的史蒂芬的开始)。大约有90篇条目被标记了。由于我的日记主要是自然增长的产物,有时我使用的标签会随时间改变,因此它们并不是搜索日记的一致方式。
设计我知道我必须做如下事情:
- 使用 Notion API:获取所有日记条目的内容
- 使用 OpenAI API:将内容输入到
4o
中,询问它会如何标记该条目 - 使用 Notion API:用新生成的标签替换条目的标签
由于这涉及许多阶段,任何一个阶段都可能出错,所以在学习了Notion API的基础知识之后,我将脚本的执行分为四个阶段。
- 获取数据库(我的日记)中的所有页面ID
- 获取每个页面ID的内容
- 给定内容、标题及其他相关信息后,询问ChatGPT该条目应添加哪些标签
- 将这些标签实际写入Notion
……并在每个阶段运行后添加了快照支持功能。python
脚本使用 pickle
将所有结果本地保存,这在开发环境中表现良好,但在生产环境中则不推荐使用(我的朋友们对此有一些可怕的遭遇)。
为了真正让OpenAI准确地为我的帖子分类,我不得不试验不同的提示语,这引出了我们接下来要讨论的部分。
提示词这个项目是我所需要的警钟,让我意识到提示的重要性。起初,我原以为我可以直接将我的日记内容复制粘贴到ChatGPT中,并希望得到一些好的关键词。但事实证明我错了,例如这里是一些我遇到的问题:
- 显然,我需要确保AI 仅仅 返回标签。你不能通过网页界面做到这一点。
- 这个AI非常随意地添加标签,有时我认为它不应该给某个对象添加那个标签。
- 没有办法传递额外的背景信息,例如“X是我兄弟。”
首先,我们想使用OpenAI的结构化输出功能确保它只返回标签,然后我们可以将这些标签用于代码。我需要了解模式格式的使用,这对我来说是必要的。
那之后,我发现关于我的生活中存在一些知识层面,这些是AI仅凭我的条目难以理解的。例如,AI怎么能知道我兄弟的名字?伴侣?教堂?我上过的学校?我意识到我需要提供比条目更多的信息,并且还需要确保额外的背景信息不会影响到它的标签选择(仅仅因为我提到我的兄弟,并不意味着他在日记条目中出现)。我们可以修改三个东西:系统提示,模式,和用户提示。通常在https://chatgpt.com/上,你只能修改用户提示。所以我最终想出了这个解决方案:
在系统提示中(关于AI应该如何行为的指导信息):
你是一个AI助手,负责用适当的标签(tag)标记内容。请分析给定的标题和内容,并从提供的列表中选择相关的标签。在选择标签时要保守:- 只有在标题和内容之间存在中等到强的相关度时才分配标签。- 分配较少的标签甚至不分配标签总比分配不相关的标签要好。- 考虑内容的背景和整体主题,而不仅仅是关键词匹配。- 如果你对某个标签不确定,最好省略它。额外的上下文有助于理解条目:{additional_context}
The additional_context
变量只是一个环境变量,例如 "x 是我的爱好" 这样的内容。
然后,在用户提示框中,我传递了标题和内容,并提醒标记条目时要小心注意。
从高层角度看:
- 系统提示内容:
- 指令内容
- 附加上下文 - 用户输入:
- 标题
- 内容
- 某些指令 - 附加字段:
- schema:[枚举标签]
—— 这确保了OpenAI仅使用这些自定义的标签列表,并且仅返回那些标签。
光标真是太神奇了。我自己几乎没为这个项目写过任何代码。我经常选中整个文件,按下 CMD + K。然后,我告诉它添加某个功能。
这并不意味着非技术人员可以完全独立地自行使用Cursor构建应用程序。我对自己的需求非常具体,并且彻底理解了这个项目的工作方式,包括到检查点功能。我只是不想花时间学习Notion的API。除此之外,OpenAI的新结构化输出功能是全新的,所以Claude 3.5 Sonnet不可能知道这一点,因为它太新了。
我也编写了几个脚本文件,帮助我在反复运行此项目时进行调试。最有帮助的脚本允许你在数据库中的一个特定页面上运行所有四个阶段,所以如果你自己动手尝试这个项目,可以查看 'scripts.py'
。
可能 Notion 可以利用其客户的锁定效应来构建一些功能。如果他们为我的整个工作区创建一个 RAG,那将太棒了。或者如果我能找出我有关 git
的所有言论就好了!他们可以开发一个惊人的搜索功能,该功能还可以处理你附加的图片,并对它们进行 OCR 处理,或者利用地理位置信息来告诉你“我的工作区中关于巴黎的信息有哪些?”但是考虑到他们目前的搜索功能非常糟糕,我一次又一次地对他们的发展路线感到失望,所以我对此并没有太多信心,毕竟他们的搜索功能非常糟糕。
我正在评估一些Notion的替代方案,但是很难确定我的具体需求。离线模式很重要,但是我也想能够分享我的文档,我希望它们看起来很美观,代码块也要美观,我还想要一些超越基本Markdown功能的特性……很难找到满足所有这些需求的工具。另外,悄悄地说,有一个不同于Medium或Substack的博客平台也会很酷。我的寻找还在继续……
目前,我將使用這個標記器來幫助自動標記我的條目,並重新瀏覽我以前的條目。總是覺得有趣的是,找到標題為“我再也做不下去了”的條目,這時才發現標籤是 Dating
😅。如果你也想使用這個工具,並且在使用我的GitHub時遇到困難,隨時可以開一個issue或在此留言!接下來開始我的下一個項目 :)
共同学习,写下你的评论
评论加载中...
作者其他优质文章