Nonebot2's plugin of ChatGPT
Project description
📖 介绍
自用的使用浏览器ChatGPT接入Nonebot2,兼容 onebot v11 与 qq 适配器
使用条件
需要纯净ip用来过cf,另外根据使用账号数量需要相应多的内存
💿 安装
使用 nb-cli 安装
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装nb plugin install nonebot-plugin-gpt
使用包管理器安装
在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令pip
pip install nonebot-plugin-gpt
pdm
pdm add nonebot-plugin-gpt
poetry
poetry add nonebot-plugin-gpt
conda
conda install nonebot-plugin-gpt
打开 nonebot2 项目根目录下的 pyproject.toml
文件, 在 [tool.nonebot]
部分追加写入
plugins = ["nonebot_plugin_gpt"]
升级插件版本
pip install nonebot-plugin-gpt -U
⚙️ 配置
在 nonebot2 项目的.env
文件中添加下表中的必填配置
配置项 | 必填 | 默认值 | 类型 | 说明 |
---|---|---|---|---|
gpt_session | 是 | 无 | List[Dict[str,str]] | openai账号密码 |
gpt_proxy | 否 | 无 | str | 使用的代理 |
arkose_status | 否 | false | bool | gpt是否开启了arkose验证 |
group_chat | 否 | true | bool | 群里开启多人识别 |
gpt_chat_start | 否 | [] | list | 聊天前缀,参考nb命令前缀 |
gpt_chat_start_in_msg | 否 | false | bool | 命令前缀是否包含在消息内 |
begin_sleep_time | 否 | false | bool | 关闭启动等待时间(建议账号数量大于5开启) |
gpt_chat_priority | 否 | 90 | int | gpt聊天响应优先级 |
gpt_command_priority | 否 | 19 | int | gpt命令响应优先级 |
gpt_white_list_mode | 否 | true | bool | 聊天白名单模式 |
gptplus_white_list_mode | 否 | true | bool | gptplus聊天白名单模式 |
gpt_replay_to_replay | 否 | false | bool | 是否响应"回复消息" |
gpt_ban_str | 否 | 无 | List[str] | 黑名单屏蔽词列表 |
gpt_manage_ids | 否 | 无 | List[str] | 超管群/频道id,通过日志等方式获得 |
gpt_lgr_markdown | 否 | false | bool | 以拉格兰md消息回复 |
gpt_httpx | 否 | false | bool | 使用httpx |
gpt_url_replace | 否 | false | bool | QQ适配器url输出时替换 |
gpt_auto_init_group | 否 | false | bool | 入群自动初始化人设 |
gpt_auto_init_friend | 否 | false | bool | 加好友后自动初始化人设 |
gpt_init_group_pernal_name | 否 | false | bool | 入群自动初始化的人设名 |
gpt_init_friend_pernal_name | 否 | false | bool | 加好友自动初始化的人设名 |
# gpt配置示例
# 当mode为空或者为openai时,建议提前手动登录一次获取session_token填入(成功使用后可删除session_token项),mode目前不支持苹果账号
gpt_session='[
{
"email": "xxxx@hotmail.com",
"password": "xxxx",
"session_token": "ey....",
},
{
"email": "aaaa@gmail.com",
"password": "xxxx",
"mode": "google",
},
{
"email": "bbb@sss.com",
"password": "xxxx",
"mode": "microsoft",
"help_email": "xxx@xx.com",
"gptplus": True,
},
]'
gpt_proxy='http://127.0.0.1:8080'
# gpt_proxy='http://username:password@127.0.0.1:8080'
arkose_status=false
group_chat=true
gpt_chat_start=[]
gpt_chat_start_in_msg=false
begin_sleep_time=true
gpt_chat_priority=90
gpt_command_priority=19
gpt_white_list_mode=true
gpt_replay_to_replay=false
gpt_ban_str='[
"我是猪",
"你是猪",
]'
# qq适配器使用的超管群id
gpt_manage_ids=['qq group id......']
# onebot适配器 拉格兰md消息兼容
gpt_lgr_markdown=false
# 使用httpx(暂不完善,请关闭)
gpt_httpx=false
# 开启QQ适配器url替换
gpt_url_replace=true
# 入群是否自动初始化人设
gpt_auto_init_group=false
gpt_init_group_pernal_name="猪" # 仅当上一条为true时生效
# 加好友是否自动初始化人设
gpt_auto_init_friend=false
gpt_init_friend_pernal_name="私人猪" # 仅当上一条为true时生效
# 插件需要一些其他的Nonebot基础配置,请检查是否存在
# 机器人名
nickname=["bot name"]
# 超管QQ(onebot用)
SUPERUSERS=["qq num"]
🎉 使用
指令表
指令 | 适配器 | 权限 | 需要@ | 范围 | 说明 |
---|---|---|---|---|---|
@bot 聊天内容... | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | @或者叫名+内容 开始聊天,随所有者白名单模式设置改变 |
初始化 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 初始化(人设名) |
重置 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 回到初始化人设后的第二句话时 |
重置上一句 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 刷新上一句的回答 |
回到过去 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 回到过去 <对话序号/p_id/最后一次出现的关键词> ,回到括号内的对话时间点 |
人设列表 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 查看可用人设列表 |
查看人设 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 查看人设的具体内容 |
添加人设 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 添加人设 (人设名) |
历史聊天 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 查看当前人格历史聊天记录 |
md状态开启 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 用户自开启markdown输出内容 |
md状态关闭 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 用户自关闭markdown输出内容 |
删除人设 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 删除人设 (人设名) |
黑名单列表 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 查看黑名单列表 |
解黑 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 解黑<账号> ,解除黑名单 |
白名单列表 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 查看白名单列表 |
工作状态 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 查看当前所有账号的工作状态 |
添加plus | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 添加plus 群号/账号/QQ适配器openid |
删除plus | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 删除plus 群号/账号/QQ适配器openid |
plus切换 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | plus切换 <模型名称> ,如 4om/3.5/4/4o,白名单状态开启后,仅支持有plus状态的 |
全局plus | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 全局plus 开启/关闭,关闭后所有人的plus状态不可用,仅能使用3.5模型,超管自己除外 |
删除白名单 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 删除白名单 <账号/群号> (个人/群) ,删除白名单,最后不写默认为群 |
添加白名单 | OneBot | 超级管理员/超管群 | 是 | 群聊/私聊 | 添加白名单(plus) <账号/群号> (个人/群) ,添加白名单,最后不写默认为群,加了plus字样则默认同时添加进plus状态 |
获取本地id | 无/白名单 | 是 | 群聊/频道 | 群聊内获取id | |
生成cdk | 超管群 | 是 | 群聊/频道 | 生成cdk <群号/其他信息>,以绑定信息方式生成白名单cdk | |
出现吧 | 无 | 是 | 群聊/频道 | 出现吧 <cdk>,以绑定id形式使用cdk加入白名单 | |
结束吧 | 白名单 | 是 | 群聊/频道 | 结束吧 ,用户自主解除白名单 |
<为必填内容>,(为选填内容)
QQ适配器若添加plus状态,只能对方使用了cdk后,超管自己查看白名单列表,再手打openid到
添加plus
指令了,稍微有点麻烦,也许未来会优化
不同模型的为独立会话,会分开保存,切换plus状态后会自动续接对应的会话
常见问题
微软辅助邮箱验证
当触发验证后,会在启动目录生成带有启动账号名称的文件,键入收到的验证码并保存,即可自动验证。留意日志输出提示
谷歌登录方式
请先从你的浏览器手动使用google登录chatgpt一次,然后访问https://myaccount.google.com/
,使用浏览器插件Cookie-Editor导出该页面的Cookie为json格式。 当"{email_address}_google_cookie.txt"文件出现时,将复制的json粘贴进去并保存。
markdown发送问题
协议bot的md似了,QQbot的md模板差不多也似了,如果你是QQBot原生md用户可以催我适配一下,不然这个功能就鸽了
数据缓存
见 nonebot_plugin_localstore 插件说明,通常为用户目录下
# linux
~/.local/share/nonebot2/nonebot_plugin_gpt/\{bot_name\}
# windows
C:\Users\UserName\AppData\Local\nonebot2\nonebot_plugin_gpt\\{bot_name\}
自动初始化人设
由于时间关系,仅测试了onebot适配器的群聊效果,onebot适配器私聊和QQ适配器群私聊理论上也支持,若有bug可发issue通知我改下;
还是由于时间关系,暂时没写与白名单相关适配,自动初始化人设若开启,优先级会比白名单高,例如非白名单群,入群也会在gpt账户上创建一个会话(3.5的会话),当然没白名单该群后续触发不了这个会话
更新日志
2024.07.28 0.0.39
- 添加使用plus模型时,可上传文件(目前只支持图片)
- 继续尝试修复长时间运行时,access_token过期未自动刷新的问题
2024.07.21 0.0.37
- 添加并修改默认使用模型喂gpt-4o-mini(3.5仍然可用但性能下降很多)(4om和3.5免费用户都可用,但3.5预计迟早下架,所以不建议使用,也就偷个懒,不添加非plus用户切换3.5功能了)
- 更新openai接口
2024.07.16 0.0.36
- 修复0.0.35版本中,未正确捕获自身入群事件的问题
- 自动初始化人设添加频道相关支持
- 尝试修复长时间运行时,access_token过期未自动刷新的问题
2024.07.15 0.0.35
- 修复0.0.34造成的gpt plus账户会话失败的问题
- 优化添加人设名称识别
- 添加新功能,入群/加好友后,自动初始化人设,让bot一个人出门在外也更加顺畅
2024.07.12 0.0.34
- 修复部分消息接收失败问题
2024.07.11 0.0.33
- 添加QQ适配器 Url 输出替换
- 优化登录流程
- 优化消息超时问题
- 添加代理用的用户名密码
2024.06.23 0.0.32
- 修复多账户下相关命令换号发送的情况
- 优化了登录部分
- 修复上次更新导致的一个bug,让私聊用户丢失了原有的会话,本次更新后原有私聊用户会话会切换回去,在两次更新期间的新用户会话会丢失(偷个懒,就不做迁移了)
2024.06.15 0.0.31
- 优化登录方式
- 优化google登录缓存
- 优化白名单列表,新增部分plus白名单单独显示,提示两种白名单模式独立运作
2024.06.11 0.0.29
- 修复openai新cookie跨域问题
- 修复google登录问题
- 优化了token和状态显示
2024.06.04 0.0.28
- 添加gptplus账户支持及其gpt4 4o模型使用
- 修复windows下数据目录异常问题
- 添加QQ适配器图片发送支持
- 优化图片间距
- 修复添加账户后,会话数计数错误
2024.05.20 0.0.26
- 修复非全局代理下,websocket灰度账号代理未生效的问题
2024.05.16 0.0.25
- 修复websocket账号未正常工作的bug
- 跟进openai新(旧)token验证
- 修正工作状态会话数标题错误
- 为白名单列表添加cdk生成源信息,方便溯源
2024.05.10 0.0.24
- 跟进新token生成验证
- 为初始化人设异常时添加错误提示
2024.05.07 0.0.23
- 修复webssocket url未更新
- 优化工作状态输出会话数遮蔽问题
- 修复空数据时未正确重试的问题
- 兼容pyd2
2024.05.06 0.0.20
- 优化登录和消息接收流程
- 优化初始化时多bot账号主体发送消息不对的问题
- 兼容新websocket接收方式(我以为都SSE了)
2024.05.04 0.0.18
- 跟进openai新搞得幺蛾子验证(加班太累了,更晚了)
- markdown被人作没了,唉(吐槽)
- 目前只简单实现了新验证,代码很乱,抽空应该会优化
2024.04.18 0.0.17
- 跟进新markdown发送方式
2024.04.17 0.0.15
- 尝试解决持久连接接收不到消息的问题
- 添加markdown消息用户自定义开关(QQ适配器md能力待支持)
- 优化markdown消息发送时,人设名未匹配消除的问题
2024.03.24 0.0.13
- 修复qq适配器的人设列表无法显示的问题
- 添加了会话超时时间,避免意外情况导致session阻塞
- 优化了工作状态显示,目前login为登录中,登陆后未工作则为ready
- 添加了全cookie保存,降低重新登录异常的风险
2024.03.22 0.0.12
- 临时修复了一些错误
- 优化多账户私聊混乱问题
2024.03.20
- 没有新功能增加,临时更新一下添加httpx关闭配置(现默认关闭),目前它还有些问题。新流程还没写完,等下次放假。
2024.03.17
- 优化了底层代码,减少错误,暂不支持gpt plus账号(待填坑)
- 支持拉格兰md发送
2024.03.13
- 兼容拉格兰合并转发,修复合并转发失败的问题
- 添加自定义聊天前缀,现在可以不用@也能触发了
2024.03.11
- 临时修复200问题(chatgpt新的websocket问题),最近好忙,等闲了的时候再优化,有什么问题都可以先提issue
2024.02.19
- 临时修复200问题 与 添加 微软辅助邮箱验证
待续
自用挺久了,匆忙改改发出来,很多东西还没补充
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nonebot-plugin-gpt-0.0.39.tar.gz
.
File metadata
- Download URL: nonebot-plugin-gpt-0.0.39.tar.gz
- Upload date:
- Size: 40.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a672471d46c49e1784481cb215063a782c7fd1b71f9a87c8748f1671ba89bb56 |
|
MD5 | 978fad9080a6d66a74709d6b2e60f047 |
|
BLAKE2b-256 | e26c5680113ffbc0a5698ba89dd829909e50f700d2776bed2e09deb503b9f534 |
File details
Details for the file nonebot_plugin_gpt-0.0.39-py3-none-any.whl
.
File metadata
- Download URL: nonebot_plugin_gpt-0.0.39-py3-none-any.whl
- Upload date:
- Size: 37.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c9afbcaa7f90c855e8cdb7cb7de52f26b35baf229402f6834336b9437e7d0c1 |
|
MD5 | e0b859b82f92e10c901060278aa391d5 |
|
BLAKE2b-256 | a0c1245bb678eefa67d4dc798ae2e13e4e04cd03a43be673399929d7b2bab07d |