月度归档: 2023年8月

面向prompt的编程

昨天试着想做个基于telegram bot的日程管理工具,就是在telegram上发一条消息给gpt,然后它就会提取里面的日程信息,然后通过google calendar的API写到我的日历里面去。

刚开始我尝试用metaGPT来写,消耗了大概$2的token,生成了一堆文件,但是代码不work……其实metaGPT把写代码部分去掉,只留需求分析,生成项目文档的功能,就挺好,可以做幻灯片唬人了。

于是还是用了旧办法,在chatGPT里面进行对话,一步一步引导chatGPT生成代码,并和它一起调试。

chatGPT做的google API使用的教程和代码非常清晰,一次性通过。

后续的代码也没有大问题,主要的时间都用在调试,GPT返回的日程时间信息不符合谷歌API的要求,有很多边缘情况要处理:时间没有明确的开始时间啊,上午下午,明天今天这些模糊时间怎么处理成谷歌要求的具体时间点啊。开始是用了一堆的判断来处理,后来换了个思路,直接把要求都写到和GPT沟通的prompt里面,并且给了一个返回的json格式模板,把这些判断的要求,如果怎么样就怎么样,都用自然语言写在prompt里面,一次性通过。目前demo完成了发送事件,脚本会自动处理并把事件写进谷歌日历的功能。

更进一步的,每天早上7点自动发当日日程提醒,日程写入有冲突的时候反馈给用户等待处理,这些都还没写。

主要是这种面向GPT的编程方式非常奇妙,体验感很强。

当然这个项目本身没什么太大意义,我还是建议直接用chatGPT + TimeNavi 插件来完成日程管理。自己做这个只是为了验证一些想法。

日程管理的几个尝试

暑假试了用obsidian进行日程管理,参考的是这篇文章。坚持了2个星期,但是效果很一般。就像之前用notion进行日程管理和记录,也遇到类似的问题:这些工具的理论都非常科学,但是使用的时候非常不自然,需要强迫自己按照这些工具的逻辑和哲学进行生活和工作,也要有非常大的强制力来进行记录,整理。或者说,使用工具本身需要的努力甚至超过了做这些事情需要的努力。

当然,我相信如果能够养成这样的习惯,对自己的日程安排,学习工作效率会有非常大的好处,但是这个习惯的养成难度太大了,太不自然了。

因此,我开始思考是否可以像之前博客中所述的日记系统一样,运用chatGPT来进行日程管理。我所需要做的就是用自然语言告诉它。这个过程基本上涉及了两个主要步骤:

1、对日记的pormpt进行了修改,增加了回顾前一天的待办事项列表,并根据今天的活动内容,找出哪些事情完成了,哪些事情没完成的功能;增加了把每天活动分成工作,学习,休闲等几类,并统计时间的功能。效果还不错

2、利用chatGPT+timenavi插件,可以把输入的事项自动写进google calendar。输入的时候只要用自然语言,开启对话后可以在手机端用语言输入。chatGPT理解的非常好。

然后,每天把完成的事情,要修改的事情都告诉它。晚上让它列出今天事项完成的情况。早上让它给出今天有哪些待办。

以周为单位可以避免对话过长,chatGPT丢失对话记忆或者出现幻觉。

不过暑假期间事情比较少,等到开学,可以把每周课表,会议提前输入进去,遇到换课,临时新增加的会议就可以看到它能不能很好的处理时间冲突的情况。

这个日记系统和周日程管理没办法放到同一个prompt里面,我担心对话多了会丢失记忆。如果以每天为单位进行管理,好像时间又过于碎片化了。后面使用中再进行调整吧。

目前比较缺的一个功能是对项目进行拆解,变成待办事项进行管理。这个纯靠prompt似乎不太好解决。但是prompt的对话式流程是最自然的,符合人的语言习惯,不用点任何设置啊,格式啊,只要说话就行了。符合我们认知里的“秘书”的角色。