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
、w3c
、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中…