用LLM做个虚拟女友消息通知器

前言

说实话,自从LLM横空出世,我就一直在想大模型API到底有什么用,似乎除了娱乐没太多新意。

不过娱乐总比没有好。很早以前我便在构思一个项目,能够搜集你的电脑活动并能用LLM通知下,最近趁闲做了个初版,现在的效果是这样子:

效果图,使用archlinux KDE

对,我用prompt把LLM定制成了虚拟女友,事情瞬间变得有趣起来了。

小时候我记得电脑屏幕上总有个电子宠物,总感觉和我这个项目有异曲同工之处。

项目名叫AIveryday,可定制LLM API、跨平台使用,开源在Github上,欢迎大家尝鲜:AIveryday

接下来简单说说这个项目到底干了啥。

项目结构

首先我们需要一个能收集你电脑活动,比如浏览应用、窗口标题和活动类别等信息的应用(听起来像是巨硬的Recall?)。当然为了安全性,我们首先排除商业非开源软件。碰巧现在正好有一个成熟、开源、跨平台的电脑活动记录软件,也就是ActivityWatch,能够抓取并分类你的电脑活动信息,所有信息保存在本地,它的管理界面大致长这样:

ActivityWatch管理界面

可以看到ActivityWatch相当于是个电脑时间记录工具,且记录得非常详细。它最特色的功能是可根据正则表达式分类你的事件,以归类你的各个活动时间并用图表展示(如右下图)。

之后的事就简单了。我们让AIveryday每隔段时间从ActivityWatch索取你的活动信息,如花费时间top 5的窗口标题、活动类别,然后在添上一些你的定制prompt,如个人信息、LLM角色,最后就能得到最终输出。之后可以调用通知相关的API,这样你就可以在桌面上看到弹出的消息通知了!

为了更进一步地模拟随机性(现实生活中没有哪个女友会精确间隔3600秒来发消息的吧),每个消息之间会间隔一个随机时间,服从正态分布,也可定制化。

我目前使用的是本地ollama qwen2 7b q3量化版,CPU推理,内存不够时还可设置让AIveryday调用远程的deepseek的API。当然这里还有其他多种设置,我已在README里介绍好了。

配置用的yaml文件,简单好用,就不做图形界面了。

未来

后续我想添加更多的功能,除了每隔几小时的通知之外,每天还可以设置个日记自动撰写功能,这就需要多prompt的功能支持。另外,如果能在通知后与LLM继续聊天,感觉也很有意思。