perf: 优化内容

This commit is contained in:
RockChinQ
2024-02-19 20:13:24 +08:00
parent c98724af88
commit 4164f89622
6 changed files with 42 additions and 493 deletions
+32 -37
View File
@@ -5,15 +5,18 @@ head:
content: ChatGPT QQ机器人插件,QChatGPT项目插件
title: 插件介绍
icon: blog
order: 1
date: 2023-09-30
category:
- 插件介绍
index: false
---
# QChatGPT的插件
:::info 目录
[[toc]]
:::
## 插件是什么?
## 插件分类
**插件**,是QChatGPT的扩展模块,分为**行为插件**和**内容函数**两种类型。行为插件由主程序运行中的事件驱动,而内容函数由GPT生成的内容驱动。这两种驱动方式都统一包装在插件类中。
@@ -37,29 +40,10 @@ Q:阅读并总结这篇文章:https://zhuanlan.zhihu.com/p/607570830
Q:搜一下清远今天天气如何
```
GPT将会回复一个对`access_the_web`的函数调用请求,QChatGPT将调用插件提供的内容函数,并返回调用结果给GPT使其生成新的回复。
GPT将会回复一个对`access_the_web`的函数调用请求,QChatGPT将调用插件提供的内容函数,并返回调用结果给GPT使其生成新的回复。
当然,函数调用功能不止局限于网络访问,还可以实现图片处理、科学计算、行程规划等需要调用函数的功能,理论上我们可以通过内容函数实现与`ChatGPT Plugins`相同的功能。
- 您需要使用`v2.5.0`以上的版本才能加载包含内容函数的插件
- 您需要同时在`config.py`中的`completion_api_params`中设置`model`为支持函数调用的模型,推荐使用`gpt-3.5-turbo-16k`
- 使用此功能可能会造成难以预期的账号余额消耗,请关注
- [逆向库插件](https://github.com/RockChinQ/revLibs)现在也支持函数调用了。您可以在完全免费的情况下使用GPT-3.5进行函数调用,若您在主程序配置了内容函数并启用,逆向ChatGPT会自动使用这些函数
> **QChatGPT的一些不错的内容函数插件**
>
> [WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) - 让机器人能联网!!
## 插件能干什么?
- **自定义回复逻辑:** 定义特定关键词或指令的回复方式。
- **集成外部服务:** 与外部API交互,获取信息或执行操作。
- **数据存储和检索:** 将数据存储在数据库中,并能够检索和更新。
- **自动化任务:** 在特定事件触发时执行自动化任务,如定时任务、特定用户消息触发等。
- **内容函数调用:** 利用GPT的Function Calling能力执行各种任务,如网络搜索、图片处理等。
- **更多……**
## 插件怎么用?
## 插件用法
### 安装
@@ -67,14 +51,14 @@ GPT将会回复一个对`access_the_web`的函数调用请求,QChatGPT将调
#### 储存库克隆(推荐)
在运行期间,使用管理员账号对机器人私聊发送`!plugin get <Git储存库地址>`即可自动获取源码并安装插件,程序会根据仓库中的`requirements.txt`文件自动安装依赖库
在运行期间,使用管理员账号对机器人私聊发送`!plugin get <GitHub储存库地址>`即可自动获取源码并安装插件,程序会根据仓库中的`requirements.txt`文件自动安装依赖库
例如安装`hello_plugin`插件
```
!plugin get https://github.com/RockChinQ/hello_plugin
```
安装完成后重启程序或使用管理员账号私聊机器人发送`!reload`进行热重载加载插件
安装完成后重启程序。
#### 手动安装
@@ -86,7 +70,7 @@ GPT将会回复一个对`access_the_web`的函数调用请求,QChatGPT将调
```
!plugin 列出所有已安装的插件
!plugin get <储存库地址> 从Git储存库安装插件(需要管理员权限)
!plugin get <储存库地址> 从GitHub储存库地址安装插件(需要管理员权限)
!plugin update all 更新所有插件(需要管理员权限,仅支持从储存库安装的插件)
!plugin update <插件名> 更新指定插件
!plugin del <插件名> 删除插件(需要管理员权限)
@@ -96,21 +80,32 @@ GPT将会回复一个对`access_the_web`的函数调用请求,QChatGPT将调
!func 列出所有内容函数
```
#### 控制插件执行顺序
#### plugins/plugins.json 配置文件
可以通过修改`plugins/settings.json`中`order`字段中每个插件名称的前后顺序,以更改插件**初始化**和**事件执行**顺序
程序启动时,会同步这里的设置和实际加载的插件设置。
#### 启用或关闭插件
**这个文件内容是由程序自动生成的,不要手动添加或删除项目,仅可修改优先级和启用状态**,修改后需重启。
无需卸载即可管理插件的开关
编辑`plugins`目录下的`switch.json`文件,将相应的插件的`enabled`字段设置为`true/false(开/关)`,之后重启程序或执行热重载即可控制插件开关
示例:
#### 控制全局内容函数开关
```json
"plugins": [
{
"name": "Nahida",
"description": "Hello Nahida",
"version": "0.1",
"author": "RockChinQ",
"source": "",
"main_file": "plugins/Nahida/main.py",
"pkg_path": "plugins/Nahida/",
"priority": 0,
"enabled": true
}
]
```
内容函数是基于[GPT的Function Calling能力](https://platform.openai.com/docs/guides/gpt/function-calling)实现的,这是一种嵌入对话中,由GPT自动调用的函数。
每个插件可以自行注册内容函数,您可以在`plugins`目录下的`settings.json`中设置`functions`下的`enabled`为`true`或`false`控制这些内容函数的启用或禁用。
`source`:源码地址,若无内容,则表示这个插件不支持程序自动更新
## 如何自定义插件?
> QChatGPT的插件具有高度的可拓展性,你可以自行编写python代码来实现无限的功能,插件开发方法具体阅读:[插件开发](/posts/plugin/develop.html)
`priority`: 插件运行优先级,在初始化、事件调用时,高优先级的插件将优先被处理
`enabled`:设置为false时,不会初始化,也不会被调用