前言

最近用国补买了台MiniPC,整了个PVE丢家里当小服务器使,在上面跑了几个docker服务,以及ollama,8854H + 32g 内存跑llama3.1基本没有压力。由于平时上班不在家,也就有了远程管理这MiniPC的想法,正好以前瞎整的IRC服务器SSL证书过期提醒了我,以及最近在整些Python脚本,于是就有了现在这个项目:

Python实现简单IRC聊天机器人(A Simple IRC BOT Written in Python)


关于IRC + Python

作为一名命令行爱好者,我曾试图使用命令行实现所有我在电脑上要做的事,比如便捷的浏览文件、多终端同时运行、浏览网页、作为IDE写代码和即时通讯等,于是就找到了rangertmuxw3cNvChadIrssi等优秀的开源工具。

其中IRC终端客户端Irssi是我入门终端聊天的工具,让我对这个古老又相对简洁的通讯协议产生了兴趣,是时候基于它做点有意思的事了

至于Python,众所周知:人生苦短,我用Python。如果后续对性能有需求,再用Go重构吧。

Albot

我给这聊天机器人取名Albot,不是AI,似是AI。它实现的功能有:

  • 从后台ollama接口生成AI回复
  • 针对不同的关键字触发不同的响应,比如收到bilibili后在服务器后台执行相应的脚本
  • 同时响应多个请求,即同时与多个对象,在不同频道中聊天对话

通过设计不同的关键字和实现不同的脚本,我就可以通过和albot聊天的形式来灵活管理MiniPC了。

项目特点

简单,简单,还是简单。使用最小的成本实现想要的效果,适合用来入门Python多线程和网络编程。

  • 网络模型参考的IOCP模型,主线程监听,监听到的连接分配给线程池中的线程去处理
  • 由于MiniPC性能有限,通过加锁限制了同时只能有一个对话可以请求后台ollama
  • ollama每生成一行,albot会立即发出,而非等到AI回复全部生成
  • 仅使用Python默认库
  • 对于ollama的HTTP响应做了相对健壮的处理,同时以性能优先

最后

项目地址https://github.com/qspidy/albot

后续还会根据需要对其进行改进以及功能的添加和完善,比如使用数据库存聊天记录和AI对话的Prompt、设置不同的命令来灵活控制和ollama的交互、使用Docker打包成镜像等。主要以学习为目的,顺带让其产生点实际价值,只有实践才能知道以前以为很简单的功能实现起来也有不少细节啊。

还在努力适应PDB中…