来与团子聊天吧!
基于 openai 于3月1日放开的最新模型 gpt-3.5-turbo-0301 开发,能够实现近乎于网页端的体验。
基于Nonebot 2.0, onebot v11开发,已作为插件在Paimon bot测试。
功能:
由于本人能力精力有限,对于潜在的问题 & 能提升的地方,欢迎来提 issue & pull request。
举个栗子 🌰:
注意:指令中的团子根据设置的nickname为准。也可以通过 @团子 代替。
现在没有默认触发词嘞,如果没有设置nickname,就只能通过 @ 触发了
指令的相同触发词可自行查看代码中 aliases 部分。
指令 | 权限 | 范围 | 说明 |
---|---|---|---|
团子[聊天内容] | 群员 | 群聊 / 私聊 | 来和团子聊天吧! |
团子 看看位置 / 你在哪儿 | 群员 | 群聊 / 私聊 | 查看团子赛博地址 |
团子 历史记录 / history | 主人 | 群聊 / 私聊 | 查看历史提问(不包括回答) |
团子 清除记忆 / 清除历史记录 | 群员 | 群聊 / 私聊 | 清除团子的记忆 |
环境配置:
打开nonebot的.env
文件,写入您的 chatgpt_api
以及 nickname
如果希望启用代理,则需要在.env
文件中,写入 chat_use_proxy = True
以及 chat_proxy_address_https = "代理地址"
或 chat_proxy_address_http = "代理地址"
(处理逻辑类似openai,优先使用https。但是https经常会报错(aiohttp和urllib3都可能会造成问题),推荐只使用http)
如果希望启用api转发 (类似 腾讯云函数搭建 OpenAI 国内代理 通过云函数等方式实现反代 ),则需要写入 chat_use_api_forward = True
以及 chat_api_address = "代理地址"
但是不推荐两者同时启用
如果希望启用图片渲染,则需要写入 chat_use_img2text=True
, 以及在工程目录的 /data/tuan_chatgpt
文件夹(/data
文件夹与 bot.py
/ env
/ 运行nb run
的地方同级 )中分别添加字体文件和背景文件到 /font
以及 /bachground
文件夹中。
默认的字体文件可参考本仓库,背景文件则会从中随机抽取。文件夹不存在时会自动创建,也可自行设定文件夹路径。
也可以直接下载 Release 的 tuan_chatgpt.zip 扔到 /data
里去
图片渲染功能启用后,会自动启用二维码添加以及背景图片添加。可以选择关闭。
具体配置方式参考 ⚙️ 配置 以及 配置 | Nonebot
eg:
chatgpt_api = "sk-1145141919"
nickname = ['团子', '雷姆']
# 启用代理
chat_use_proxy=True
chat_proxy_address_http='http://127.0.0.1:10809'
chat_proxy_address_https='http://127.0.0.1:10809'
# 启用api转发
chat_use_api_forward=True
chat_api_address="https://api.openai.com/v1" (这个是官方接口 照着写没问题,大概? 还是得看具体的转发方式)
# 启用图片渲染
chat_use_img2text=True
如果没有自动导入插件的功能,需要打开 nonebot2 项目根目录下的 pyproject.toml
文件, 在 [tool.nonebot]
部分追加写入
plugins = ["nonebot_plugin_tuan_chatgpt"]
在 nonebot2 项目的.env
文件中支持添加以下配置
必填项: | 配置项 | 默认值 | 说明 |
---|---|---|---|
chatgpt_api | 无 | str格式 | |
nickname | 无 | list[str] |
ps. 这个nickname是bot通用的。即,别的插件也能获取这个参数,不过一般不会有啥影响。
代理相关(可选): | 配置项 | 默认值 | 说明 |
---|---|---|---|
chat_use_proxy | False | 是否启用代理 | |
chat_proxy_address | None | 代理地址 | |
chat_use_api_forward | False | 是否启用api转发 | |
chat_api_address | None | api转发地址 |
渲染图片相关(可选): | 配置项 | 默认值 | 说明 |
---|---|---|---|
chat_use_img2text | False | 是否渲染文本并发送图片 | |
chat_use_qr | True | 是否渲染文本并发送图片 | |
chat_use_background | True | 是否渲染文本并发送图片 | |
chat_data_path | 'data/tuan_chatgpt' | 数据路径。修改请用绝对路径 | |
chat_font_path | 'font' | 字体路径(默认为data/tuan_chat/font) | |
chat_background_path | "background" | 背景路径(默认为data/tuan_chat/background) | |
chat_font_name | 'sarasa-mono-sc-regular.ttf' | 使用的字体 | |
chat_canvas_width | 1000 | 发送图片的宽度 | |
chat_font_size | 30 | 字号 | |
chat_offset_x | 50 | 起始绘制点的横坐标 | |
chat_offset_y | 50 | 起始绘制点的纵坐标 |
其他配置(可选): | 配置项 | 默认值 | 说明 |
---|---|---|---|
conversation_max_size | 300 | 最大发送问题字数 | |
answer_max_size | 50 | 最大记录回答字数 | |
answer_split_size | 177 | 分隔回答长度 | |
user_freq_lim | 4 | 限制群友发言速度(秒) | |
group_freq_lim | 6 | 限制群内发言速度(秒) | |
conversation_remember_num | 7 | 能记住的对话数目 |
图片渲染
历史记录
conversation_remember_num 最好不要调得太高,记住太多话了就会变成性冷淡机器人 😥
出现了 wake up 词也会变回去,不过现在应该多说两句话就好了
长回答处理? 转发的方式似乎容易被风控。发太多了也容易被风控。 渲染图片的话,本来是有造轮子的,但是我试了好久跑不起来(悲 😥 这下不得不自己造了 (万恶的 windows 啊) markdown 渲染好像有点复杂,还得再研究研究
2023.5.13
2023.4.4
2023.3.23
2023.3.15
2023.3.14
2023.3.12
2023.3.10
2023.3.9
本项目在开发过程中,参考了不少以下项目,对各位表示由衷的感谢
openai
小派蒙|LittlePaimon by @CMHopeSunshine
nonebot-plugin-chatgpt by @A-kirami
chatgpt-mirai-qq-bot by @lss233
nonebot_plugin_naturel_gpt by @KroMiose
nonebot-plugin-setu-now by kexue-z
nonebot-plugin-oachat by @Gin2O
ChatGPT 中文调教指南 by @PlexPt