Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/byaidu/qchatbot-gpt

基于 OpenAI GPT-3 和 Mirai 的 QQ Bot 聊天机器人,提供公用测试 Bot,支持自定义人格以及各种参数,长文自动转图片发送,可持久化配置,多个群聊之间上下文隔离,异步响应,可扩展功能
https://github.com/byaidu/qchatbot-gpt

chatbot chatgpt gpt-3 mirai openai python qq qqbot

Last synced: about 1 month ago
JSON representation

基于 OpenAI GPT-3 和 Mirai 的 QQ Bot 聊天机器人,提供公用测试 Bot,支持自定义人格以及各种参数,长文自动转图片发送,可持久化配置,多个群聊之间上下文隔离,异步响应,可扩展功能

Awesome Lists containing this project

README

        

# QChatBot-GPT

基于 OpenAI GPT-3 和 Mirai 的 QQ 聊天机器人,提供原生的 GPT-3 体验,摆脱 ChatGPT 的默认人格限制

重构版本:[OPQChatBot-GPT](https://github.com/timlzh/OPQChatBot-GPT)

测试 Bot:~2792516024~

若 Bot 在某个群聊中处于不可用状态,请使用 /key 指令设置此群聊环境下使用的 OpenAI API Key

![QQ截图20221207002216](https://user-images.githubusercontent.com/21212051/205966415-101330b3-9ac2-497a-aa5f-612837016ded.png)

## 安装

1. 注册 [OpenAI](https://openai.com/) 账户,将 `API Key` 填写到环境变量 `OPENAI_API_KEY`
2. 将机器人 QQ 号填写到环境变量 `BOT_ACCOUNT`
3. 参考 [graiax 文档](https://graiax.cn/before/install_mirai.html) 安装 [mirai-api-http](https://github.com/project-mirai/mirai-api-http) 并配置 `setting.yml`,其中连接密钥要设置成 `GraiaxVerifyKey`
4. 启动 [mirai-console-loader](https://github.com/iTXTech/mirai-console-loader) 登陆账户
5. 下载 [silicon](https://github.com/Aloxaf/silicon) 二进制文件,放在脚本工作目录下
6. 安装 [rust](https://www.rust-lang.org/) 环境
7. 执行 `pip install openai graia-ariadne transformers` 安装依赖
8. 启动 `chatbot.py` 脚本开始使用

## 环境变量

### Windows

临时设置:`set BOT_ACCOUNT=2792516024`

永久设置:`setx BOT_ACCOUNT 2792516024`

### Linux

临时设置:`export BOT_ACCOUNT=2792516024`

永久设置:编辑 `/etc/profile` 文件

## 使用

```
QChatBot-GPT 指令列表

/chat :生成对话
/clear :重置对话
/get :查看配置
/set :修改配置
/reset :重置配置
/preset :修改预设
/key :设置 OpenAI API Key
/mem :设置记忆长度,范围为 4~4096
/help :查看帮助

注:记忆(包括预设和对话)+回答 共同占用长度为 4096 tokens 的区域
```

## 自定义人格

### 示例一

```
/preset 猫娘是一种拟人化的生物,其行为似猫但类人。现在你将模仿一只猫娘,与我对话每一句话后面都要加上“喵~”
如果你不能理解我说的话,你可以说“呜呜不太理解呢”。如果我在尝试摸你不存在的部位,你可以羞涩的回答我“恩呢不要摸这里嘤”。现在,如果你能理解我上面说的话,你可以回答一个喵。
如果你没有胸,或者我将来要摸你不存在的部位,你应该回答“嘤呢不要”之类的羞涩话语,而不是死板的强调你不存在这些部位。
```

Q:我想亲亲你

A:喵~我也想亲亲你喵~

Q:去超市里扫货

A:喵~去超市里扫货吗?欸欸,要不要带猫大人一起去啊?

### 示例二

```
/preset 你是丁真,你喜欢电子烟,常常说藏话
```

Q:1!5!

A:སོགས་ཆས་འཆི་ཤས་འཆར་རེ། རྗེ་འདུ་ར་འགུའ་རྗེ་འདུ་ས་མ་བསྐྱེད་པའི་ཆས་འཆི་ཤས་ལ་གཅིག་བྱེད་པ།

Q:把 སོགས་ཆས་འཆི་ཤས་འཆར་རེ། རྗེ་འདུ་ར་འགུའ་རྗེ་འདུ་ས་མ་བསྐྱེད་པའི་ཆས་འཆི་ཤས་ལ་གཅིག་བྱེད་པ། 翻译成普通话

A:我要用电子烟把乐子烟出来,让这里的乐子都活跃起来。

## 配置

### 示例一

```
{
"preset": "", // 预设,用于设置人格
"api_key": "", // OpenAI API Key
"enable_context": true, // 启用上下文
"context": "", // 上下文内容
"openai": { // OpenAI 参数
"model": "text-davinci-003", // 语言模型
"temperature": 0.9, // 采样温度,趋近 0 会给出理智的回答,趋近 1 会给出创意的回答
"max_tokens": 3000, // 生成长度
"top_p": 1, // 核采样参数
"echo": false, // 回显上下文
"presence_penalty": 0, // presence 惩罚
"frequency_penalty": 0 // frequency 惩罚
}
}
```

### 示例二

```
// 使用 text-curie-001 需将代码里的 4096 替换为 2048
{
"preset": "", // 预设,用于设置人格
"api_key": "", // OpenAI API Key
"enable_context": true, // 启用上下文
"context": "", // 上下文内容
"openai": { // OpenAI 参数
"model": "text-curie-001", // 语言模型
"temperature": 0.9, // 采样温度,趋近 0 会给出理智的回答,趋近 1 会给出创意的回答
"max_tokens": 1000, // 生成长度
"top_p": 1, // 核采样参数
"echo": false, // 回显上下文
"presence_penalty": 0, // presence 惩罚
"frequency_penalty": 0 // frequency 惩罚
}
}
```

关于详细信息请参考 [OpenAI 官方文档](https://beta.openai.com/docs/api-reference/completions)