【AI Skills 实例 0002】待办事项管理(数据篇)

【AI Skills 实例 0001】待办事项管理(理论篇)继续讨论:

按照上一篇的思路,交代给 AI 以后,就是完全可以用的。只要模型不是太差,效果上不会有问题。只要理解了这些理论基础,遇到各种状况,也能够轻松的扩展应对。

但这就好了吗?

问题

如果在使用中,你有所观察。渐渐的就会发现——效率并不高。甚至有的时候ai会反复产生许多次请求才能够完成必要的任务。

Token 是要花钱的。如果不按照token计算,可能就按照请求次数计算,依然是要花钱的。

显然,这里有优化空间。

分析

最简单的任务:我当前有哪些待办事项?

  • 第一次请求:
    • >>>:把你的问题发送给 AI
    • ===: AI 进行分析,他觉得他应该去读取储存任务的文件,然后才能够回答你的问题;并且发现他确实拥有这个能力,于是提出读取文件的请求
    • <<<:返回读取文件的请求
  • 第二次请求:
    • ===:本地完成文件的读取,获取文件内容
    • >>>:把这个操作的结果,也就是文件内容发送给 AI。
    • ===: AI拿到内容,并且回顾前面的问题。经过思考得到答案
    • <<<:返回答案

整个过程几乎没有冗余步骤,没有什么可优化的空间。但是这样的分析有助于我们理解请求次数。

[!tip] 真的没有优化空间吗?

假设我们可以定制请求行为,那么在第一次请求时直接携带上任务文件的内容,就可以一次解决问题。我们认为读取一个较小的本地文件所产生的开销几乎是可以忽略不计的。而这个任务文件如果不大的话,比如只有几十条待办内容(根据上一次的理论,我们当前聚焦的任务文件,一般不会超过这个量级),所增加的 token 消耗也是微不足道的。

问题只是,在许多通用工具下,并不方便,这样自己去定制请求内容。

复杂

但如果问题变得复杂一些呢?比如你一起告诉他10个今天要完成的任务,让他做一下记录,同时告诉他还有三个任务,要标记为已完成。而今天的任务文件还没有建立,他需要先通过整理昨天的任务文件,来建立今天的任务文件……

这时候不同的模型会有不同的处理策略,但这涉及到多个文件的读取和写入,必然会产生较多的请求次数。一般来说,AI 都会把整理昨天,然后建立今天,这里作为一个步骤;然后标记已完成,是第二个步骤;最后再将你交代的任务加入进去。而有一些笨笨的模型,甚至可能每一次标记已完成,或者每一次追加任务,都进行一次单独的工具请求。

即便忽略掉成本消耗吧,耗费的时间也很明显了。

现在的状况是能做,甚至能做好。但实际体验上又不怎么好。

文件

然后我们会发现有些请求次数是难以避免的。如果 AI 每次只能操作一个文件,而他要操作的内容又分布在不同文件内,这就必然需要多次请求。

然后我们很容易想到——如果把所有内容都放在一个文件里,不就好了吗?

如果是非常简单的状况下,这是一个有效的方法。但并不完美。就像上面说的,当他面对多个子任务的时候,即便是操作一个文件,它也有可能会产生多次请求。

而且整个系统只要用的时间稍微长一些,总会积累许多已完成任务,每次都读取这些任务,显然是浪费的。而且随着文件的不断增大,这种浪费会愈加明显。显然也有优化的办法,就是每隔一段时间把已完成的任务进行归档,保持聚焦文件的清爽。但这不又回归多文件了嘛,只是比以前的请求次数略少了些。而这同时也吸收了我们前面在理论中所建立的许多结构上的优势。

总结下来,单文件方式算不上优化,只能算是某种战略调整。

工具

能不能让 AI 一次读取多个文件?能不能让 AI 一次标记多个任务?能不能让 AI 一次添加多个任务?

一般的情况下,我们至少需要两次请求。那能不能保证常用的操作都在两次请求内解决掉?

也就是 AI 拿到问题以后,只请求一次工具,就能保证完成他想要完成的大部分任务。覆盖全部场景是不可能的,如果能够覆盖全部场景,那这个工具直接人类调用就行了。我们使用 AI 就是因为 AI 有更多场景下的灵活性。这里的优化只是针对基础的常用的场景。让 AI 不需要每次都重新思考应该如何去做。

总之,需要给 AI 一个好用的工具,这个工具应该覆盖许多基础的操作。

  • 它可以读取文件
  • 可以对已有任务进行标记
  • 可以向文件中追加新的任务

为了保障效率,它应该是可以批量操作:

  • 能够一次读取多个文件
  • 一次对多个任务进行标记,甚至每个任务添加不同的标记
  • 一次追加多个任务,甚至这些任务属于不同的章节(假设你有这个需要的话)

这样就避免了一些笨蛋模型每添加一个任务就产生一次请求。

事情好了很多。还有其他常用操作吗?就是建立每日文件。

  • 首先,这不应该是一个主动触发任务。就是不需要每天我们主动告诉 AI去建立一下今日的文件。应该是无感知的,全自动的。当 AI 发现不存在今日文件时,自动建立相应的文件。
  • 那么在读取今日任务时,或者要向今日任务中添加标记或者追加任务时。如果发现不存在今日任务文件,则进入建立流程。
  • 首先肯定是读取昨日的文件(但如果昨日文件也不存在了呢?所以这里应该限定用读取上一个任务文件,而不一定是昨天的),然后将所有未完成的任务延期到今天。之后再完成需要的操作,比如追加新的任务或者标记任务。

实现

这确实有一点复杂了。但理解这个流程应该没有那么难。只是怎么实现。

但其实只需要把这个需求向 AI 讲清楚,他自己就能够写出相应的脚本。即便使用的模型差一些,面对这样简单的任务,也能写出差不多可以跑起来的脚本。最多再让他做几次测试而已。

在这个过程中,人所需要做的事情主要是:理解和规划流程。虽然 AI 也可以去做,当 AI 做出来的结果在很多时候还是缺乏细节上的锤炼。这是需要人类去进行把控和补充的。

还有

从理论上讲到这里,就已经比较完美了。但在实践中还是会遇到问题。

AI 读取了内容,经过分析,决定对某个任务进行标注,于是调用脚本……但这里是有可能出现状况的。

  • 如果恰好有两个内容完全相同的任务(这是正常的,比如这两个任务都是子任务,内容相同是非常合理的),那如果通过内容进行匹配,很可能不做分辨,只标注了第一个。
  • AI 的记忆是可能产生模糊的。他记住了这个任务,尝试去寻找这个任务,结果发现找不到。因为他记住的任务和实际内容产生了细微的偏差,在语义上是没有影响的,但是精准匹配却匹配不上。
  • 如果让 AI 使用行号进行匹配。假设在这一行之前进行了内容的增减。那么行号也是会产生偏差的。

这时候就还需要更好的内容匹配方案,甚至建立校验机制。比如给每一个任务都添加一个 ID 进行标记,或者沿着树状结构去检索任务,并兼容适当的模糊匹配。任务完成以后,向 AI 返回的结果中包含任务的具体完成情况, AI 将这些完成情况与自己的目标进行核对之后,再向用户进行汇报。

细节

如果,让 AI 自己记住未完成的所有任务,不就可以避免每次进行读取了吗?反正 AI 有那么长的上下文,足够用的。

纯粹理论角度,这是合理的,但在实践中是非常不可取的。

  • AI 存在幻觉。 AI 的上下文召回准确度并不是100%,也就是他从记忆中回想出来的东西并不是一定准确的。
  • 它用作记录的文件,可能会被我们修改。一套完善的体系,人类和ai共用很合理吧?任务完成了,我自己直接在文件上标记一下,也很合理吧。但修改以后没有告诉 AI,AI 完全不知道啊。他如果还按照自己记忆中的内容去进行操作,很可能会以自己的记忆为准,将你进行的修改,完全覆盖掉。

所以,应该特别进行约束:在每次回答之前,首先要读取文件中的记录,并且以文件中的记录为准。绝不可以凭记忆和想象直接进行回答。

结束

到这里,这个工具基本差不多了吧。

但还需要在实际使用中锤炼一些细节,打磨嘛,很合理的。

回头想想,好像只是想记录一下待办事项而已。但是许许多多的细节,如果不想到,并且约束到。 AI 就会做的松松散散的,似乎也能做,并且去做了,甚至很难指责它,然而得到的结果似乎总不太是自己想要的那种。

最终的结果或者说使用的体验是由许许多多细节组成的,所以本质上我们就是对尽可能多的细节进行打磨。


我是老鼠,给我买咖啡!!! 爱发电 · 连接创作者与粉丝的会员制平台