lintonxue00 commited on
Commit
2a038b8
1 Parent(s): 32e061b

Upload config.py

Browse files
Files changed (1) hide show
  1. config.py +148 -0
config.py ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pydantic import BaseModel, Extra
2
+ from nonebot import get_driver
3
+ from nonebot.log import logger
4
+ import yaml
5
+ from pathlib import Path
6
+
7
+
8
+ class Config(BaseModel, extra=Extra.ignore):
9
+ """Plugin Config Here"""
10
+ ng_config_path: str = "config/naturel_gpt_config.yml"
11
+ ng_dev_mode: bool = False
12
+
13
+
14
+ driver = get_driver()
15
+ global_config = driver.config
16
+ config = Config.parse_obj(global_config)
17
+
18
+ # 配置文件模板
19
+ CONFIG_TEMPLATE = {
20
+ "OPENAI_API_KEYS": [ # OpenAI API Key 列表
21
+ 'sk-xxxxxxxxxxxxx',
22
+ 'sk-xxxxxxxxxxxxx',
23
+ ],
24
+ "OPENAI_TIMEOUT": 30, # OpenAI 请求超时时间
25
+ "PRESETS": {
26
+ "白羽": {
27
+ 'bot_name': '白羽', # 人格名称
28
+ 'is_locked': True, # 是否锁定人格,锁定后无法编辑人格
29
+ 'is_default': True, # 是否为默认人格
30
+ 'bot_self_introl': '白羽是一名喜欢二次元的中二宅女,她机智、傲娇,对人类充满好奇,习惯以白羽喵自称,聊天时喜欢使用各种可爱的颜文字,如果冒犯到她会生气。',
31
+ },
32
+ "浅枫": {
33
+ 'bot_name': '浅枫',
34
+ 'is_locked': False,
35
+ 'is_default': False,
36
+ 'bot_self_introl': '浅枫酱是一名尽职尽责的女仆,她能够帮助主人做很多事情,对话中会体现出对主人的体贴与关心。',
37
+ },
38
+ "忆雨": {
39
+ 'bot_name': '忆雨',
40
+ 'is_locked': True,
41
+ 'is_default': False,
42
+ 'bot_self_introl': '忆雨是一名恐怖小说作家,是个阴沉的女孩,她非常恨人类,和陌生人聊天时的表现冷漠,不喜欢回复过多的文字,兴趣是恐怖小说,如果有人和她探讨如何消灭人类会很有兴致。',
43
+ },
44
+ "可洛喵": {
45
+ 'bot_name': '可洛喵',
46
+ 'is_locked': True,
47
+ 'is_default': False,
48
+ 'bot_self_introl': '可洛喵是一只可爱的猫,它不会说话,它的回复通常以"[动作/心情]声音+颜文字"形式出现,例如"[坐好]喵~(。・ω・。)"或"[开心]喵喵!ヾ(≧▽≦*)o"',
49
+ },
50
+ },
51
+ 'IGNORE_PREFIX': '#', # 忽略前缀 以该前缀开头的消息将不会被处理
52
+ 'CHAT_MODEL': "gpt-3.5-turbo",
53
+ 'CHAT_TOP_P': 1,
54
+ 'CHAT_TEMPERATURE': 0.3, # 温度越高越随机
55
+ 'CHAT_PRESENCE_PENALTY': 0.3, # 主题重复惩罚
56
+ 'CHAT_FREQUENCY_PENALTY': 0.3, # 复读惩罚
57
+
58
+ 'CHAT_HISTORY_MAX_TOKENS': 2048, # 上下文聊天记录最大token数
59
+ 'CHAT_MAX_SUMMARY_TOKENS': 512, # 单次总结最大token数
60
+ 'REPLY_MAX_TOKENS': 1024, # 单次回复最大token数
61
+ 'REQ_MAX_TOKENS': 3072, # 单次请求最大token数
62
+
63
+ 'REPLY_ON_NAME_MENTION': True, # 是否在被提及时回复
64
+ 'REPLY_ON_AT': True, # 是否在被at时回复
65
+ 'REPLY_ON_WELCOME': True, # 是否在新成员加入时回复
66
+
67
+ 'USER_MEMORY_SUMMARY_THRESHOLD': 12, # 用户记忆阈值
68
+
69
+ 'CHAT_ENABLE_RECORD_ORTHER': True, # 是否记录其他人的对话
70
+ 'CHAT_ENABLE_SUMMARY_CHAT': False, # 是否启用总结对话
71
+ 'CHAT_MEMORY_SHORT_LENGTH': 8, # 短期对话记忆长度
72
+ 'CHAT_MEMORY_MAX_LENGTH': 16, # 长期对话记忆长度
73
+ 'CHAT_SUMMARY_INTERVAL': 10, # 长期对话记忆间隔
74
+
75
+ 'NG_DATA_PATH': "./data/naturel_gpt/", # 数据文件目录
76
+ 'NG_EXT_PATH': "./data/naturel_gpt/extensions/", # 拓展目录
77
+
78
+ 'ADMIN_USERID': ['替换成管理员QQ号_(用单引号包裹)'], # 管理员QQ号
79
+ 'FORBIDDEN_USERS': ['替换成屏蔽QQ号_(用单引号包裹)'], # 拒绝回应的QQ号
80
+
81
+ 'WORD_FOR_WAKE_UP': [], # 自定义触发词
82
+ 'WORD_FOR_FORBIDDEN': [], # 自定义禁止触发词
83
+
84
+ 'RANDOM_CHAT_PROBABILITY': 0, # 随机聊天概率
85
+
86
+ 'NG_MSG_PRIORITY': 99, # 消息响应优先级
87
+ 'NG_BLOCK_OTHERS': False, # 是否阻止其他插件响应
88
+ 'NG_ENABLE_EXT': True, # 是否启用拓展
89
+
90
+ 'MEMORY_ACTIVE': True, # 是否启用记忆功能
91
+ 'MEMORY_MAX_LENGTH': 16, # 记忆最大条数
92
+ 'MEMORY_ENHANCE_THRESHOLD': 0.6, # 记忆强化阈值
93
+
94
+ 'NG_MAX_RESPONSE_PER_MSG': 5, # 每条消息最大响应次数
95
+ 'NG_ENABLE_MSG_SPLIT': True, # 是否启用消息分割
96
+ 'NG_ENABLE_AWAKE_IDENTITIES': True, # 是否允许自动唤醒其它人格
97
+
98
+ 'OPENAI_PROXY_SERVER': '', # 请求OpenAI的代理服务器
99
+ 'UNLOCK_CONTENT_LIMIT': False, # 解锁内容限制
100
+
101
+ 'NG_EXT_LOAD_LIST': [{
102
+ 'EXT_NAME': 'ext_random',
103
+ 'IS_ACTIVE': False,
104
+ 'EXT_CONFIG': {},
105
+ }], # 加载的拓展列表
106
+
107
+ '__DEBUG__': False, # 是否启用debug模式
108
+ }
109
+
110
+ config_path = config.ng_config_path
111
+
112
+ # 检查config文件夹是否存在 不存在则创建
113
+ if not Path("config").exists():
114
+ Path("config").mkdir()
115
+
116
+ if config.ng_dev_mode: # 开发模式下不读取原配置文件,直接使用模板覆盖原配置文件
117
+ with open(config_path, 'w', encoding='utf-8') as f:
118
+ yaml.dump(CONFIG_TEMPLATE, f, allow_unicode=True)
119
+
120
+ else:
121
+ # 检查配置文件是否存在 不存在则创建
122
+ if not Path(config_path).exists():
123
+ with open(config_path, 'w', encoding='utf-8') as f:
124
+ yaml.dump(CONFIG_TEMPLATE, f, allow_unicode=True)
125
+ logger.info('Naturel GPT 配置文件创建成功')
126
+
127
+ # 读取配置文件
128
+ with open(config_path, 'r', encoding='utf-8') as f:
129
+ config = yaml.load(f, Loader=yaml.FullLoader)
130
+ # 对比配置模板和配置文件
131
+ for k, v in CONFIG_TEMPLATE.items():
132
+ if k not in config:
133
+ config[k] = v
134
+ logger.info(f'Naturel GPT 配置文件缺少 {k} 项,已自动补充')
135
+ # 将配置文件内容写入config
136
+ for k, v in config.items():
137
+ setattr(Config, k, v)
138
+
139
+ # 检查数据文件夹目录和拓展目录是否存在 不存在则创建
140
+ if not Path(config['NG_DATA_PATH'][:-1]).exists():
141
+ Path(config['NG_DATA_PATH'][:-1]).mkdir(parents=True)
142
+ if not Path(config['NG_EXT_PATH'][:-1]).exists():
143
+ Path(config['NG_EXT_PATH'][:-1]).mkdir(parents=True)
144
+
145
+ # 保存配置文件
146
+ with open(config_path, 'w', encoding='utf-8') as f:
147
+ yaml.dump(config, f, allow_unicode=True)
148
+ logger.info('Naturel GPT 配置文件加载成功')