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切换 <模型名称> ,如 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.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
Hashes for nonebot-plugin-gpt-0.0.35.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | da6ff873418b6ca69bdd4b10ec29bd92332d4fbab542d28e7bfadc358d02f828 |
|
MD5 | 6be1d8eec8c08e03fd0366c7f3f41df0 |
|
BLAKE2b-256 | 5fc363910386f68ebf5de2282d618fb244a80797195fa3e760eaea518111f7cc |
Hashes for nonebot_plugin_gpt-0.0.35-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 941a20b74a96803061128a1f65dc62142b179873a3aca2c3cf97740e3496db47 |
|
MD5 | 1b0e290396bcde7c738a1abcc0bb3be7 |
|
BLAKE2b-256 | 481af1e0af270bfb15e17f5b3353415aed7677963b289b112634ba4b3a465430 |