一个基于Gemini的聊天机器人
其实,用 AI聊天机器人有一段时间了,使用过程中会遇到不同的问题。简单列举一二,作此文契。
- 由于免费托管在
pythonanywhere
,直接运行的脚本基本上隔天就会挂掉。原因未知,可能是由于免费账户资源上限?需要频繁手动重启。 - 由于Telegram的API消息长度限制,Gemini返回过长消息会直接报错。
基于上面的2个问题,决定改造一下项目。
还是基于 这个开源项目。
这个项目也已经更新了,并使用流式输出,这种方式对于聊天机器人来说,可能并不好。尤其是在于处理需要分片的超长文本返回时,颇为不利。
于是在保留所使用 Telegram API的基础上,对项目进行了大面积重写。
项目结构比较简单,主要分为几个核心的功能:
bot
初始化bot
的消息处理器注册:针对不同的消息类型,实现不同的业务- 调用
Gemini
的能力,主要使用了连续对话
以及内容生成
能力 - 适时的异常处理
- 添加了使用
pydevd
进行本地调试的代码
核心功能:
增加
WEBHOOK
方式启动机器人,以方便以webservice
的方式在koyeb
部署,这也是现在运行的方式。虽然还是使用免费资源。 但相比pythonanywhere
的频繁重启,要好上不少。使用
markdown-it
对Gemini返回的长文本分片,保留markdown
格式,特别是 返回中存在代码片时,比暴力分片优美。使用了最新的
2.0-flash-exp
和2.5-flash-exp
模型。增加了机器人的(视觉)能力,能够识别图片,音频,视频,文档中的内容。
增加了图片生成的能力(仅
Gemini 2.0-flash
支持)。支持使用源代码和
docker
镜像部署
项目地址: https://github.com/wangy325/snipy/tree/main/pys/atelebot