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

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


关于 IRC + Python

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

其中 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 中…