doc: 更换VitePress后的初步内容

This commit is contained in:
lazy
2024-08-28 00:50:44 +08:00
parent f7d7dab296
commit d1698186e1
128 changed files with 3490 additions and 6886 deletions
-47
View File
@@ -1,47 +0,0 @@
name: 构建文档Docker镜像
on:
# push:
# branches:
# - main
workflow_dispatch:
permissions:
contents: write
jobs:
build-docker-image:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: 设置 Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: 安装 pnpm
run: |
npm install -g pnpm
- name: 安装依赖
run:
pnpm install
- name: 构建文档
env:
NODE_OPTIONS: --max_old_space_size=8192
run: |
pnpm run docs:build
ls -R
- name: Build image
run: |
docker build -t ${{ secrets.DOCKER_ACCOUNT }}/qchatgpt-wiki:latest .
- name: Publish image
run: |
docker login -u ${{ secrets.DOCKER_ACCOUNT }} -p ${{ secrets.DOCKER_PWD}}
docker push ${{ secrets.DOCKER_ACCOUNT }}/qchatgpt-wiki:latest
-48
View File
@@ -1,48 +0,0 @@
name: 部署文档
on:
workflow_dispatch:
permissions:
contents: write
jobs:
deploy-docs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: 设置 Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: 安装 pnpm
run: |
npm install -g pnpm
- name: 安装依赖
run:
pnpm install
- name: 构建文档
env:
NODE_OPTIONS: --max_old_space_size=8192
run: |-
pnpm run docs:build
- name: 部署文档
uses: cross-the-world/scp-pipeline@master
env:
WELCOME: "ssh scp ssh pipelines"
LASTSSH: "Doing something after copying"
with:
host: ${{ secrets.ALI_SERVER_HOST }}
user: ${{ secrets.ALI_SERVER_NAME }}
pass: ${{ secrets.ALI_SERVER_PASSWD }}
connect_timeout: 100s
local: './src/.vuepress/dist/*'
remote: ${{ secrets.ALI_TARGET_v3 }}
+2 -5
View File
@@ -1,5 +1,2 @@
node_modules/
src/.vuepress/.cache/
src/.vuepress/.temp/
src/.vuepress/dist/
node_modules/
docs/.vitepress/cache/
-7
View File
@@ -1,7 +0,0 @@
FROM nginx:alpine
COPY ./src/.vuepress/dist/ /usr/share/nginx/html/
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
+53 -53
View File
@@ -1,53 +1,53 @@
# [QChatGPT](https://github.com/RockChinQ/QChatGPT) 官方文档
> 此分支是 QChatGPT 3.x 的文档
> [QChatGPT 代码仓库](https://github.com/RockChinQ/QChatGPT)
## 参与编写
文档基于 VuePress 生成,本地编写需要安装 Node 和 VuePress
### NodeJS
自行安装
### VuePress
Clone 本仓库,在目录下执行以下命令安装依赖:
```bash
pnpm install
```
完成后即可修改文档,修改完后使用以下命令本地启动:
```bash
pnpm docs:dev
```
### 使用图片
把图片放到 `src/.vuepress/public/assets/image` 目录下,然后在文档中使用Web访问时的绝对路径引用,如:
```markdown
![image](/assets/image/xxx.png)
```
### 部署细节
现在使用 Cloudflare Pages 托管,提交后自动部署。
### 推荐环境
推荐使用 GitHub Codespaces 编写,仓库页面点击 "Code" -> "Codespaces" -> 直接创建一个 Codespace
在其中按照上述方式安装依赖并运行调试。
> 若出现`Error: /lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.29`的报错,请按照如下文章内容解决:
> https://zhuanlan.zhihu.com/p/615111375
### 一些规范化标准
- 文件夹和文件的命名:**一律使用全小写,单词直接`-`隔开,如**`config-intro.md`
- 子文件(夹)的命名,**不加前缀**(即文件夹的名称),如:`plugin`文件夹下的,插件列表(文件)称之为`list.md`,文件夹`some-plugin-deploy`
- 由于这是有关于文档的规范化命名,所以任何文件的名称都可以以教程的角度来理解,如`plugin`是有关插件的教程
# [QChatGPT](https://github.com/RockChinQ/QChatGPT) 官方文档
> 此分支是 QChatGPT 3.x 的文档
> [QChatGPT 代码仓库](https://github.com/RockChinQ/QChatGPT)
## 参与编写
文档基于 VitePress 生成,本地编写需要安装 Node 和 VitePress
### NodeJS
自行安装
### VitePress
Clone 本仓库,在目录下执行以下命令安装依赖:
```bash
npm install
```
完成后即可修改文档,修改完后使用以下命令本地启动:
```bash
npm docs:dev
```
### 使用图片
把图片放到 `docs/assets/image` 目录下,然后在文档中使用Web访问时的绝对路径引用,如:
```markdown
![image](/assets/image/xxx.png)
```
### 部署细节
现在使用 Cloudflare Pages 托管,提交后自动部署。
### 推荐环境
推荐使用 GitHub Codespaces 编写,仓库页面点击 "Code" -> "Codespaces" -> 直接创建一个 Codespace
在其中按照上述方式安装依赖并运行调试。
> 若出现`Error: /lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.29`的报错,请按照如下文章内容解决:
> https://zhuanlan.zhihu.com/p/615111375
### 一些规范化标准
- 文件夹和文件的命名:**一律使用全小写,单词直接`-`隔开,如**`plugin-intro.md`
- 子文件(夹)的命名,**不加前缀**(即文件夹的名称),如:`deploy`文件夹下的,文件夹`qchatgpt`,`qchatgpt`文件夹下的`manual`文件称之为`manual.md`
- 由于这是有关于文档的规范化命名,所以任何文件的名称都可以以教程的角度来理解,如`deploy`是有关部署的教程
+165
View File
@@ -0,0 +1,165 @@
import { defineConfig } from "vitepress";
// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "QChatGPT 文档",
description:
"😎高稳定性、🧩支持扩展、🦄多模态的 ChatGPT QQ / QQ频道 / One Bot 机器人🤖 | 支持 OpenAI GPT、GPT 4o、Claude、Gemini Pro、DeepSeek、Moonshot(Kimi)、gpt4free、One API、Ollama 的 QQ / QQ频道 / OneBot 机器人 / Agent 平台",
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
logo: "/assets/icon/chrome-192.png",
nav: [
{ text: "首页", link: "/" },
{ text: "概述", link: "/insight/intro" },
{ text: "部署", link: "/deploy/" },
],
sidebar: [
{
text: "概述",
items: [
{ text: "项目介绍", link: "/insight/intro" },
{ text: "新手指引", link: "/insight/guide" },
],
},
{
text: "部署",
link: "/deploy/",
items: [
{
text: "部署 QChatGPT",
collapsed: true,
items: [
{ text: "手动部署", link: "/deploy/qchatgpt/manual" },
{ text: "Dokcer部署", link: "/deploy/qchatgpt/docker" },
],
},
{
text: "部署消息平台",
collapsed: true,
link: "/deploy/platforms/",
items: [
{
text: "aiocqhttp(推荐)",
collapsed: true,
link: "/deploy/platforms/aiocqhttp/",
items: [
{
text: "Lagrange",
link: "/deploy/platforms/aiocqhttp/lagrange",
},
{
text: "NapCat",
link: "/deploy/platforms/aiocqhttp/napcat",
},
{
text: "llonebot",
link: "/deploy/platforms/aiocqhttp/llonebot",
},
{
text: "shamrock",
link: "/deploy/platforms/aiocqhttp/shamrock",
},
],
},
{
text: "mirai",
link: "/deploy/platforms/mirai",
},
{
text: "go-cqhttp",
link: "/deploy/platforms/gocq",
},
{
text: "QQ官方",
link: "/deploy/platforms/official",
},
],
},
{ text: "填写配置信息", link: "/deploy/quick-config/config" },
],
},
{
text: "使用",
items: [
{ text: "命令用法", link: "/usage/command" },
{ text: "插件列表", link: "/usage/plugin-list" },
{ text: "常见问题", link: "/usage/faq" },
],
},
{
text: "配置",
items: [
{
text: "功能配置",
collapsed: true,
items: [
{ text: "platform.json", link: "/config/function/platform" },
{ text: "pipeline.json", link: "/config/function/pipeline" },
{ text: "provider.json", link: "/config/function/provider" },
{ text: "command.json", link: "/config/function/command" },
{ text: "system.json", link: "/config/function/system" },
],
},
{
text: "元数据配置",
collapsed: true,
items: [
{
text: "敏感词sensitive-words.json",
link: "/config/metadata/adapter-qq-botpy",
},
{
text: "模型列表llm-models.json",
link: "/config/metadata/llm-models",
},
{
text: "qq-botpy ID 映射 adapter-qq-botpy.json",
link: "/config/metadata/sensitive-words",
},
],
},
],
},
{
text: "开发",
collapsed: true,
items: [
{ text: "技术信息", link: "/develop/tech-info" },
{ text: "插件介绍", link: "/develop/plugin-intro" },
{ text: "插件开发", link: "/develop/plugin-dev" },
{ text: "组件拓展", link: "/develop/extension" },
{ text: "API参考", link: "/develop/api-ref" },
],
},
{
text: "规模化和商用",
collapsed: true,
link: "/tob/",
items: [
{ text: "消息平台误导性", link: "/tob/platform" },
{ text: "AI内容合规性", link: "/tob/provider" },
{ text: "咨询方式", link: "/tob/contact" },
],
},
],
// 编辑链接
editLink: {
pattern: "https://github.com/vuejs/vitepress/edit/main/docs/:path",
},
// 本地搜索
search: {
provider: 'local'
},
// 导航栏的社交图标
socialLinks: [
{ icon: "github", link: "https://github.com/the-lazy-me/QChatGPT-Wiki" },
],
},
// 最后更新时间
lastUpdated: true,
});
+6
View File
@@ -0,0 +1,6 @@
/* .vitepress/theme/custom.css */
:root {
/* 自定义主页的hero部分的 name 的字体颜色 */
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff);
}
+5
View File
@@ -0,0 +1,5 @@
// .vitepress/theme/index.ts
import DefaultTheme from 'vitepress/theme'
import './custom.css'
export default DefaultTheme

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 217 KiB

After

Width:  |  Height:  |  Size: 217 KiB

Before

Width:  |  Height:  |  Size: 246 KiB

After

Width:  |  Height:  |  Size: 246 KiB

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Before

Width:  |  Height:  |  Size: 854 B

After

Width:  |  Height:  |  Size: 854 B

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Before

Width:  |  Height:  |  Size: 215 KiB

After

Width:  |  Height:  |  Size: 215 KiB

Before

Width:  |  Height:  |  Size: 215 KiB

After

Width:  |  Height:  |  Size: 215 KiB

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

Before

Width:  |  Height:  |  Size: 268 KiB

After

Width:  |  Height:  |  Size: 268 KiB

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Before

Width:  |  Height:  |  Size: 963 B

After

Width:  |  Height:  |  Size: 963 B

Before

Width:  |  Height:  |  Size: 960 B

After

Width:  |  Height:  |  Size: 960 B

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Before

Width:  |  Height:  |  Size: 691 KiB

After

Width:  |  Height:  |  Size: 691 KiB

Before

Width:  |  Height:  |  Size: 771 B

After

Width:  |  Height:  |  Size: 771 B

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Before

Width:  |  Height:  |  Size: 184 KiB

After

Width:  |  Height:  |  Size: 184 KiB

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 196 KiB

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 218 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

@@ -1,54 +1,42 @@
---
head:
- - meta
- name: keywords
content: command.json 配置文件
title: command.json 配置项
icon: config
order: 4
author: RockChinQ
date: 2024-02-18
category:
- 配置文件
---
:::info 目录
[[toc]]
:::
`data/config/command.json` 中配置命令相关的配置项。
## 命令权限 privilege
设置每个命令的权限配置
普通用户权限级别为 1,管理员(`system.json`中设置的)权限级别为 2。
在这里设置每个命令的最低权限级别,若设置为1,则用户和管理员均可用,若为2,则仅管理员可用
需要设置子命令,以点号间隔,如`"plugin.on"` 示例:
```json
{
"plugin": 1,
"plugin.on": 2
}
```
意思是 plugin 命令的最低权限级别为 1,plugin.on 命令的最低权限级别为 2。 每个命令都有默认的权限级别
若不设置,则使用默认的级别。在`pkg/command/operators`里每个命令类有默认的权限级别
## 命令前缀 command-prefix
设置命令前缀。以数组形式设置,程序将前缀符合设置的消息视为命令(群内需要符合群响应规则)。
如下示例将设置命令前缀为`!`、`!`、`#`:
```json
"command-prefix": [
"!",
"!",
"#"
]
# command.json 配置项
:::info 目录
[[toc]]
:::
`data/config/command.json` 中配置命令相关的配置项。
## 命令权限 privilege
设置每个命令的权限配置
普通用户权限级别为 1,管理员(`system.json`中设置的)权限级别为 2。
在这里设置每个命令的最低权限级别,若设置为1,则用户和管理员均可用,若为2,则仅管理员可用
需要设置子命令,以点号间隔,如`"plugin.on"` 示例:
```json
{
"plugin": 1,
"plugin.on": 2
}
```
意思是 plugin 命令的最低权限级别为 1,plugin.on 命令的最低权限级别为 2。 每个命令都有默认的权限级别
若不设置,则使用默认的级别。在`pkg/command/operators`里每个命令类有默认的权限级别
## 命令前缀 command-prefix
设置命令前缀。以数组形式设置,程序将前缀符合设置的消息视为命令(群内需要符合群响应规则)。
如下示例将设置命令前缀为`!`、`!`、`#`:
```json
"command-prefix": [
"!",
"!",
"#"
]
```
@@ -1,211 +1,199 @@
---
head:
- - meta
- name: keywords
content: pipeline.json 配置文件
title: pipeline.json 配置项
icon: config
order: 2
author: RockChinQ
date: 2024-02-18
category:
- 配置文件
---
:::info 目录
[[toc]]
:::
`data/config/pipeline.json` 配置程序处理一个请求的过程中的操作流程,平台适配器获取到消息事件之后,发送给pipeline排队进行处理。可以设置黑白名单、群响应规则、是否检查传入消息、传入消息忽略规则、是否检查敏感词、百度云内容审核配置、传入消息长度设置、限速配置等功能。
## 访问控制 access-control
```json
"access-control":{
"mode": "blacklist",
"blacklist": [],
"whitelist": []
},
```
`mode`:设置模式白名单 `whitelist`(仅处理`whitelist`列表中的会话的消息)或黑名单 `blacklist`(忽略`blacklist`列表中的会话的消息)
`blacklist`:格式`{type}_{id}`,示例:`"blacklist": ["group_12345678","person_12341234"],`
`whitelist`:格式`{type}_{id}`,示例:`"whitelist": ["group_12345678","person_12341234"]`
## 群消息响应规则 respond-rules
仅处理`access-control`通过的会话的消息,其中可含有多个key,若要对特定群设置响应规则,则以群号作为键。未特指的群,将使用 default 中的响应规则
```json
"respond-rules": {
"default": {
"at": true,
"prefix": [
"/ai", "!ai", "!ai", "ai"
],
"regexp": [],
"random": 0.0
}
},
```
`at`:`true`或`false`,设置@响应
`prefix`:设置响应前缀
`regexp`:正则匹配
`random`:随机匹配,为1时所有消息都响应
你可以为单个群聊设置特定的响应规则,例如
```json
"respond-rules": {
"default": {
"at": true,
"prefix": [
"/ai", "!ai", "!ai", "ai"
],
"regexp": [],
"random": 0.0
},
"123456":{
"at": true,
"prefix": [
"/ai", "!ai", "!ai", "ai"
],
"regexp": [],
"random": 0.0
},
"789012":{
"at": true,
"prefix": [
"/ai", "!ai", "!ai", "ai"
],
"regexp": [],
"random": 0.0
}
},
```
## 检查传入消息内容开关 income-msg-check
```json
"income-msg-check": true,
```
`income-msg-check`:是否检查传入的消息
## 传入消息忽略规则 ignore-rules
```json
"ignore-rules": {
"prefix": ["/"],
"regexp": []
},
```
符合规则的传入消息将被忽略,仅`income-msg-check`为`true`时生效
`prefix`:前缀为`/`的忽略
`regexp`:正则匹配的忽略
## 本地敏感词检查 check-sensitive-words
```json
"check-sensitive-words": true,
```
`check-sensitive-words`:是否检查敏感词,敏感词词库为`data/config/sensitive-words.json`里面的
## 百度云内容审核配置 baidu-cloud-examine
```json
"baidu-cloud-examine": {
"enable": false,
"api-key": "",
"api-secret": ""
},
```
`baidu-cloud-examine`:控制是否使用是否进行百度云内容审核
`enable`:enable=true时启用,一定会检查AI响应结果,仅`income-msg-check`为true时检查传入消息
`api-key`:百度AI开放平台的`API_KEY`
`api-secret`:百度AI开放平台的`SECRET_KEY`
*`API_KEY`与`SECRET_KEY`是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的**应用列表**中查看*
## 请求限速规则 rate-limit
```json
"rate-limit": {
"strategy": "drop",
"algo": "fixwin",
"fixwin": {
"default": {
"window-size": 60,
"limit": 60
}
}
}
```
`strategy`:会话中的请求速率超过限制时的处理策略,`drop`为丢弃新请求,`wait`为等待请求速率降到限制以下
`algo`: 使用的算法,目前仅支持 `fixwin` (固定窗口),即窗口期内最多处理多少个请求,可自行实现其他限速算法,具体查看插件编写教程
`fixwin`:具体速率设置,设定的窗口期内最多处理多少个请求,支持对特定session指定限速,格式为 {type}_{id},示例:group_12345678,person_12341234
`window-size`:窗口期大小,单位秒
`limit`:窗口期内最多处理多少个请求
例如:
```json
"fixwin": {
"default": {
"window-size": 60,
"limit": 60
},
"group_12345678": {
"window-size": 30,
"limit": 60
},
"person_12341234": {
"window-size": 60,
"limit": 60
}
}
```
将设定:
- 默认群窗口期60秒内最多处理60个请求
- 群号为12345678的窗口期30秒内最多处理60个请求
- 用户号为12341234的窗口期60秒内最多处理60个请求
## 对话历史记录截断 msg-truncate
将在发送消息给模型之前对当前会话的历史消息进行截断,以限制传给模型的消息长度
```json
"msg-truncate": {
"method": "round",
"round": {
"max-round": 10
}
}
```
`method`:截断方法,`round`为按回合截断,目前仅支持`round`,可自行实现其他截断方法,具体查看插件编写教程
`round`:按回合截断,`max-round`为最多保留多少回合的历史消息
# pipeline.json 配置项
:::info 目录
[[toc]]
:::
`data/config/pipeline.json` 配置程序处理一个请求的过程中的操作流程,平台适配器获取到消息事件之后,发送给pipeline排队进行处理。可以设置黑白名单、群响应规则、是否检查传入消息、传入消息忽略规则、是否检查敏感词、百度云内容审核配置、传入消息长度设置、限速配置等功能。
## 访问控制 access-control
```json
"access-control":{
"mode": "blacklist",
"blacklist": [],
"whitelist": []
},
```
`mode`:设置模式白名单 `whitelist`(仅处理`whitelist`列表中的会话的消息)或黑名单 `blacklist`(忽略`blacklist`列表中的会话的消息)
`blacklist`:格式`{type}_{id}`,示例:`"blacklist": ["group_12345678","person_12341234"],`
`whitelist`:格式`{type}_{id}`,示例:`"whitelist": ["group_12345678","person_12341234"]`
## 群消息响应规则 respond-rules
仅处理`access-control`通过的会话的消息,其中可含有多个key,若要对特定群设置响应规则,则以群号作为键。未特指的群,将使用 default 中的响应规则
```json
"respond-rules": {
"default": {
"at": true,
"prefix": [
"/ai", "!ai", "!ai", "ai"
],
"regexp": [],
"random": 0.0
}
},
```
`at`:`true`或`false`,设置@响应
`prefix`:设置响应前缀
`regexp`:正则匹配
`random`:随机匹配,为1时所有消息都响应
你可以为单个群聊设置特定的响应规则,例如
```json
"respond-rules": {
"default": {
"at": true,
"prefix": [
"/ai", "!ai", "!ai", "ai"
],
"regexp": [],
"random": 0.0
},
"123456":{
"at": true,
"prefix": [
"/ai", "!ai", "!ai", "ai"
],
"regexp": [],
"random": 0.0
},
"789012":{
"at": true,
"prefix": [
"/ai", "!ai", "!ai", "ai"
],
"regexp": [],
"random": 0.0
}
},
```
## 检查传入消息内容开关 income-msg-check
```json
"income-msg-check": true,
```
`income-msg-check`:是否检查传入的消息
## 传入消息忽略规则 ignore-rules
```json
"ignore-rules": {
"prefix": ["/"],
"regexp": []
},
```
符合规则的传入消息将被忽略,仅`income-msg-check`为`true`时生效
`prefix`:前缀为`/`的忽略
`regexp`:正则匹配的忽略
## 本地敏感词检查 check-sensitive-words
```json
"check-sensitive-words": true,
```
`check-sensitive-words`:是否检查敏感词,敏感词词库为`data/config/sensitive-words.json`里面的
## 百度云内容审核配置 baidu-cloud-examine
```json
"baidu-cloud-examine": {
"enable": false,
"api-key": "",
"api-secret": ""
},
```
`baidu-cloud-examine`:控制是否使用是否进行百度云内容审核
`enable`:enable=true时启用,一定会检查AI响应结果,仅`income-msg-check`为true时检查传入消息
`api-key`:百度AI开放平台的`API_KEY`
`api-secret`:百度AI开放平台的`SECRET_KEY`
*`API_KEY`与`SECRET_KEY`是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的**应用列表**中查看*
## 请求限速规则 rate-limit
```json
"rate-limit": {
"strategy": "drop",
"algo": "fixwin",
"fixwin": {
"default": {
"window-size": 60,
"limit": 60
}
}
}
```
`strategy`:会话中的请求速率超过限制时的处理策略,`drop`为丢弃新请求,`wait`为等待请求速率降到限制以下
`algo`: 使用的算法,目前仅支持 `fixwin` (固定窗口),即窗口期内最多处理多少个请求,可自行实现其他限速算法,具体查看插件编写教程
`fixwin`:具体速率设置,设定的窗口期内最多处理多少个请求,支持对特定session指定限速,格式为 {type}_{id},示例:group_12345678,person_12341234
`window-size`:窗口期大小,单位秒
`limit`:窗口期内最多处理多少个请求
例如:
```json
"fixwin": {
"default": {
"window-size": 60,
"limit": 60
},
"group_12345678": {
"window-size": 30,
"limit": 60
},
"person_12341234": {
"window-size": 60,
"limit": 60
}
}
```
将设定:
- 默认群窗口期60秒内最多处理60个请求
- 群号为12345678的窗口期30秒内最多处理60个请求
- 用户号为12341234的窗口期60秒内最多处理60个请求
## 对话历史记录截断 msg-truncate
将在发送消息给模型之前对当前会话的历史消息进行截断,以限制传给模型的消息长度
```json
"msg-truncate": {
"method": "round",
"round": {
"max-round": 10
}
}
```
`method`:截断方法,`round`为按回合截断,目前仅支持`round`,可自行实现其他截断方法,具体查看插件编写教程
`round`:按回合截断,`max-round`为最多保留多少回合的历史消息
@@ -1,147 +1,134 @@
---
head:
- - meta
- name: keywords
content: platform.json 配置文件
title: platform.json 配置项
icon: config
order: 1
author: RockChinQ
date: 2024-02-18
category:
- 配置文件
---
:::info 目录
[[toc]]
:::
`data/config/platform.json` 配置程序连接的消息平台和相关消息处理配置项。启用的消息适配器列表,是否跟踪内容函数调用过程,群内回复时是否引用原消息,群内回复时是否at原用户,强制消息延迟范围,长消息处理策略,是否向用户隐藏AI的异常信息等。
## 消息平台适配器 platform-adapters
```json
"platform-adapters": [
{
"adapter": "yiri-mirai",
"enable": false,
"host": "127.0.0.1",
"port": 8080,
"verifyKey": "yirimirai",
"qq": 123456789
},
{
"adapter": "nakuru",
"enable": false,
"host": "127.0.0.1",
"ws_port": 8080,
"http_port": 5700,
"token": ""
},
{
"adapter": "aiocqhttp",
"enable": false,
"host": "127.0.0.1",
"port": 8080,
"access-token": "",
},
{
"adapter": "qq-botpy",
"enable": false,
"appid": "",
"secret": "",
"intents": [
"public_guild_messages",
"direct_message"
]
}
],
```
目前支持 `mirai`、`go-cqhttp`、`aiocqhttp`、`qq-botpy` 四种消息平台适配器,也可以同时启用多个同种类或不同种类的平台适配器。
各个适配器的配置方式请查看[部署教程](../deploy/config.html)。
### 多开示例
```json
"platform-adapters": [
{
"adapter": "yiri-mirai",
"enable": true,
"host": "127.0.0.1",
"port": 8080,
"verifyKey": "yirimirai",
"qq": 123456789
},
{
"adapter": "nakuru",
"enable": true,
"host": "127.0.0.1",
"ws_port": 8081,
"http_port": 5701,
"token": "token"
}
]
```
## 跟踪内容函数调用 track-function-calls
```json
"track-function-calls": true,
```
是否跟踪内容函数调用过程,如果开启了,在对话中调用的内容函数记录也会发给用户
关闭后(false)仅会发给用户最终结果
> 内容函数功能请查看插件功能文档。
## 引用原消息 quote-origin
```json
"quote-origin": false,
```
在群内回复时是否引用原消息
## 是否at原用户 at-sender
```json
"at-sender": false,
```
在群内回复时是否at原用户
## 强制消息延迟范围 force-delay
```json
"force-delay": [0, 0],
```
在将响应内容发回给用户前的强制消息延迟时间范围,以防风控,单位是秒。
## 长消息处理策略 long-text-process
```json
"long-text-process": {
"threshold": 256,
"strategy": "forward",
"font-path": ""
},
```
`threshold`:阈值,文字长度大于此值的消息会使用长消息处理策略
`strategy`:长消息处理策略,目前支持forward(转发消息组件)和image(文字转图片)
`font-path`: image的渲染字体。未设置时,如果在windows下,会尝试寻找系统的微软雅黑字体,若找不到,则转为forward策略。未设置时,若不是windows系统,则直接转为forward策略。
## 向用户隐藏AI接口的异常信息 hide-exception-info
```
"hide-exception-info": true
```
是否向用户隐藏AI的异常信息,如果为true,当请求AI接口出现异常时,会返回一个错误的提示给用户。而把报错详情输出在控制台。
# platform.json 配置项
:::info 目录
[[toc]]
:::
`data/config/platform.json` 配置程序连接的消息平台和相关消息处理配置项。启用的消息适配器列表,是否跟踪内容函数调用过程,群内回复时是否引用原消息,群内回复时是否at原用户,强制消息延迟范围,长消息处理策略,是否向用户隐藏AI的异常信息等。
## 消息平台适配器 platform-adapters
```json
"platform-adapters": [
{
"adapter": "yiri-mirai",
"enable": false,
"host": "127.0.0.1",
"port": 8080,
"verifyKey": "yirimirai",
"qq": 123456789
},
{
"adapter": "nakuru",
"enable": false,
"host": "127.0.0.1",
"ws_port": 8080,
"http_port": 5700,
"token": ""
},
{
"adapter": "aiocqhttp",
"enable": false,
"host": "127.0.0.1",
"port": 8080,
"access-token": "",
},
{
"adapter": "qq-botpy",
"enable": false,
"appid": "",
"secret": "",
"intents": [
"public_guild_messages",
"direct_message"
]
}
],
```
目前支持 `mirai`、`go-cqhttp`、`aiocqhttp`、`qq-botpy` 四种消息平台适配器,也可以同时启用多个同种类或不同种类的平台适配器。
各个适配器的配置方式请查看[部署教程](../deploy/config.html)。
### 多开示例
```json
"platform-adapters": [
{
"adapter": "yiri-mirai",
"enable": true,
"host": "127.0.0.1",
"port": 8080,
"verifyKey": "yirimirai",
"qq": 123456789
},
{
"adapter": "nakuru",
"enable": true,
"host": "127.0.0.1",
"ws_port": 8081,
"http_port": 5701,
"token": "token"
}
]
```
## 跟踪内容函数调用 track-function-calls
```json
"track-function-calls": true,
```
是否跟踪内容函数调用过程,如果开启了,在对话中调用的内容函数记录也会发给用户
关闭后(false)仅会发给用户最终结果
> 内容函数功能请查看插件功能文档。
## 引用原消息 quote-origin
```json
"quote-origin": false,
```
在群内回复时是否引用原消息
## 是否at原用户 at-sender
```json
"at-sender": false,
```
在群内回复时是否at原用户
## 强制消息延迟范围 force-delay
```json
"force-delay": [0, 0],
```
在将响应内容发回给用户前的强制消息延迟时间范围,以防风控,单位是秒。
## 长消息处理策略 long-text-process
```json
"long-text-process": {
"threshold": 256,
"strategy": "forward",
"font-path": ""
},
```
`threshold`:阈值,文字长度大于此值的消息会使用长消息处理策略
`strategy`:长消息处理策略,目前支持forward(转发消息组件)和image(文字转图片)
`font-path`: image的渲染字体。未设置时,如果在windows下,会尝试寻找系统的微软雅黑字体,若找不到,则转为forward策略。未设置时,若不是windows系统,则直接转为forward策略。
## 向用户隐藏AI接口的异常信息 hide-exception-info
```
"hide-exception-info": true
```
是否向用户隐藏AI的异常信息,如果为true,当请求AI接口出现异常时,会返回一个错误的提示给用户。而把报错详情输出在控制台。
@@ -1,178 +1,165 @@
---
head:
- - meta
- name: keywords
content: provider.json 配置文件
title: provider.json 配置项
icon: config
order: 3
author: RockChinQ
date: 2024-02-18
category:
- 配置文件
---
:::info 目录
[[toc]]
:::
`data/config/provider.json` 中配置AI接口提供商相关的配置项。
## 启用聊天功能 enable-chat
```json
"enable-chat": true,
```
`enable-chat`:是否开启AI聊天功能
## 启用 AI 视觉功能 enable-vision
```json
"enable-vision": true,
```
`enable-vision`:是否开启AI视觉功能。需要使用的模型同时支持视觉功能,详情见元数据板块。
## 模型接口密钥 keys
```json
"keys": {
"openai": [
"sk-1234567890"
],
"anthropic": [
"sk-1234567890"
],
"moonshot": [
"sk-1234567890"
],
"deepseek": [
"sk-1234567890"
]
},
```
`keys`:设置密钥组,以字典的形式设置若干个密钥组,每个密钥组的键为密钥组名称,值为密钥列表。模型与密钥组的对应关系,请查看元数据板块。
目前支持的密钥组:
- `openai`:OpenAI 的密钥组,如果你没有OpenAI API Key,你可以[在此获取](https://ai.lazyshare.top/)
- `anthropic`:Anthropic 的密钥组
- `moonshot`:Moonshot(月之暗面 kimi)的密钥组
- `deepseek`:Deepseek(深度求索)的密钥组
## 大模型请求器 requester
```json
"requester": {
"openai-chat-completions": {
"base-url": "https://api.openai.com/v1",
"args": {},
"timeout": 120
},
"anthropic-messages": {
"base-url": "https://api.anthropic.com",
"args": {
"max_tokens": 1024
},
"timeout": 120
},
"moonshot-chat-completions": {
"base-url": "https://api.moonshot.cn/v1",
"args": {},
"timeout": 120
},
"deepseek-chat-completions": {
"base-url": "https://api.deepseek.com",
"args": {},
"timeout": 120
},
"ollama-chat": {
"base-url": "http://127.0.0.1:11434",
"args": {},
"timeout": 600
}
},
```
`requester`:设置请求器,以字典的形式设置若干个请求器,每个请求器的键为请求器名称,值为请求器配置。模型与请求器的对应关系,请查看元数据板块。实现请求器的方式,请查看插件编写教程。
目前支持的请求器有:
- `openai-chat-completions`:OpenAI 的 ChatCompletion 请求器
- `anthropic-messages`:Anthropic 请求器(Claude)
- `moonshot-chat-completions`:Moonshot 请求器(月之暗面)
- `deepseek-chat-completions`:Deepseek 请求器(深度求索)
- `ollama-chat`:Ollama 请求器,不需要密钥,直接请求目标地址的 Ollama 服务
`base-url`:设置接口地址。
`args`:请求时除了model之外的其他参数,以字典的形式设置。
`timeout`:设置请求超时时间,以秒为单位,对于耗时较长的模型,建议设置较大值
## 使用的模型 model
```json
"model": "gpt-3.5-turbo",
```
`model`:设置要使用的模型名称。通常来说直接填写模型名称即可,但如果要使用原生接口不是 ChatCompletion 但以 ChatCompletion 接口格式接入的模型,请在模型名称前方加一个 `OneAPI/` 前缀以进行区分。
简单来说可以认为是:现阶段非 OpenAI 的模型接入都需要在模型名称前方加一个 `OneAPI/` 前缀。
例如:
1. 通过 OneAPI 等中转服务接入了 OpenAI 的 `gpt-4` 模型,由于 `gpt-4` 也是使用 ChatCompletion 接口格式进行请求,则可以直接填入 `gpt-4`;
2. 通过 OneAPI 等中转服务接入了 Google 的 `gemini-pro` 模型,由于 `gemini-pro` 原生接口格式并非 ChatCompletion,因此需要填入 `OneAPI/gemini-pro`。
具体支持的模型列表和各个模型对应的请求器和密钥组,请查看元数据板块 llm-models.json 。
## 情景预设(人格) prompt
```json
"prompt-mode": "normal",
"prompt": {
"default": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。"
}
```
`prompt-mode`:设置情景预设模式,值为`normal`(单预设模式)和`full-scenario`(完整历史对话模式)
`normal`时,使用下面的`prompt`,可设置多个
```json
"prompt": {
"default": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。",
"help": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。"
}
```
`normal` 模式也支持读取`data/prompts`目录下的文件内容作为单个 System Prompt,文件名即为`prompt`的名称。
在使用中通过`!default set <预设名>`指令将其设为默认(将<预设名>整体替换)
### full-scenario模式配置方法
把完整的历史对话以文件形式添加到`data/scenario/`目录下,参考`data/scenario/default.json`
```json
{
"prompt": [
{
"role": "system",
"content": "You are a helpful assistant. 如果我需要帮助,你要说“输入!help获得帮助”"
},
{
"role": "assistant",
"content": "好的,我是一个能干的AI助手。 如果你需要帮助,我会说“输入!help获得帮助”"
}
]
}
```
`role` 为消息的角色,可以是`user`(用户)、`assistant`(AI)、`system`(系统)
`content` 为字符串,表示消息内容。
在使用中通过`!default set <文件名>`指令将其设为默认(将<预设名>整体替换)
> 社区资源:[人格预设合集1000+(测试版,不确保可用性)](../deploy/README.md#人格预设合集)
# provider.json 配置项
:::info 目录
[[toc]]
:::
`data/config/provider.json` 中配置AI接口提供商相关的配置项。
## 启用聊天功能 enable-chat
```json
"enable-chat": true,
```
`enable-chat`:是否开启AI聊天功能
## 启用 AI 视觉功能 enable-vision
```json
"enable-vision": true,
```
`enable-vision`:是否开启AI视觉功能。需要使用的模型同时支持视觉功能,详情见元数据板块。
## 模型接口密钥 keys
```json
"keys": {
"openai": [
"sk-1234567890"
],
"anthropic": [
"sk-1234567890"
],
"moonshot": [
"sk-1234567890"
],
"deepseek": [
"sk-1234567890"
]
},
```
`keys`:设置密钥组,以字典的形式设置若干个密钥组,每个密钥组的键为密钥组名称,值为密钥列表。模型与密钥组的对应关系,请查看元数据板块。
目前支持的密钥组:
- `openai`:OpenAI 的密钥组,如果你没有OpenAI API Key,你可以[在此获取](https://ai.lazyshare.top/)
- `anthropic`:Anthropic 的密钥组
- `moonshot`:Moonshot(月之暗面 kimi)的密钥组
- `deepseek`:Deepseek(深度求索)的密钥组
## 大模型请求器 requester
```json
"requester": {
"openai-chat-completions": {
"base-url": "https://api.openai.com/v1",
"args": {},
"timeout": 120
},
"anthropic-messages": {
"base-url": "https://api.anthropic.com",
"args": {
"max_tokens": 1024
},
"timeout": 120
},
"moonshot-chat-completions": {
"base-url": "https://api.moonshot.cn/v1",
"args": {},
"timeout": 120
},
"deepseek-chat-completions": {
"base-url": "https://api.deepseek.com",
"args": {},
"timeout": 120
},
"ollama-chat": {
"base-url": "http://127.0.0.1:11434",
"args": {},
"timeout": 600
}
},
```
`requester`:设置请求器,以字典的形式设置若干个请求器,每个请求器的键为请求器名称,值为请求器配置。模型与请求器的对应关系,请查看元数据板块。实现请求器的方式,请查看插件编写教程。
目前支持的请求器有:
- `openai-chat-completions`:OpenAI 的 ChatCompletion 请求器
- `anthropic-messages`:Anthropic 请求器(Claude)
- `moonshot-chat-completions`:Moonshot 请求器(月之暗面)
- `deepseek-chat-completions`:Deepseek 请求器(深度求索)
- `ollama-chat`:Ollama 请求器,不需要密钥,直接请求目标地址的 Ollama 服务
`base-url`:设置接口地址。
`args`:请求时除了model之外的其他参数,以字典的形式设置。
`timeout`:设置请求超时时间,以秒为单位,对于耗时较长的模型,建议设置较大值
## 使用的模型 model
```json
"model": "gpt-3.5-turbo",
```
`model`:设置要使用的模型名称。通常来说直接填写模型名称即可,但如果要使用原生接口不是 ChatCompletion 但以 ChatCompletion 接口格式接入的模型,请在模型名称前方加一个 `OneAPI/` 前缀以进行区分。
简单来说可以认为是:现阶段非 OpenAI 的模型接入都需要在模型名称前方加一个 `OneAPI/` 前缀。
例如:
1. 通过 OneAPI 等中转服务接入了 OpenAI 的 `gpt-4` 模型,由于 `gpt-4` 也是使用 ChatCompletion 接口格式进行请求,则可以直接填入 `gpt-4`;
2. 通过 OneAPI 等中转服务接入了 Google 的 `gemini-pro` 模型,由于 `gemini-pro` 原生接口格式并非 ChatCompletion,因此需要填入 `OneAPI/gemini-pro`。
具体支持的模型列表和各个模型对应的请求器和密钥组,请查看元数据板块 llm-models.json 。
## 情景预设(人格) prompt
```json
"prompt-mode": "normal",
"prompt": {
"default": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。"
}
```
`prompt-mode`:设置情景预设模式,值为`normal`(单预设模式)和`full-scenario`(完整历史对话模式)
`normal`时,使用下面的`prompt`,可设置多个
```json
"prompt": {
"default": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。",
"help": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。"
}
```
`normal` 模式也支持读取`data/prompts`目录下的文件内容作为单个 System Prompt,文件名即为`prompt`的名称。
在使用中通过`!default set <预设名>`指令将其设为默认(将<预设名>整体替换)
### full-scenario模式配置方法
把完整的历史对话以文件形式添加到`data/scenario/`目录下,参考`data/scenario/default.json`
```json
{
"prompt": [
{
"role": "system",
"content": "You are a helpful assistant. 如果我需要帮助,你要说“输入!help获得帮助”"
},
{
"role": "assistant",
"content": "好的,我是一个能干的AI助手。 如果你需要帮助,我会说“输入!help获得帮助”"
}
]
}
```
`role` 为消息的角色,可以是`user`(用户)、`assistant`(AI)、`system`(系统)
`content` 为字符串,表示消息内容。
在使用中通过`!default set <文件名>`指令将其设为默认(将<预设名>整体替换)
> 社区资源:[人格预设合集1000+(测试版,不确保可用性)](../deploy/README.md#人格预设合集)
@@ -1,103 +1,91 @@
---
head:
- - meta
- name: keywords
content: system.json 配置文件
title: system.json 配置项
icon: config
order: 6
author: RockChinQ
date: 2024-02-18
category:
- 配置文件
---
:::info 目录
[[toc]]
:::
`data/config/system.json` 中配置系统设置,如管理员、网络代理、是否上报遥测数据供开发者分析、日志等级、会话消息处理并发数、流水线消息处理并发数、帮助消息等
## 管理员会话 admin-sessions
```json
"admin-sessions": [],
```
`admin-sessions`:设置管理员会话,格式为 {type}_{id},type 为 "group" 或 "person",如:
```json
"admin-sessions": ["group_123456789", "person_123456789"],
```
## 网络代理 network-proxies
```json
"network-proxies": {
"http": null,
"https": null
},
```
`network-proxies`:设置网络代理,为正向代理,http和https都要填,例如
```json
"network-proxies": {
"http": "http://127.0.0.1:7890",
"https": "http://127.0.0.1:7890"
},
```
正向代理也可以用环境变量设置:http_proxy 和 https_proxy
## 上报遥测数据 report-usage
```json
"report-usage": true,
```
`report-usage`:是否上报遥测数据供开发者分析,不包含敏感信息
## 日志等级 logging-level
```json
"logging-level": "info",
```
`logging-level`:暂时没用,现在只能通过环境变量 DEBUG=true 来设置调试日志输出
## 会话消息处理并发数 session-concurrency
```json
"session-concurrency": {
"default": 1
},
```
`session-concurrency`:会话消息处理并发数,粒度是每个会话,session格式为 {type}_{id},未指定的session使用 default 配置
## 流水线消息处理并发数 pipeline-concurrency
```json
"pipeline-concurrency": 20,
```
`pipeline-concurrency`:流水线消息处理并发数,粒度是整个程序,目前使用 FCFS 算法调度各个请求。
## 遥测服务器url qcg-center-url
QChatGPT 运行期间推送遥测数据的目标地址,默认为官方地址,若您自己部署了[qcg-center](https://github.com/RockChinQ/qcg-center),可以改为你的地址。
```json
"qcg-center-url": "https://api.qchatgpt.rockchin.top/api/v2"
```
## 帮助消息 help-message
```json
"help-message": "QChatGPT - 😎高稳定性、🧩支持插件、🦄多模态的 ChatGPT QQ 机器人🤖\n链接:https://q.rkcn.top"
```
`help-message`:帮助消息,用户发送 !help 命令时的输出
# system.json 配置项
:::info 目录
[[toc]]
:::
`data/config/system.json` 中配置系统设置,如管理员、网络代理、是否上报遥测数据供开发者分析、日志等级、会话消息处理并发数、流水线消息处理并发数、帮助消息等
## 管理员会话 admin-sessions
```json
"admin-sessions": [],
```
`admin-sessions`:设置管理员会话,格式为 {type}_{id},type 为 "group" 或 "person",如:
```json
"admin-sessions": ["group_123456789", "person_123456789"],
```
## 网络代理 network-proxies
```json
"network-proxies": {
"http": null,
"https": null
},
```
`network-proxies`:设置网络代理,为正向代理,http和https都要填,例如
```json
"network-proxies": {
"http": "http://127.0.0.1:7890",
"https": "http://127.0.0.1:7890"
},
```
正向代理也可以用环境变量设置:http_proxy 和 https_proxy
## 上报遥测数据 report-usage
```json
"report-usage": true,
```
`report-usage`:是否上报遥测数据供开发者分析,不包含敏感信息
## 日志等级 logging-level
```json
"logging-level": "info",
```
`logging-level`:暂时没用,现在只能通过环境变量 DEBUG=true 来设置调试日志输出
## 会话消息处理并发数 session-concurrency
```json
"session-concurrency": {
"default": 1
},
```
`session-concurrency`:会话消息处理并发数,粒度是每个会话,session格式为 {type}_{id},未指定的session使用 default 配置
## 流水线消息处理并发数 pipeline-concurrency
```json
"pipeline-concurrency": 20,
```
`pipeline-concurrency`:流水线消息处理并发数,粒度是整个程序,目前使用 FCFS 算法调度各个请求。
## 遥测服务器url qcg-center-url
QChatGPT 运行期间推送遥测数据的目标地址,默认为官方地址,若您自己部署了[qcg-center](https://github.com/RockChinQ/qcg-center),可以改为你的地址。
```json
"qcg-center-url": "https://api.qchatgpt.rockchin.top/api/v2"
```
## 帮助消息 help-message
```json
"help-message": "QChatGPT - 😎高稳定性、🧩支持插件、🦄多模态的 ChatGPT QQ 机器人🤖\n链接:https://q.rkcn.top"
```
`help-message`:帮助消息,用户发送 !help 命令时的输出
@@ -1,33 +1,21 @@
---
head:
- - meta
- name: keywords
content: adapter-qq-botpy.json 元数据
title: adapter-qq-botpy.json 元数据
icon: config
order: 3
author: RockChinQ
date: 2024-03-20
category:
- 配置文件
---
`data/metadata/adapter-qq-botpy.json`,QQ 官方 API 适配器元数据。官方 API 在使用群聊接口时,群id和成员id为字符串,而 QChatGPT 内部只支持整型 id,为使重启后仍然是相同的对应关系,因此需要保存到一个文件中。
## 格式
```json
{
"mapping": {
"groups": {
"15944D6D2B525C6E3536134D4669F067": 443241151434655
},
"members": {
"547A6244A731B4BEEBE5EE2AE4CD00A8": 232437565267568
}
}
}
```
- `groups`: 群id映射关系,key为字符串群id,value为整型群id。
- `members`: 成员id映射关系,key为字符串成员id,value为整型成员id。
# adapter-qq-botpy.json 元数据
`data/metadata/adapter-qq-botpy.json`,QQ 官方 API 适配器元数据。官方 API 在使用群聊接口时,群id和成员id为字符串,而 QChatGPT 内部只支持整型 id,为使重启后仍然是相同的对应关系,因此需要保存到一个文件中。
## 格式
```json
{
"mapping": {
"groups": {
"15944D6D2B525C6E3536134D4669F067": 443241151434655
},
"members": {
"547A6244A731B4BEEBE5EE2AE4CD00A8": 232437565267568
}
}
}
```
- `groups`: 群id映射关系,key为字符串群id,value为整型群id。
- `members`: 成员id映射关系,key为字符串成员id,value为整型成员id。
@@ -1,64 +1,51 @@
---
head:
- - meta
- name: keywords
content: llm-models.json 元数据
title: llm-models.json 元数据
icon: config
order: 2
author: RockChinQ
date: 2024-03-20
category:
- 配置文件
---
`data/metadata/llm-models.json`,受支持的大语言模型列表,本文件中指定了可用于 `data/config/provider.json` 中的 `model` 列表,指定每个模型对应的 `Key 管理器` 和 `API 请求器`。
## 格式
```json
{
"list": [
{
"name": "default",
"requester": "openai-chat-completions",
"token_mgr": "openai",
"tool_call_supported": false,
"vision_supported": false
},
{
"name": "gpt-3.5-turbo",
"tool_call_supported": true
},
{
"name": "gpt-4o",
"tool_call_supported": true,
"vision_supported": true
}
]
}
```
模型均列于`list`数组中,每个模型的字段如下:
- `name`: 模型名称,用于在 `data/config/provider.json` 中的 `model` 列表中指定。
- `model_name`: 进行请求时使用的模型名称,用于区分使用不同请求器的相同模型,若未设置则使用 `name` 字段。
- `requester`: 请求器名称,指定使用哪个请求器请求该模型的响应,不同的请求器对应不同的 API,当前支持的模型,可以在 `data/config/provider.json` 中的 `requester` 列表中找到。
- `token_mgr`: Key 管理器,此模型使用的 key 组,对应 `data/config/provider.json` 中的 `keys` 列表。
- `tool_call_supported`: 是否支持工具调用,标记此模型是否支持使用`内容函数`。
- `vision_supported`: 是否支持图像输入,标记此模型是否支持使用`图像输入`。
`default` 模型是必须的,这是模型的默认配置,其他模型可以不设置所有的字段,只需设置 `name` 字段即可,其他字段会继承 `default` 模型的配置。
## 自动更新机制
每次启动时,程序会自动从中央服务器获取最新的模型列表,已有的的模型名称会被下载的新配置覆盖。
## 自定义模型
根据上述格式添加即可。
- 如果需要使用目前不支持的接口(请求器),需要自己扩展请求器,请参考插件开发文档 -> 组件扩展。
- key 组可以自己在 `data/config/provider.json` 中的 `keys` 列表中添加。
- 不建议修改默认的模型配置,因为启动时会被自动更新的信息覆盖。
# llm-models.json 元数据
`data/metadata/llm-models.json`,受支持的大语言模型列表,本文件中指定了可用于 `data/config/provider.json` 中的 `model` 列表,指定每个模型对应的 `Key 管理器` 和 `API 请求器`。
## 格式
```json
{
"list": [
{
"name": "default",
"requester": "openai-chat-completions",
"token_mgr": "openai",
"tool_call_supported": false,
"vision_supported": false
},
{
"name": "gpt-3.5-turbo",
"tool_call_supported": true
},
{
"name": "gpt-4o",
"tool_call_supported": true,
"vision_supported": true
}
]
}
```
模型均列于`list`数组中,每个模型的字段如下:
- `name`: 模型名称,用于在 `data/config/provider.json` 中的 `model` 列表中指定。
- `model_name`: 进行请求时使用的模型名称,用于区分使用不同请求器的相同模型,若未设置则使用 `name` 字段。
- `requester`: 请求器名称,指定使用哪个请求器请求该模型的响应,不同的请求器对应不同的 API,当前支持的模型,可以在 `data/config/provider.json` 中的 `requester` 列表中找到。
- `token_mgr`: Key 管理器,此模型使用的 key 组,对应 `data/config/provider.json` 中的 `keys` 列表。
- `tool_call_supported`: 是否支持工具调用,标记此模型是否支持使用`内容函数`。
- `vision_supported`: 是否支持图像输入,标记此模型是否支持使用`图像输入`。
`default` 模型是必须的,这是模型的默认配置,其他模型可以不设置所有的字段,只需设置 `name` 字段即可,其他字段会继承 `default` 模型的配置。
## 自动更新机制
每次启动时,程序会自动从中央服务器获取最新的模型列表,已有的的模型名称会被下载的新配置覆盖。
## 自定义模型
根据上述格式添加即可。
- 如果需要使用目前不支持的接口(请求器),需要自己扩展请求器,请参考插件开发文档 -> 组件扩展。
- key 组可以自己在 `data/config/provider.json` 中的 `keys` 列表中添加。
- 不建议修改默认的模型配置,因为启动时会被自动更新的信息覆盖。
+3
View File
@@ -0,0 +1,3 @@
# sensitive-words.json 元数据
本地敏感词词库,参考 `data/metadata/sensitive-words.json` 内容进行修改即可。
@@ -1,48 +1,38 @@
---
head:
- - meta
- name: keywords
content: ChatGPT QQ机器人教程,QChatGPT项目部署教程
title: 部署教程
icon: blog
author: Lazy
date: 2024-02-18
index: false
---
## 部署教程
请按照以下步骤部署 QChatGPT 项目:
- 第一步: [部署QChatGPT](qchatgpt/)
- 第二步: [部署消息平台](platforms/)
- 第三步: [填写配置信息](config.md)
完成以上三个步骤后,你接下来应该仔细阅读左栏中的[配置详解](../config/README.md)和[元数据配置](../metadata/README.md),实现更多样化的配置需求
## 社区资源
### 视频教程
[【8月最新】5min部署 最强AI语音聊天+酒馆角色扮演+QQ机器人,全新角色扮演语音聊天QQ机器人](https://www.bilibili.com/video/BV1vypZeBEW1/?share_source=copy_web&vd_source=1335a044d4fd926920999a0e3ba0a731)
## 本项目交流 QQ 群
### 社区群
> 遇到问题请先认真阅读文档,如无法解决再加群提问
Lazy的交流群一:891448839(已满)
Lazy的交流群二:738382634(已满)
Lazy的交流群三:248432104(已满)
Lazy的交流群四:619154800 ([链接](https://qm.qq.com/q/1K9GjQuza))
### 官方群
> 官方群不解答部署问题
四群:195992197 [链接](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=cSekvWmyezfCE4O8gXS7lSjkmPinjzpP&authKey=G4jHfz2%2BtQawxCRhn1ZRrQiI8bTvlepQubZL6F9fymFuz8jqZZ4FkYh6lhKLMCd9&noverify=0&group_code=195992197)
# 部署教程
## 部署教程
请按照以下步骤部署 QChatGPT 项目:
- 第一步: [部署QChatGPT](qchatgpt/)
- 第二步: [部署消息平台](platforms/)
- 第三步: [填写配置信息](config.md)
完成以上三个步骤后,你接下来应该仔细阅读左栏中的[配置详解](../config/README.md)和[元数据配置](../metadata/README.md),实现更多样化的配置需求
## 社区资源
### 视频教程
[【8月最新】5min部署 最强AI语音聊天+酒馆角色扮演+QQ机器人,全新角色扮演语音聊天QQ机器人](https://www.bilibili.com/video/BV1vypZeBEW1/?share_source=copy_web&vd_source=1335a044d4fd926920999a0e3ba0a731)
## 本项目交流 QQ 群
### 社区群
> 遇到问题请先认真阅读文档,如无法解决再加群提问
Lazy的交流群一:891448839(已满)
Lazy的交流群二:738382634(已满)
Lazy的交流群三:248432104(已满)
Lazy的交流群四:619154800 ([链接](https://qm.qq.com/q/1K9GjQuza))
### 官方群
> 官方群不解答部署问题
四群:195992197 [链接](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=cSekvWmyezfCE4O8gXS7lSjkmPinjzpP&authKey=G4jHfz2%2BtQawxCRhn1ZRrQiI8bTvlepQubZL6F9fymFuz8jqZZ4FkYh6lhKLMCd9&noverify=0&group_code=195992197)
@@ -1,14 +1,4 @@
---
head:
- - meta
- name: keywords
content: Lagrange的部署教程
title: aiocqhttp适配器系列教程
icon: mobile
order: 4
author: RockChinQ,ikun0014
date: 2024-05-05
---
# aiocqhttp适配器系列教程
## OneBot 11 协议
@@ -30,7 +20,7 @@ OneBot 是用于接入多种消息平台的标准化协议,详细介绍:[htt
当前可用的OneBot 11标准消息平台,你可以选择下方任意
- [Lagrange.OneBot的教程](lagrange.md)
- [LiteLoaderQQNT的教程](llonebot.md)
- [NapCat的教程](napcat.md)
- [shamrock的教程](shamrock.md)
- [Lagrange.OneBot的教程](./lagrange)
- [NapCat的教程](./napcat)
- [LiteLoaderQQNT的教程](./llonebot)
- [shamrock的教程](./shamrock)
@@ -1,69 +1,59 @@
---
head:
- - meta
- name: keywords
content: Lagrange的部署教程
title: 部署消息平台Lagrange的教程
icon: support
order: 1
author: RockChinQ,ikun0014
date: 2024-05-05
---
## Lagrange介绍
Lagrange 是一个 QQNT 协议逆向工程框架,比 Shamrock 或 Mirai 更加轻便,在目前也较为稳定。通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器,填写配置时可参考 Shamrock 的方式。
可选平台(需要.NET 8 or 7支持):
- Mac OS 也可使用
- Linux Ubuntu 22.04,Debian 12应该都可以
- Windows 10,11,Server2019及以上
> 注意:
> 要使用NT QQ发信息,旧版QQ无法正常使用
## 部署步骤
以下仅提供 Windows 上的大致步骤,详细步骤或其他平台请参考 [Lagrange官方文档](https://lagrangedev.github.io/Lagrange.Doc/Lagrange.OneBot/)
### 环境配置
安装.NET 8运行时,[点击直达微软官网下载](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-8.0.4-windows-x64-installer)
### 从Github Actions下载最新的build
需要登录Github后才能下载,如果你不需要部分特性,可以在Release下载,看图片3
[Github Actions](https://github.com/KonataDev/Lagrange.Core/actions)
看图进行下载:
![图片1](/assets/image/dl_lgr_1.png)
![图片2](/assets/image/dl_lgr_2.png)
![图片3](/assets/image/dl_lgr_3.png)
### 尾声
解压你所下载的zip,打开到有Lagrange.OneBot.exe的目录,在此目录下打开cmd命令提示符,输入
```bash
.\Lagrange.OneBot
```
运行一次,如果输出了一个二维码,即可直接用机器人号扫码登录(若二维码显示不清楚,可以到lagrange的data目录下寻找图片文件)。
若无法登录,请检查是否正常填写了lagrange配置文件appsettings.json中的签名地址 SignServerUrl ,签名地址请到lagrange文档中寻找。
## 修改配置
需要配置 Lagrange 以让其连接上 QChatGPT,请编辑 Lagrange 的配置文件 appsettings.json,确保 Implementations 中的连接配置符合下图内容:
![配置连接](/assets/image/config_lgr.png)
其中 Type 必须为 `ReverseWebSocket`;
Host 为 QChatGPT 运行的主机 IP,若在同一主机上,可以写 `127.0.0.1`;
Suffix 必须为 `/ws`
# 部署消息平台Lagrange的教程
## Lagrange介绍
Lagrange 是一个 QQNT 协议逆向工程框架,比 Shamrock 或 Mirai 更加轻便,在目前也较为稳定。通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器,填写配置时可参考 Shamrock 的方式。
可选平台(需要.NET 8 or 7支持):
- Mac OS 也可使用
- Linux Ubuntu 22.04,Debian 12应该都可以
- Windows 10,11,Server2019及以上
> 注意:
> 要使用NT QQ发信息,旧版QQ无法正常使用
## 部署步骤
以下仅提供 Windows 上的大致步骤,详细步骤或其他平台请参考 [Lagrange官方文档](https://lagrangedev.github.io/Lagrange.Doc/Lagrange.OneBot/)
### 环境配置
安装.NET 8运行时,[点击直达微软官网下载](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-8.0.4-windows-x64-installer)
### 从Github Actions下载最新的build
需要登录Github后才能下载,如果你不需要部分特性,可以在Release下载,看图片3
[Github Actions](https://github.com/KonataDev/Lagrange.Core/actions)
看图进行下载:
![图片1](/assets/image/dl_lgr_1.png)
![图片2](/assets/image/dl_lgr_2.png)
![图片3](/assets/image/dl_lgr_3.png)
### 尾声
解压你所下载的zip,打开到有Lagrange.OneBot.exe的目录,在此目录下打开cmd命令提示符,输入
```bash
.\Lagrange.OneBot
```
运行一次,如果输出了一个二维码,即可直接用机器人号扫码登录(若二维码显示不清楚,可以到lagrange的data目录下寻找图片文件)。
若无法登录,请检查是否正常填写了lagrange配置文件appsettings.json中的签名地址 SignServerUrl ,签名地址请到lagrange文档中寻找。
## 修改配置
需要配置 Lagrange 以让其连接上 QChatGPT,请编辑 Lagrange 的配置文件 appsettings.json,确保 Implementations 中的连接配置符合下图内容:
![配置连接](/assets/image/config_lgr.png)
其中 Type 必须为 `ReverseWebSocket`;
Host 为 QChatGPT 运行的主机 IP,若在同一主机上,可以写 `127.0.0.1`;
Suffix 必须为 `/ws`
@@ -1,19 +1,9 @@
---
head:
- - meta
- name: keywords
content: 其他消息平台
title: 部署消息平台LiteLoaderQQNT的教程
icon: more
order: 2
author: RockChinQ
date: 2024-03-02
---
# LiteLoaderQQNT
- [LiteLoaderQQNT 的 OneBot API 插件](https://github.com/LLOneBot/LLOneBot) 注入 QQ 客户端并将其转换为 OneBot 11 协议
安装LiteLoaderQQNT的教程:https://llonebot.github.io/zh-CN/guide/getting-started
![image-20240515185909108](/assets/image/llob_cfg.png)
# 部署消息平台LiteLoaderQQNT的教程
# LiteLoaderQQNT
- [LiteLoaderQQNT 的 OneBot API 插件](https://github.com/LLOneBot/LLOneBot) 注入 QQ 客户端并将其转换为 OneBot 11 协议
安装LiteLoaderQQNT的教程:https://llonebot.github.io/zh-CN/guide/getting-started
![image-20240515185909108](/assets/image/llob_cfg.png)
@@ -1,14 +1,4 @@
---
head:
- - meta
- name: keywords
content: NapCat的部署教程
title: 部署消息平台NapCat的教程
icon: software
order: 3
author: Lazy
date: 2024-05-13
---
# 部署消息平台NapCat的教程
::: tip
@@ -1,84 +1,74 @@
---
head:
- - meta
- name: keywords
content: OpenShamrock的部署教程
title: 部署消息平台shamrock的教程
icon: mobile
order: 4
author: ikun
date: 2023-12-21
---
> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[OpenShamrock官方文档](https://whitechi73.github.io/OpenShamrock/)。
::: tip
项目归档,不建议继续使用
:::
## OpenShamrock简介
Mirai、go-cqhttp 之类的是模拟 QQ 的协议进行通信,而 Shamrock 使用的是 安卓的 Hook 来操作 QQ 模拟点击,稳定性较高。
可选平台(or设备):
- 模拟器
- Linux服务器
- PVE
- 云手机
- 实体手机
## 步骤(模拟器)
### 环境配置
**注:建议使用[mumu模拟器](https://mumu.163.com/)**
参考[此文档](https://forum.libfekit.so/d/60-mumu12mo-ni-qi-an-zhuang-magiskhe-lsposed)安装Magisk和LSPosed
记得打开mumu模拟器的可写系统盘和root权限
![](/assets/image/sham_env_1.png)
![image-20240119154032682](/assets/image/sham_env_2.png)
### 安装OpenShamrock
从[OpenShamrock的Actions](https://github.com/whitechi73/OpenShamrock/actions)下载最新的OpenShamrock安装包,注意下载带有`all`字样的版本,如`Shamrock-v1.0.7.r253.81be383-all.zip`,解压,在mumu模拟器安装
#### 配置Shamrock
1. 在 Shamrock 的设置页面修改设置如图:
启用被动 Websocket,并填写 QChatGPT 的 aiocqhttp 适配器监听的地址和端口(详见填写配置信息页)。
![img](/assets/image/sham_cfg_1.png)
![img](/assets/image/sham_cfg_2.png)
填写的被动 Websocket 地址为 QChatGPT 的 aiocqhttp 适配器监听的地址和端口,且路径必须为 `/ws`,例如 `ws://127.0.0.1:8080/ws`,详见填写配置信息页。
2. 并前往 LSPosed 的模块管理页面 启用模块 Shamrock
![image-20240119154110877](/assets/image/sham_cfg_3.png)
### 安装QQ
参考[此页面](https://whitechi73.github.io/OpenShamrock/guide/faq.html#%E6%94%AF%E6%8C%81%E7%9A%84qq%E7%89%88%E6%9C%AC)给出的支持的QQ版本,选择最新即可
在[这里](https://qq.cn.uptodown.com/android/versions)选择对应的版本下载,在mumu模拟器安装即可
### 登录机器人QQ
1. 打开QQ,登录机器人QQ,关闭QQ,重启模拟器。
2. 启动 LSPosed,Shamrock 将会自动运行,启动 QQ。
3. 打开 Shamrock 页面,此时应显示 `已激活` 并可以查看到账号信息和相关消息日志。
### 后续步骤
查看填写配置信息页,通过 aiocqhttp 适配器接入。
# 部署消息平台shamrock的教程
> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[OpenShamrock官方文档](https://whitechi73.github.io/OpenShamrock/)。
::: tip
项目归档,不建议继续使用
:::
## OpenShamrock简介
Mirai、go-cqhttp 之类的是模拟 QQ 的协议进行通信,而 Shamrock 使用的是 安卓的 Hook 来操作 QQ 模拟点击,稳定性较高。
可选平台(or设备):
- 模拟器
- Linux服务器
- PVE
- 云手机
- 实体手机
## 步骤(模拟器)
### 环境配置
**注:建议使用[mumu模拟器](https://mumu.163.com/)**
参考[此文档](https://forum.libfekit.so/d/60-mumu12mo-ni-qi-an-zhuang-magiskhe-lsposed)安装Magisk和LSPosed
记得打开mumu模拟器的可写系统盘和root权限
![](/assets/image/sham_env_1.png)
![image-20240119154032682](/assets/image/sham_env_2.png)
### 安装OpenShamrock
从[OpenShamrock的Actions](https://github.com/whitechi73/OpenShamrock/actions)下载最新的OpenShamrock安装包,注意下载带有`all`字样的版本,如`Shamrock-v1.0.7.r253.81be383-all.zip`,解压,在mumu模拟器安装
#### 配置Shamrock
1. 在 Shamrock 的设置页面修改设置如图:
启用被动 Websocket,并填写 QChatGPT 的 aiocqhttp 适配器监听的地址和端口(详见填写配置信息页)。
![img](/assets/image/sham_cfg_1.png)
![img](/assets/image/sham_cfg_2.png)
填写的被动 Websocket 地址为 QChatGPT 的 aiocqhttp 适配器监听的地址和端口,且路径必须为 `/ws`,例如 `ws://127.0.0.1:8080/ws`,详见填写配置信息页。
2. 并前往 LSPosed 的模块管理页面 启用模块 Shamrock
![image-20240119154110877](/assets/image/sham_cfg_3.png)
### 安装QQ
参考[此页面](https://whitechi73.github.io/OpenShamrock/guide/faq.html#%E6%94%AF%E6%8C%81%E7%9A%84qq%E7%89%88%E6%9C%AC)给出的支持的QQ版本,选择最新即可
在[这里](https://qq.cn.uptodown.com/android/versions)选择对应的版本下载,在mumu模拟器安装即可
### 登录机器人QQ
1. 打开QQ,登录机器人QQ,关闭QQ,重启模拟器。
2. 启动 LSPosed,Shamrock 将会自动运行,启动 QQ。
3. 打开 Shamrock 页面,此时应显示 `已激活` 并可以查看到账号信息和相关消息日志。
### 后续步骤
查看填写配置信息页,通过 aiocqhttp 适配器接入。
![img](https://cos.thelazy.cn/pictures/202405292250017.jpeg)
@@ -1,158 +1,151 @@
---
head:
- - meta
- name: keywords
content: Go-cqhttp的部署教程
title: 部署消息平台go-cqhttp的教程
icon: state
order: 3
author: ikun0014
date: 2024-08-18
category:
- 部署教程
---
> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[go-cqhttp官方文档](https://docs.go-cqhttp.org/)。
::: warning
gocq未归档,但原开发者表示:[https://github.com/Mrs4s/go-cqhttp/issues/2471](https://github.com/Mrs4s/go-cqhttp/issues/2471)
:::
## 下载go-cqhttp
从[go-cqhttp的Release](https://github.com/Mrs4s/go-cqhttp/releases/latest)下载最新的go-cqhttp可执行文件(建议直接下载可执行文件压缩包,而不是安装器)
![下载gocq](/assets/image/dl_gocq.png)
## 运行并配置go-cqhttp
解压并运行,首次运行会询问需要开放的网络协议,**请填入`2`并回车,必须输入`2`❗❗❗❗❗❗❗**
```
C:\Softwares\go-cqhttp.old> .\go-cqhttp.exe
未找到配置文件,正在为您生成配置文件中!
请选择你需要的通信方式:
> 0: HTTP通信
> 1: 云函数服务
> 2: 正向 Websocket 通信
> 3: 反向 Websocket 通信
请输入你需要的编号(0-9),可输入多个,同一编号也可输入多个(如: 233)
您的选择是:2
```
提示已生成`config.yml`文件,关闭go-cqhttp。
打开go-cqhttp同目录的`config.yml`
1. 编辑账号登录信息
只需要修改下方`uin`和`password`为你要登录的机器人账号的QQ号和密码即可。
```yaml
account: # 账号相关
uin: 1233456 # QQ账号
password: '' # 密码为空时使用扫码登录
encrypt: false # 是否开启密码加密
status: 0 # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
relogin: # 重连设置
delay: 3 # 首次重连延迟, 单位秒
interval: 3 # 重连间隔
max-times: 0 # 最大重连次数, 0为无限制
```
2. 配置签名服务器
按照如下填写,
```yaml
sign-servers:
- url: 'https://qsign.trpgbot.com/' # 主签名服务器地址, 必填
key: 'selfshare'
authorization: '-'
- url: 'https://qsign-v3.trpgbot.com/' # 次要服务器地址,选填
key: 'selfshare'
authorization: '-'
auto-register: true
```
写入文件/data/versions/6.json,
```json
{
"apk_id": "com.tencent.mobileqq",
"app_id": 537220362,
"sub_app_id": 537220362,
"app_key": "0S200MNJT807V3GE",
"sort_version_name": "9.0.56.16830",
"build_time": 1713424357,
"apk_sign": "a6b745bf24a2c277527716f6f36eb68d",
"sdk_version": "6.0.0.2560",
"sso_version": 21,
"misc_bitmap": 150470524,
"main_sig_map": 34869472,
"sub_sig_map": 66560,
"dump_time": 1713424357,
"qua": "V1_AND_SQ_9.0.56_6372_YYB_D",
"protocol_type": 6
}
```
感谢zhaodice大佬带来的QQ 9.0.56签名服务器
3.修改反向Websocket连接地址
```yaml
- ws-reverse:
# 反向WS Universal 地址
# 注意 设置了此项地址后下面两项将会被忽略
universal: ws://localhost:8080/ws
```
如果端口不同请自行修改
4. 若您的服务器位于公网,强烈建议您填写`access-token` (可选)
```yaml
# 默认中间件锚点
default-middlewares: &default
# 访问密钥, 强烈推荐在公网的服务器设置
access-token: ''
```
5. 配置完成,重新启动go-cqhttp
## 登录
双击登录脚本,一段时间后,可以看到提示
![登录gocq](/assets/image/first_launch.png)
把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具
点开 `Network`
![过验证码](/assets/image/get_captcha.png)
在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面
![获取token](/assets/image/get_gocq_login_token.png)
ticket 后那一坨就是要输入回 mirai 的内容,但不包括首尾的双引号
**注意**
- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容
- 速度要快
- 注意不要漏字符(没复制完, 后面还有很长)
把复制下来的东西,粘贴到运行go-cq的终端中
![粘贴token](/assets/image/paste_token.png)
> 若启动后登录不成功,请尝试根据[此文档](https://docs.go-cqhttp.org/guide/config.html#%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF)修改`device.json`的协议编号。
## 后续步骤
查看填写配置信息页,通过 aiocqhttp 适配器接入。
# 部署消息平台go-cqhttp的教程
> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[go-cqhttp官方文档](https://docs.go-cqhttp.org/)。
::: warning
gocq未归档,但原开发者表示:[https://github.com/Mrs4s/go-cqhttp/issues/2471](https://github.com/Mrs4s/go-cqhttp/issues/2471)
:::
## 下载go-cqhttp
从[go-cqhttp的Release](https://github.com/Mrs4s/go-cqhttp/releases/latest)下载最新的go-cqhttp可执行文件(建议直接下载可执行文件压缩包,而不是安装器)
![下载gocq](/assets/image/dl_gocq.png)
## 运行并配置go-cqhttp
解压并运行,首次运行会询问需要开放的网络协议,**请填入`02`并回车,必须输入`02`❗❗❗❗❗❗❗**
```
C:\Softwares\go-cqhttp.old> .\go-cqhttp.exe
未找到配置文件,正在为您生成配置文件中!
请选择你需要的通信方式:
> 0: HTTP通信
> 1: 云函数服务
> 2: 正向 Websocket 通信
> 3: 反向 Websocket 通信
请输入你需要的编号(0-9),可输入多个,同一编号也可输入多个(如: 233)
您的选择是:02
```
提示已生成`config.yml`文件,关闭go-cqhttp。
打开go-cqhttp同目录的`config.yml`
1. 编辑账号登录信息
只需要修改下方`uin`和`password`为你要登录的机器人账号的QQ号和密码即可。
```yaml
account: # 账号相关
uin: 1233456 # QQ账号
password: '' # 密码为空时使用扫码登录
encrypt: false # 是否开启密码加密
status: 0 # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
relogin: # 重连设置
delay: 3 # 首次重连延迟, 单位秒
interval: 3 # 重连间隔
max-times: 0 # 最大重连次数, 0为无限制
```
2. 修改websocket端口
在`config.yml`下方找到以下内容
```yaml
- ws:
# 正向WS服务器监听地址
address: 0.0.0.0:8080
middlewares:
<<: *default # 引用默认中间件
```
**将`0.0.0.0:8080`改为`0.0.0.0:6700`**,保存并关闭`config.yml`。
3. 配置签名服务器
按照如下填写,
```yam
sign-servers:
- url: 'https://qsign.trpgbot.com/' # 主签名服务器地址, 必填
key: 'selfshare'
authorization: '-'
- url: 'https://qsign-v3.trpgbot.com/' # 次要服务器地址,选填
key: 'selfshare'
authorization: '-'
auto-register: true
```
写入文件/data/versions/6.json,
```json
{
"apk_id": "com.tencent.mobileqq",
"app_id": 537220362,
"sub_app_id": 537220362,
"app_key": "0S200MNJT807V3GE",
"sort_version_name": "9.0.56.16830",
"build_time": 1713424357,
"apk_sign": "a6b745bf24a2c277527716f6f36eb68d",
"sdk_version": "6.0.0.2560",
"sso_version": 21,
"misc_bitmap": 150470524,
"main_sig_map": 34869472,
"sub_sig_map": 66560,
"dump_time": 1713424357,
"qua": "V1_AND_SQ_9.0.56_6372_YYB_D",
"protocol_type": 6
}
```
感谢zhaodice大佬带来的QQ 9.0.56签名服务器
4. 若您的服务器位于公网,强烈建议您填写`access-token` (可选)
```yaml
# 默认中间件锚点
default-middlewares: &default
# 访问密钥, 强烈推荐在公网的服务器设置
access-token: ''
```
5. 配置完成,重新启动go-cqhttp
## 登录
双击登录脚本,一段时间后,可以看到提示
![登录gocq](/assets/image/first_launch.png)
把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具
点开 `Network`
![过验证码](/assets/image/get_captcha.png)
在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面
![获取token](/assets/image/get_gocq_login_token.png)
ticket 后那一坨就是要输入回 mirai 的内容,但不包括首尾的双引号
**注意**
- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容
- 速度要快
- 注意不要漏字符(没复制完, 后面还有很长)
把复制下来的东西,粘贴到运行go-cq的终端中
![粘贴token](/assets/image/paste_token.png)
> 若启动后登录不成功,请尝试根据[此文档](https://docs.go-cqhttp.org/guide/config.html#%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF)修改`device.json`的协议编号。
## 后续步骤
查看填写配置信息页,通过 Nakuru 适配器接入。
@@ -1,14 +1,4 @@
---
head:
- - meta
- name: keywords
content: ChatGPT QQ机器人教程,QChatGPT项目部署教程
title: 消息平台部署教程
icon: merge
author: Lazy
date: 2023-02-17
index: false
---
# 消息平台部署教程
:::info 目录
[[toc]]
@@ -29,5 +19,4 @@ QChatGPT 需要一个中间程序,处理 QQ 等 IM 的协议(大部分是逆
以前流行的框架,现在长期不再维护或被腾讯严重围追堵截,不推荐使用:
- Mirai(QQ):[Mirai部署教程](mirai.md) (使用旧版协议,风控严重)
- go-cqhttp(QQ):[go-cqhttp部署教程(For nakuru)](nakuru.md)(使用旧版协议,[原开发者停止维护](https://github.com/Mrs4s/go-cqhttp?tab=readme-ov-file#%E9%87%8D%E8%A6%81%E4%BF%A1%E6%81%AF))
- go-cqhttp(QQ):[go-cqhttp部署教程(For nakuru)](nakuru.md)(使用旧版协议,[原开发者停止维护](https://github.com/Mrs4s/go-cqhttp?tab=readme-ov-file#%E9%87%8D%E8%A6%81%E4%BF%A1%E6%81%AF))
@@ -1,16 +1,4 @@
---
head:
- - meta
- name: keywords
content: Yiri-mirai的部署教程
title: 部署消息平台mirai的教程
icon: warn
order: 3
author: Lazy
date: 2023-12-18
category:
- 部署教程
---
# 部署消息平台mirai的教程
> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[Mirai官方代码库](https://github.com/mamoe/mirai)、[Mirai官方论坛](https://mirai.mamoe.net/)
@@ -1,26 +1,14 @@
---
head:
- - meta
- name: keywords
content: QQ 官方机器人 API 使用教程
title: 使用 QQ 官方机器人 API 的教程
icon: support
order: 5
author: RockChinQ
date: 2024-02-17
category:
- 部署教程
---
QQ 官方 API 可以将机器人接入 QQ 频道 和 QQ 群。
QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。
(之前个人创建的机器人是没有此群聊权限的,只要重新申请创建一个即可)
## 注册 QQ 机器人
前往[QQ开放平台](https://q.qq.com/#/),找到下方的 QQ 机器人文档,按照指引注册 QQ 频道机器人。
## 获取凭证
# 使用 QQ 官方机器人 API 的教程
QQ 官方 API 可以将机器人接入 QQ 频道 和 QQ 群。
QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。
(之前个人创建的机器人是没有此群聊权限的,只要重新申请创建一个即可)
## 注册 QQ 机器人
前往[QQ开放平台](https://q.qq.com/#/),找到下方的 QQ 机器人文档,按照指引注册 QQ 频道机器人。
## 获取凭证
注册完成后,前往机器人控制台,找到 开发设置,获取 `AppId(机器人ID)` 和 `AppSecret(机器人密钥)`,接下来进入填写配置信息步骤。
@@ -1,15 +1,4 @@
---
head:
- - meta
- name: keywords
content: ChatGPT QQ机器人教程,QChatGPT项目部署教程
title: Docker部署(仅推荐在Linux上使用)
icon: stack
order: 4
author: Lazy,ikun
date: 2023-10-28
---
# Docker部署(仅推荐在Linux上使用)
:::info 目录
[[toc]]
@@ -56,6 +45,4 @@ docker compose up
## 注意
- 安装的插件都会保存在`plugins`(映射到本目录`plugins`),安装插件时可能会自动安装相应的依赖,此时若`重新创建`容器,已安装的插件将被加载,但所需的增量依赖并未安装,会导致引入问题。您可以删除插件目录后重启,再次安装插件,以便程序可以自动安装插件所需依赖。
- 安装的插件都会保存在`plugins`(映射到本目录`plugins`),安装插件时可能会自动安装相应的依赖,此时若`重新创建`容器,已安装的插件将被加载,但所需的增量依赖并未安装,会导致引入问题。您可以删除插件目录后重启,再次安装插件,以便程序可以自动安装插件所需依赖。
@@ -1,24 +1,15 @@
---
head:
- - meta
- name: keywords
content: ChatGPT QQ机器人教程,QChatGPT项目部署教程
title: QChatGPT部署教程
icon: flow
author: Lazy
date: 2023-02-17
index: false
---
:::info 目录
[[toc]]
:::
选择一种部署 QChatGPT 的方式。
## 手动部署
- [<HopeIcon icon="support" size="1.2em"/> 点击查看手动部署的具体操作](manual.md)
## Docker部署
- [<HopeIcon icon="support" size="1.2em"/> 点击查看Docker部署的具体操作](docker.md)
# QChatGPT部署教程
:::info 目录
[[toc]]
:::
选择一种部署 QChatGPT 的方式。
## 手动部署
- [<HopeIcon icon="support" size="1.2em"/> 点击查看手动部署的具体操作](manual.md)
## Docker部署
- [<HopeIcon icon="support" size="1.2em"/> 点击查看Docker部署的具体操作](docker.md)
@@ -1,14 +1,5 @@
---
head:
- - meta
- name: keywords
content: ChatGPT QQ机器人教程,QChatGPT项目部署教程
title: 手动部署(推荐,可以在所有平台上使用)
icon: support
order: 3
author: Lazy
date: 2023-02-17
---
# 手动部署(推荐,可以在所有平台上使用)
:::warning
请使用Python 3.10.1(不包含3.10.0)及以上版本,推荐3.10.9版本,没有Python的需自行安装,参考[此教程](./more-details/python.md)
:::
@@ -77,4 +68,4 @@ python3 main.py
当你部署消息平台和填写配置文件后,再次运行
```bash
python3 main.py
```
```
@@ -1,14 +1,4 @@
---
head:
- - meta
- name: keywords
content: Python的安装教程
title: Python的安装教程(QChatGPT)
icon: support
order: 3
author: Lazy
date: 2023-12-18
---
# Python的安装教程(QChatGPT)
## 第一步:安装Python
@@ -30,4 +20,4 @@ date: 2023-12-18
![image-20231219222916951](/assets/image/python_3.png)
提示如图时,表明安装成功了
提示如图时,表明安装成功了
@@ -1,13 +1,4 @@
---
head:
- - meta
- name: keywords
content: ChatGPT QQ机器人教程,QChatGPT项目部署教程
title: 填写配置信息
icon: class
author: Lazy
date: 2024-02-18
---
# 填写配置信息
修改以下配置文件即可启用 QChatGPT 的基本功能,当你阅读完此页面后,建议查看[配置详解](../config/),以了解更多的配置项详解
@@ -183,5 +174,4 @@ date: 2024-02-18
阅读并完成以上教程后,你应该可以成功使用QChatGPT了,如果不能请再次阅读(你或许漏做或错做某些步骤),如果完全阅读并充分理解本文档后仍然确实无法使用,你可以在[这里](./README.md)找到交流群
:::
:::
@@ -1,38 +1,25 @@
---
head:
- - meta
- name: keywords
content: QChatGPT API 参考
title: API 参考
icon: code
order: 5
author: RockChinQ
date: 2024-03-22
category:
- 插件介绍
index: false
---
以下 API 仅针对 事件插件 可用,组件扩展形式请自行阅读源码。
## 消息处理
### 回复消息
ctx.reply(message_chain: mirai.MessageChain)
回复此次事件的发起会话。
- `message_chain`:[YiriMirai 的 MessageChain 对象](https://yiri-mirai.wybxc.cc/docs/basic/message-chain),若用户使用的不是 YiriMirai 适配器,程序也能自动转换为目标消息链
### 发送主动消息
> 由于 QQ 官方 API 对主动消息的支持性很差,故若用户使用的是 QQ 官方 API,发送主动消息可能会失败
ctx.send_message(target_type: str, target_id: str, message_chain: mirai.MessageChain)
发送主动消息给目标。
- `target_type`:目标类型,可选值:`"person"`、`"group"`
- `target_id`:目标 ID(QQ 号或群号)
- `message_chain`:[YiriMirai 的 MessageChain 对象](https://yiri-mirai.wybxc.cc/docs/basic/message-chain),若用户使用的不是 YiriMirai 适配器,程序也能自动转换为目标消息链
# API 参考
以下 API 仅针对 事件插件 可用,组件扩展形式请自行阅读源码。
## 消息处理
### 回复消息
ctx.reply(message_chain: mirai.MessageChain)
回复此次事件的发起会话。
- `message_chain`:[YiriMirai 的 MessageChain 对象](https://yiri-mirai.wybxc.cc/docs/basic/message-chain),若用户使用的不是 YiriMirai 适配器,程序也能自动转换为目标消息链
### 发送主动消息
> 由于 QQ 官方 API 对主动消息的支持性很差,故若用户使用的是 QQ 官方 API,发送主动消息可能会失败
ctx.send_message(target_type: str, target_id: str, message_chain: mirai.MessageChain)
发送主动消息给目标。
- `target_type`:目标类型,可选值:`"person"`、`"group"`
- `target_id`:目标 ID(QQ 号或群号)
- `message_chain`:[YiriMirai 的 MessageChain 对象](https://yiri-mirai.wybxc.cc/docs/basic/message-chain),若用户使用的不是 YiriMirai 适配器,程序也能自动转换为目标消息链
@@ -1,115 +1,102 @@
---
head:
- - meta
- name: keywords
content: QChatGPT 组件扩展教程
title: 组件扩展
icon: code
order: 4
author: RockChinQ
date: 2024-03-21
category:
- 插件介绍
index: false
---
> 请先阅读[插件介绍页](../plugin/intro.md)
:::info 目录
[[toc]]
:::
普通的以 `BasePlugin` 子类包装的插件只能监听预定事件,而组件扩展则可以替换整个组件,实现更强大的功能扩展。
- 组件扩展不需要包装在 `BasePlugin` 子类中,可以放在插件目录下任意一个模块中
- 扩展的组件不受插件开关控制
- 扩展的组件通常由配置文件中的选项选用
## 可扩展的组件
扩展一个组件的方法,新建一个类,继承于组件的基类,然后在类上使用对应的装饰器,再根据使用方式来配置使用该实现的组件。
大部分组件中包含了`ap: pkg.core.app.Application`对象,可以用这个对象来与整个程序的各个部分进行交互。
大部分组件支持实现`async def initialize(self)`方法,用于在组件加载时进行异步初始化。
`ap`对象中包含了各个配置文件的管理器对象,可以用于访问各个配置文件。
### 命令
新增一个命令。
- 基类:`pkg.command.operator.CommandOperator`
- 装饰器:`pkg.command.operator.operator_class(name: str, help: str="", usage: str=None, alias: list[str]=[], privilege: int=1, parent_class: typing.Type[CommandOperator] = None)`
- 参考实现:`pkg.command.operators/`
- 使用方式:加载成功后,执行命令`!cmd`可查看所有命令和命令帮助信息。
### 内容过滤器
新增一个在处理消息前后判断是否要继续的内容处理器。
- 基类:`pkg.pipeline.cntfilter.filter.ContentFilter`
- 装饰器:`pkg.pipeline.cntfilter.filter.filter_class(name: str)`
- 参考实现:`pkg.pipeline.cntfilter.filters/`
- 使用方式:加载成功后,每次都会在过滤器实现声明的检查阶段调用内容过滤器的`process`方法。
### 长消息处理策略
新增一个长消息处理策略。类似:文本转合并转发消息组件、文本转图片。
- 基类:`pkg.pipeline.longtext.strategy.LongTextStrategy`
- 装饰器:`pkg.pipeline.longtext.strategy.strategy_class(name: str)`
- 参考实现:`pkg.pipeline.longtext.strategies/`
- 使用方式:需要在 `data/config/platform.json` 的 `long-text-strategy` 字段中将 `strategy` 设置为新增的策略名称。
### 会话限速算法
新增一个会话限速算法。会话请求在进入和退出时均会调用限速算法实现类的方法,实现类可以控制等待或丢弃请求。
- 基类:`pkg.pipeline.ratelimit.algo.RateLimitAlgo`
- 装饰器:`pkg.pipeline.ratelimit.algo.algo_class(name: str)`
- 参考实现:`pkg.pipeline.ratelimit.algos/`
- 使用方式:需要在 `data/config/pipeline.json` 的 `rate-limit` 字段中将 `algo` 设置为新增的算法名称。
### LLM 接口请求器
新增一个 LLM 接口请求器,例如:接入ChatGLM接口等。
- 基类:`pkg.provider.modelmgr.api.LLMAPIRequester`
- 装饰器:`pkg.provider.modelmgr.api.api_requester_class(name: str)`
- 参考实现:`pkg.provider.modelmgr.apis/`
- 使用方式:需要在`data/metadata/llm-models.json`中添加模型,将模型的`requester`字段设置为新增的请求器名称。具体请查看元数据配置板块。
### Prompt 加载器
新增一个 Prompt 加载器。
- 基类:`pkg.provider.sysprompt.loader.PromptLoader`
- 装饰器:`pkg.provider.sysprompt.loader.loader_class(name: str)`
- 参考实现:`pkg.provider.sysprompt.loaders/`
- 使用方式:需要在`data/config/provider.json`将`prompt-mode`设置为新增的加载器名称。
### 消息平台适配器
新增一个消息平台适配器,例如:接入Telegram等。
- 基类:`pkg.platform.adapter.MessageSourceAdapter`
- 装饰器:`pkg.platform.adapter.adapter_class(name: str)`
- 参考实现:`pkg.platform.adapters/`
- 使用方式:`data/config/platform.json`的`platform-adapters`中各个配置信息,将在初始化时自动根据`adapter`名称查找对应的适配器实现,并将配置传递给适配器以进行初始化。消息平台适配器实现复杂,建议多参考现有的实现。
### 对话历史消息截断器
新增一个对话历史消息截断器,在发送到模型之前对历史消息进行截断。
- 基类:`pkg.pipeline.msgtrun.truncator.Truncator`
- 装饰器:`pkg.pipeline.msgtrun.truncator.truncator_class(name: str)`
- 参考实现:`pkg.pipeline.msgtrun.truncators/`
- 使用方式:需要在`data/config/pipeline.json`的`msg-truncate`字段中设置需要使用的截断器`method`为新增的截断器名称。
### Chat 请求运行器
新增一个聊天消息运行器,默认的是 local-agent,提供了基本的 Prompt 组合、Agent 编排、多轮请求等功能。如果需要接入知识库或者本地 RAG,请在这里实现。
- 基类:`pkg.provider.runner.RequesterRunner`
- 装饰器:`pkg.provider.runner.runner_class(name: str)`
- 参考实现:`pkg.provider.runners/`
# 组件扩展
> 请先阅读[插件介绍页](../plugin/intro.md)
:::info 目录
[[toc]]
:::
普通的以 `BasePlugin` 子类包装的插件只能监听预定事件,而组件扩展则可以替换整个组件,实现更强大的功能扩展。
- 组件扩展不需要包装在 `BasePlugin` 子类中,可以放在插件目录下任意一个模块中
- 扩展的组件不受插件开关控制
- 扩展的组件通常由配置文件中的选项选用
## 可扩展的组件
扩展一个组件的方法,新建一个类,继承于组件的基类,然后在类上使用对应的装饰器,再根据使用方式来配置使用该实现的组件。
大部分组件中包含了`ap: pkg.core.app.Application`对象,可以用这个对象来与整个程序的各个部分进行交互。
大部分组件支持实现`async def initialize(self)`方法,用于在组件加载时进行异步初始化。
`ap`对象中包含了各个配置文件的管理器对象,可以用于访问各个配置文件。
### 命令
新增一个命令。
- 基类:`pkg.command.operator.CommandOperator`
- 装饰器:`pkg.command.operator.operator_class(name: str, help: str="", usage: str=None, alias: list[str]=[], privilege: int=1, parent_class: typing.Type[CommandOperator] = None)`
- 参考实现:`pkg.command.operators/`
- 使用方式:加载成功后,执行命令`!cmd`可查看所有命令和命令帮助信息。
### 内容过滤器
新增一个在处理消息前后判断是否要继续的内容处理器。
- 基类:`pkg.pipeline.cntfilter.filter.ContentFilter`
- 装饰器:`pkg.pipeline.cntfilter.filter.filter_class(name: str)`
- 参考实现:`pkg.pipeline.cntfilter.filters/`
- 使用方式:加载成功后,每次都会在过滤器实现声明的检查阶段调用内容过滤器的`process`方法。
### 长消息处理策略
新增一个长消息处理策略。类似:文本转合并转发消息组件、文本转图片。
- 基类:`pkg.pipeline.longtext.strategy.LongTextStrategy`
- 装饰器:`pkg.pipeline.longtext.strategy.strategy_class(name: str)`
- 参考实现:`pkg.pipeline.longtext.strategies/`
- 使用方式:需要在 `data/config/platform.json` 的 `long-text-strategy` 字段中将 `strategy` 设置为新增的策略名称。
### 会话限速算法
新增一个会话限速算法。会话请求在进入和退出时均会调用限速算法实现类的方法,实现类可以控制等待或丢弃请求。
- 基类:`pkg.pipeline.ratelimit.algo.RateLimitAlgo`
- 装饰器:`pkg.pipeline.ratelimit.algo.algo_class(name: str)`
- 参考实现:`pkg.pipeline.ratelimit.algos/`
- 使用方式:需要在 `data/config/pipeline.json` 的 `rate-limit` 字段中将 `algo` 设置为新增的算法名称。
### LLM 接口请求器
新增一个 LLM 接口请求器,例如:接入ChatGLM接口等。
- 基类:`pkg.provider.modelmgr.api.LLMAPIRequester`
- 装饰器:`pkg.provider.modelmgr.api.api_requester_class(name: str)`
- 参考实现:`pkg.provider.modelmgr.apis/`
- 使用方式:需要在`data/metadata/llm-models.json`中添加模型,将模型的`requester`字段设置为新增的请求器名称。具体请查看元数据配置板块。
### Prompt 加载器
新增一个 Prompt 加载器。
- 基类:`pkg.provider.sysprompt.loader.PromptLoader`
- 装饰器:`pkg.provider.sysprompt.loader.loader_class(name: str)`
- 参考实现:`pkg.provider.sysprompt.loaders/`
- 使用方式:需要在`data/config/provider.json`将`prompt-mode`设置为新增的加载器名称。
### 消息平台适配器
新增一个消息平台适配器,例如:接入Telegram等。
- 基类:`pkg.platform.adapter.MessageSourceAdapter`
- 装饰器:`pkg.platform.adapter.adapter_class(name: str)`
- 参考实现:`pkg.platform.adapters/`
- 使用方式:`data/config/platform.json`的`platform-adapters`中各个配置信息,将在初始化时自动根据`adapter`名称查找对应的适配器实现,并将配置传递给适配器以进行初始化。消息平台适配器实现复杂,建议多参考现有的实现。
### 对话历史消息截断器
新增一个对话历史消息截断器,在发送到模型之前对历史消息进行截断。
- 基类:`pkg.pipeline.msgtrun.truncator.Truncator`
- 装饰器:`pkg.pipeline.msgtrun.truncator.truncator_class(name: str)`
- 参考实现:`pkg.pipeline.msgtrun.truncators/`
- 使用方式:需要在`data/config/pipeline.json`的`msg-truncate`字段中设置需要使用的截断器`method`为新增的截断器名称。
### Chat 请求运行器
新增一个聊天消息运行器,默认的是 local-agent,提供了基本的 Prompt 组合、Agent 编排、多轮请求等功能。如果需要接入知识库或者本地 RAG,请在这里实现。
- 基类:`pkg.provider.runner.RequesterRunner`
- 装饰器:`pkg.provider.runner.runner_class(name: str)`
- 参考实现:`pkg.provider.runners/`
- 使用方式:需要在`data/config/provider.json`的`runner`字段中设置需要使用的运行器`runner`为新增的运行器名称。
@@ -1,17 +1,4 @@
---
head:
- - meta
- name: keywords
content: QChatGPT插件开发教程
title: 插件开发
icon: code
order: 3
author: RockChinQ
date: 2023-09-30
category:
- 插件介绍
index: false
---
# 插件开发
> 请先阅读[插件介绍页](../plugin/intro.md)
> 建议先阅读本项目源码,了解项目架构
@@ -1,16 +1,4 @@
---
head:
- - meta
- name: keywords
content: ChatGPT QQ机器人插件,QChatGPT项目插件
title: 插件介绍
icon: blog
order: 1
date: 2023-09-30
category:
- 插件介绍
index: false
---
# 插件介绍
:::info 目录
[[toc]]
@@ -108,4 +96,4 @@ GPT将会回复一个对`access_the_web`的函数调用请求,QChatGPT将调
`priority`: 插件运行优先级,在初始化、事件调用时,高优先级的插件将优先被处理
`enabled`:设置为false时,不会初始化,也不会被调用
`enabled`:设置为false时,不会初始化,也不会被调用
@@ -1,16 +1,5 @@
---
head:
- - meta
- name: keywords
content: QChatGPT插件开发教程
title: 技术信息
icon: code
author: RockChinQ
date: 2023-09-30
category:
- 技术信息
index: false
---
# 技术信息
以下是QChatGPT实现原理等技术信息,贡献之前请仔细阅读
> 此文档为 QChatGPT 2.x 的技术文档,已过时,3.x 版本请直接查看源码。
+38
View File
@@ -0,0 +1,38 @@
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home
hero:
name: "QChatGPT"
image:
src: /assets/icon/chrome-512.png
alt: QChatGPT-logo
text: ""
tagline: "😎高稳定性、🧩支持插件、🦄多模态的 LLM QQ / QQ频道 / OneBot 机器人 / Agent 平台"
actions:
- theme: brand
text: 查看文档
link: /insight/intro
- theme: alt
text: 代码仓库
link: https://github.com/RockChinQ/QChatGPT
features:
- title: 丰富生态
details: 支持事件监听、AI Agent 等插件扩展方式,具有多种插件或相关支持项目
- title: 功能直观
details: 集成黑名单、限速、选择响应、上下文控制、Prompt 管理等多种常用功能
- title: 多种模型
details: 适配 OpenAI、Moonshot、Anthropic 等多个提供商的接口,同时深度支持 OneAPI
- title: 高稳定性
details: 采用主流的设计思想,架构清晰,具有高测试覆盖率
- title: 生产就绪
details: 符合生产环境的高可用性要求,已被多家公司商用部署
- title: 持续维护
details: 长期维护、迭代,持续跟进大模型领域的最新应用实践
---
+32
View File
@@ -0,0 +1,32 @@
# 新手指引
> 此页面旨在引导新用户如何阅读文档
## 阅读顺序
### 新用户的:
对于新用户,我们建议如下阅读顺序
1. 部署板块
- 首先部署QChatGPT,使用手动部署或Docker部署,或者使用社区资源提供的一键部署(通常是最简部署方式,适合纯小白)
- 接着部署消息平台,建议aiocqhttp
- 最后填写配置信息(此时是最简上手配置,进一步使用仍需阅读配置板块)
2. 使用板块
- 进行上面的最基础部署后
- 阅读命令语法可以获得机器人的指令,可以在对话中实现切换预设、切换模型等
- 阅读插件列表,获得插件,增强功能
- 阅读常见问题,可有助于解决部署和使用时的问题
3. 配置板块
- 功能配置,是部署板块配置信息部分的进一步拓展,具体解释了所有的配置信息,实现更多自定义需求
- 元数据配置,控制敏感词、模型列表等
通常来说,对于非开发人员和商用合作用途,上面的已经足够了。
### 开发者的:
对于开发者,包括但不限于项目主体开发和插件开发,我们建议再阅读上述配置后,继续阅读开发板块
### 商业合作的
请阅读规模化和商用板块
+12 -22
View File
@@ -1,15 +1,5 @@
---
head:
- - meta
- name: keywords
content: QChatGPT的模型一览功能介绍
title: 模型一览和功能点
icon: enum
author: RockChinQ
date: 2023-12-20
category:
- 部署教程
---
# 模型一览和功能点
## 模型一览
### 文字对话
@@ -28,14 +18,14 @@ category:
- 程序向模型发送近几次对话内容,模型根据上下文生成回复
</details>
<br>
<details>
<summary>✅支持敏感词过滤,避免账号风险</summary>
- 难以监测机器人与用户对话时的内容,故引入此功能以减少机器人风险
</details>
<br>
<details>
<summary>✅群内多种响应规则,不必at</summary>
@@ -43,7 +33,7 @@ category:
- 默认回复`ai`作为前缀或`@`机器人的消息
</details>
<br>
<details>
<summary>✅使用官方api,稳定快捷</summary>
@@ -51,7 +41,7 @@ category:
- 不使用ChatGPT逆向接口,而使用官方的Completion API,稳定性高
</details>
<br>
<details>
<summary>✅组件少,部署方便,提供一键安装器及Docker安装</summary>
@@ -59,7 +49,7 @@ category:
- 手动部署步骤少
- 提供自动安装器及docker方式,详见安装步骤
</details>
<br>
<details>
<summary>✅支持预设文字</summary>
@@ -67,7 +57,7 @@ category:
- 支持以自然语言预设文字,自定义机器人人格等信息
</details>
<br>
<details>
<summary>✅支持插件加载🧩</summary>
@@ -75,7 +65,7 @@ category:
- 自行实现插件加载器及相关支持
- 详细查看插件介绍页
</details>
<br>
<details>
<summary>✅私聊、群聊黑名单机制</summary>
@@ -83,7 +73,7 @@ category:
- 支持将人或群聊加入黑名单以忽略其消息
</details>
<br>
<details>
<summary>✅回复速度限制</summary>
@@ -94,7 +84,7 @@ category:
- “丢弃”策略:此分钟内对话次数达到限制时,丢弃之后的对话
</details>
<br>
## 限制
@@ -128,4 +118,4 @@ category:
2. at机器人并发送消息,机器人即会自动回复
3. at机器人并发送`!help`查看帮助信息
![群聊使用](/assets/image/group_chat.png)
![群聊使用](/assets/image/group_chat.png)

Some files were not shown because too many files have changed in this diff Show More