Implementing An Simple IRC Bot Using Python
最近用国补买了台 MiniPC,整了个 PVE 丢家里当小服务器使,在上面跑了几个 docker 服务,以及 ollama,8854H + 32g 内存跑 llama3.1 基本没有压力。由于平时上班不在家,也就有了远程管理这 MiniPC 的想法,正好以前瞎整的 IRC 服务器 SSL 证书过期提醒了我,以及最近在整些 Python 脚本,于是就有了现在这个项目:
Python 实现简单 IRC 聊天机器人 (A Simple IRC BOT Written in Python)
关于 IRC + Python
作为一名命令行爱好者,我曾试图使用命令行实现所有我在电脑上要做的事,比如便捷的浏览文件、多终端同时运行、浏览网页、作为 IDE 写代码和即时通讯等,于是就找到了 ranger、tmux、w3m、NvChad 和 Irssi 等优秀的开源工具。
其中 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 中…









