14 KiB
head, title, icon, author, date, category
| head | title | icon | author | date | category | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
模型一览和功能点 | enum | RockChinQ | 2023-12-20 |
|
模型一览
文字对话
- OpenAI GPT-3.5模型(ChatGPT API), 本项目原生支持, 默认使用
- OpenAI GPT-3模型, 本项目原生支持, 部署完成后前往
config.py切换 - OpenAI GPT-4模型, 本项目原生支持, 目前需要您的账户通过OpenAI的内测申请, 请前往
config.py切换 - ChatGPT网页版GPT-3.5模型, 由插件接入
- ChatGPT网页版GPT-4模型, 目前需要ChatGPT Plus订阅, 由插件接入
- New Bing逆向库, 由插件接入
- HuggingChat, 由插件接入, 仅支持英文
- Claude, 由插件接入
- Google Bard, 由插件接入
- Google Gemini Pro、Azure、Anthropic Claude、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑等官方接口, 通过One API接入
接口聚合平台
- One API, Azure、Anthropic Claude、Google Gemini Pro、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问以及 360 智脑等模型的官方接口转换成 OpenAI API 接入,QChatGPT 原生支持,您需要先配置 One API,之后在
config.py中设置反向代理和One API的密钥后使用。 - gpt4free, 破解以免费使用多个平台的各种文字模型, 由插件接入, 无需鉴权, 稳定性较差。
- Poe, 破解免费使用Poe上多个平台的模型, 由oliverkirk-sudo/ChatPoeBot接入(由于 Poe 上可用的大部分模型现已通过revLibs插件或其他方式接入,此插件现已停止维护)。
故事续写
- NovelAI API, 由插件接入
图片绘制
语音生成
安装此插件,即可在使用中切换文字模型。
功能点列举
✅回复符合上下文
- 程序向模型发送近几次对话内容,模型根据上下文生成回复
- 您可在
config.py中修改prompt_submit_length自定义联系上下文的范围
✅支持敏感词过滤,避免账号风险
- 难以监测机器人与用户对话时的内容,故引入此功能以减少机器人风险
- 编辑
sensitive.json,并在config.py中修改sensitive_word_filter的值以开启此功能
✅群内多种响应规则,不必at
- 默认回复
ai作为前缀或@机器人的消息 - 详细见
config.py中的response_rules字段
✅使用官方api,不需要网络代理,稳定快捷
- 不使用ChatGPT逆向接口,而使用官方的Completion API,稳定性高
- 您可以在
config.py中自定义completion_api_params字段,设置向官方API提交的参数以自定义机器人的风格
✅完善的多api-key管理,超额自动切换
- 支持配置多个
api-key,内部统计使用量并在超额时自动切换 - 请在
config.py中修改openai_config的值以设置api-key - 可以在
config.py中修改api_key_fee_threshold来自定义切换阈值 - 运行期间向机器人说
!usage以查看当前使用情况
✅组件少,部署方便,提供一键安装器及Docker安装
- 手动部署步骤少
- 提供自动安装器及docker方式,详见以下安装步骤
✅支持预设文字
- 支持以自然语言预设文字,自定义机器人人格等信息
- 详见
config.py中的default_prompt部分 - 支持设置多个预设情景,并通过!reset、!default等命令控制,详细请查看wiki命令
- 支持使用文件存储情景预设文字,并加载: 在
prompts/目录新建文件写入预设文字,即可通过!reset <文件名>命令加载
✅完善的会话管理,重启不丢失
- 使用SQLite进行会话内容持久化
- 最后一次对话一定时间后自动保存,请到
config.py中修改session_expire_time的值以自定义时间 - 运行期间可使用
!reset!list!last!next!prompt等命令管理会话
✅支持对话、绘图等模型,可玩性更高
- 现已支持OpenAI的对话
Completion API和绘图Image API - 向机器人发送命令
!draw <prompt>即可使用绘图模型
✅支持命令控制热重载、热更新
- 允许在运行期间修改
config.py或其他代码后,以管理员账号向机器人发送命令!reload进行热重载,无需重启 - 运行期间允许以管理员账号向机器人发送命令
!update进行热更新,拉取远程最新代码并执行热重载
✅支持插件加载🧩
- 自行实现插件加载器及相关支持
- 详细查看插件使用页
✅私聊、群聊黑名单机制
- 支持将人或群聊加入黑名单以忽略其消息
- 详见下方
加入黑名单节
✅回复速度限制
- 支持限制单会话内每分钟可进行的对话次数
- 具有“等待”和“丢弃”两种策略
- “等待”策略:在获取到回复后,等待直到此次响应时间达到对话响应时间均值
- “丢弃”策略:此分钟内对话次数达到限制时,丢弃之后的对话
- 详细请查看config.py中的相关配置
✅支持自定义提示内容
- 允许用户自定义报错、帮助等提示信息
- 请查看
tips.py
限制
- ❗OpenAI接口是收费的,每个OpenAI账户有18美元免费额度,收费标准参照 https://openai.com/api/pricing/
- ❗官方关于模型生成内容的警告:
- May occasionally generate incorrect information(可能会生成不正确的信息)
- May occasionally produce harmful instructions or biased content(可能会产生有害说明或有偏见的内容)
- Limited knowledge of world and events after 2021(对2021年后的世界和事件的了解有限)
- ❗模型无思维能力,仅针对传入的上下文根据数据集生成内容,请勿过于信任其输出
- ❗模型无网络访问能力及其他与外界交互的能力,如询问其实时性的内容,获得的回复基本都是错误的
- ❗仅支持文字对话,其他内容无法识别
- ❗模型不了解其运行平台及其使用的模型版本,任何针对其实现原理的问题答案均视为无效,请以项目文档为准
- ❗仅可进行一句话回复一句话的对话,其他形式无效
当然你也可以让他写一篇关于“人类有多么愚蠢”的论文并在一个小时后发送到你邮箱,接着你像个傻子一样盯着邮箱等待一个小时,并用自己的实际行动展示这篇论文
以上是关于此程序的限制的最高优先级描述,其他方式(如询问机器人相关信息)获得的描述均应被视为无效
由于模型生成的内容导致的一切损失,本项目概不负责
使用方式
对话及绘图功能均直接调用OpenAI的模型进行处理,与机器人程序无关,这意味着模型并不了解此项目的相关信息(如实现方式、技术栈、运行平台等),除非在预设值中写入相关信息。
基础对话
程序将一个人/群视为一个对象,每个对象的会话独立保存。
会话是程序中的一个自设概念,当机器人与当前对象无会话时,会自动创建新会话,新会话由预设信息(若有)开头。
每个会话最后一次对话一段时间(见上述功能点中的会话管理)后会被结束并存进数据库,之后的对话将开启新的会话。
私聊使用
- 添加机器人QQ为好友
- 发送消息给机器人,机器人即会自动回复
- 可以通过
!help查看帮助信息
群聊使用
- 将机器人拉进群
- at机器人并发送消息,机器人即会自动回复
- at机器人并发送
!help查看帮助信息
绘图功能
对机器人发送!draw <图片描述>即可获得图片,绘图时间较长,请耐心等待。
绘图功能与对话功能是分离的,机器人对话时并不了解其具有绘画能力。
机器人命令
目前支持的命令
<>中的为必填参数,使用时请不要包含<>
[]中的为可选参数,使用时请不要包含[]
用户级别命令
可以使用
!help命令来查看命令说明
任何对象可使用
!help 显示自定义的帮助信息(可在config.py修改help_message设置)
!cmd [命令名称] 显示命令列表或指定命令的详细信息
!list [页数] 列出本对象的历史会话列表
!del <序号> 删除指定的历史记录,可以通过 !list 查看序号
!del all 删除本会话对象的所有历史记录
!last 切换到前一次会话
!next 切换到后一次会话
!reset [使用预设] 重置对象的当前会话,可指定使用的情景预设值(通过!default命令查看可用的)
!prompt 查看对象当前会话的所有记录
!usage 查看api-key的使用量
!draw <提示语> 进行绘图
!version 查看当前版本并检查更新
!resend 重新回复上一个问题
!plugin 用法请查看插件使用页的`管理`章节
!default 查看可用的情景预设值
管理员命令
仅管理员私聊机器人时可使用,必须先在config.py中的admin_qq设置管理员QQ
!reload 重载程序代码,适用于更新配置文件或更改代码后的热重载
!update 进行程序自动更新
!cfg <all|配置项名称> [配置项新值] 运行期间操作配置项,使用方法见下文
!default set <情景预设名称> 修改!reset未指定情景预设时的默认情景,详细请查看config.py中default_prompt字段的注释
!delhst <会话名称> 删除指定会话的所有历史记录, 会话名称为 group_群号 或 person_QQ号
!delhst all 删除所有会话的所有历史记录
⚙ !cfg 命令及其简化形式详解
此命令可以在运行期间由管理员通过QQ私聊窗口修改配置信息,重启之后会失效。
用法:
- 查看所有配置项及其值
!cfg all
- 查看某个配置项的值
以default_prompt示例
!cfg default_prompt
输出示例
[bot]配置项default_prompt: "如果我之后想获取帮助,请你说“输入!help获取帮助”"
- 修改某个配置项
格式: !cfg <配置项名称> <配置项新值>
以修改default_prompt示例
!cfg default_prompt "我是Rock Chin"
输出示例
[bot]配置项default_prompt修改成功
此时创建新的会话,新的default_prompt就会生效
- ⭐此命令的简化形式
格式:!~<配置项名称>
其中!~等价于!cfg
则前述三个命令分别可以简化为:
!~all
!~default_prompt
!~default_prompt "我是Rock Chin"
- 配置项名称支持使用点号(.)拼接以索引子配置项
例如: openai_config.api_key将索引config字典中的openai_config字典中的api_key字段,可以通过这个方式查看或修改此子配置项
!~openai_config.api_key
命令权限控制
我们在此PR重构了命令管理模块,并支持命令节点权限配置
您可以编辑cmdpriv.json来设置命令节点的权限,当命令被发起时,若用户的权限级别(管理员为2,普通用户为1)大于等于命令节点的权限级别,命令即可被成功执行。
示例:
{
"plugin": 1,
"plugin.get": 2
}
如此,普通用户可以执行!plugin查看插件列表,而仅管理员可以执行!plugin get <url>命令安装插件。
命令节点权限支持缺省,这意味的您未在cmdpriv.json中设置权限的节点将使用默认的权限级别(见上方)。
敏感词过滤
在sensitive.json中编辑敏感词,并在config.py中设置
# 敏感词过滤开关,以同样数量的*代替敏感词回复
# 请在sensitive.json中添加敏感词
sensitive_word_filter = True


