屎山修补术
修改了bot_toml加载逻辑
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -15,7 +15,7 @@ reasoning_window.bat
|
|||||||
queue_update.txt
|
queue_update.txt
|
||||||
memory_graph.gml
|
memory_graph.gml
|
||||||
.env.*
|
.env.*
|
||||||
|
config/bot_config_dev.toml
|
||||||
|
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[bot]
|
[bot]
|
||||||
qq = 123456 #填入你的机器人QQ
|
qq = 123 #填入你的机器人QQ
|
||||||
nickname = "麦麦" #你希望bot被称呼的名字
|
nickname = "麦麦" #你希望bot被称呼的名字
|
||||||
|
|
||||||
[message]
|
[message]
|
||||||
@@ -17,7 +17,7 @@ enable_pic_translate = false
|
|||||||
|
|
||||||
[response]
|
[response]
|
||||||
api_using = "siliconflow" # 选择大模型API,可选值为siliconflow,deepseek,建议使用siliconflow,因为识图api目前只支持siliconflow的deepseek-vl2模型
|
api_using = "siliconflow" # 选择大模型API,可选值为siliconflow,deepseek,建议使用siliconflow,因为识图api目前只支持siliconflow的deepseek-vl2模型
|
||||||
api_paid = false #是否使用付费api,目前此选项只影响siliconflow,其deepseek模型的api分为可用赠送余额和不可以用的,此选项为false时使用赠送余额
|
api_paid = true #是否使用付费api,目前此选项只影响siliconflow,其deepseek模型的api分为可用赠送余额和不可以用的,此选项为false时使用赠送余额
|
||||||
model_r1_probability = 0.8 # 麦麦回答时选择R1模型的概率
|
model_r1_probability = 0.8 # 麦麦回答时选择R1模型的概率
|
||||||
model_v3_probability = 0.1 # 麦麦回答时选择V3模型的概率
|
model_v3_probability = 0.1 # 麦麦回答时选择V3模型的概率
|
||||||
model_r1_distill_probability = 0.1 # 麦麦回答时选择R1蒸馏模型的概率
|
model_r1_distill_probability = 0.1 # 麦麦回答时选择R1蒸馏模型的概率
|
||||||
@@ -34,13 +34,14 @@ enable_advance_output = true # 开启后输出更多日志,false关闭true开启
|
|||||||
[groups]
|
[groups]
|
||||||
|
|
||||||
talk_allowed = [
|
talk_allowed = [
|
||||||
123456,12345678
|
123,
|
||||||
|
123,
|
||||||
] #可以回复消息的群
|
] #可以回复消息的群
|
||||||
|
|
||||||
talk_frequency_down = [
|
talk_frequency_down = [
|
||||||
123456,12345678
|
|
||||||
] #降低回复频率的群
|
] #降低回复频率的群
|
||||||
|
|
||||||
ban_user_id = [
|
ban_user_id = [
|
||||||
123456,12345678
|
|
||||||
] #禁止回复消息的QQ号
|
] #禁止回复消息的QQ号
|
||||||
|
|||||||
@@ -47,20 +47,59 @@ class BotConfig:
|
|||||||
enable_kuuki_read: bool = True # 是否启用读空气功能
|
enable_kuuki_read: bool = True # 是否启用读空气功能
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_default_config_path() -> str:
|
def get_config_dir() -> str:
|
||||||
"""获取默认配置文件路径"""
|
"""获取配置文件目录"""
|
||||||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
root_dir = os.path.abspath(os.path.join(current_dir, '..', '..', '..'))
|
root_dir = os.path.abspath(os.path.join(current_dir, '..', '..', '..'))
|
||||||
config_dir = os.path.join(root_dir, 'config')
|
config_dir = os.path.join(root_dir, 'config')
|
||||||
return os.path.join(config_dir, 'bot_config.toml')
|
if not os.path.exists(config_dir):
|
||||||
|
os.makedirs(config_dir)
|
||||||
|
return config_dir
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def create_default_config(config_path: str) -> None:
|
||||||
|
"""创建默认配置文件"""
|
||||||
|
default_config = """[bot]
|
||||||
|
qq = 1 # 填入你的机器人QQ
|
||||||
|
nickname = "麦麦" # 你希望bot被称呼的名字
|
||||||
|
|
||||||
|
[message]
|
||||||
|
min_text_length = 2 # 与麦麦聊天时麦麦只会回答文本大于等于此数的消息
|
||||||
|
max_context_size = 15 # 麦麦获得的上下文数量,超出数量后自动丢弃
|
||||||
|
emoji_chance = 0.2 # 麦麦使用表情包的概率
|
||||||
|
|
||||||
|
[emoji]
|
||||||
|
check_interval = 120
|
||||||
|
register_interval = 10
|
||||||
|
|
||||||
|
[cq_code]
|
||||||
|
enable_pic_translate = false
|
||||||
|
|
||||||
|
[response]
|
||||||
|
api_using = "siliconflow" # 选择大模型API,可选值为siliconflow,deepseek
|
||||||
|
api_paid = false # 是否使用付费api
|
||||||
|
model_r1_probability = 0.8 # 麦麦回答时选择R1模型的概率
|
||||||
|
model_v3_probability = 0.1 # 麦麦回答时选择V3模型的概率
|
||||||
|
model_r1_distill_probability = 0.1 # 麦麦回答时选择R1蒸馏模型的概率
|
||||||
|
|
||||||
|
[memory]
|
||||||
|
build_memory_interval = 300 # 记忆构建间隔
|
||||||
|
|
||||||
|
[others]
|
||||||
|
enable_advance_output = false # 开启后输出更多日志
|
||||||
|
|
||||||
|
[groups]
|
||||||
|
talk_allowed = [] # 可以回复消息的群
|
||||||
|
talk_frequency_down = [] # 降低回复频率的群
|
||||||
|
ban_user_id = [] # 禁止回复消息的QQ号
|
||||||
|
"""
|
||||||
|
with open(config_path, "w", encoding="utf-8") as f:
|
||||||
|
f.write(default_config)
|
||||||
|
logger.success(f"已创建默认配置文件: {config_path}")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def load_config(cls, config_path: str = None) -> "BotConfig":
|
def load_config(cls, config_path: str = None) -> "BotConfig":
|
||||||
"""从TOML配置文件加载配置"""
|
"""从TOML配置文件加载配置"""
|
||||||
if config_path is None:
|
|
||||||
config_path = cls.get_default_config_path()
|
|
||||||
logger.info(f"使用默认配置文件路径: {config_path}")
|
|
||||||
|
|
||||||
config = cls()
|
config = cls()
|
||||||
if os.path.exists(config_path):
|
if os.path.exists(config_path):
|
||||||
with open(config_path, "rb") as f:
|
with open(config_path, "rb") as f:
|
||||||
@@ -119,12 +158,25 @@ class BotConfig:
|
|||||||
return config
|
return config
|
||||||
|
|
||||||
# 获取配置文件路径
|
# 获取配置文件路径
|
||||||
bot_config_path = BotConfig.get_default_config_path()
|
|
||||||
config_dir = os.path.dirname(bot_config_path)
|
|
||||||
|
|
||||||
logger.info(f"尝试从 {bot_config_path} 加载机器人配置")
|
bot_config_floder_path = BotConfig.get_config_dir()
|
||||||
|
print(f"正在品鉴配置文件目录: {bot_config_floder_path}")
|
||||||
|
bot_config_path = os.path.join(bot_config_floder_path, "bot_config_dev.toml")
|
||||||
|
if not os.path.exists(bot_config_path):
|
||||||
|
# 如果开发环境配置文件不存在,则使用默认配置文件
|
||||||
|
bot_config_path = os.path.join(bot_config_floder_path, "bot_config.toml")
|
||||||
|
logger.info("使用默认配置文件")
|
||||||
|
else:
|
||||||
|
logger.info("已找到开发环境配置文件")
|
||||||
|
|
||||||
global_config = BotConfig.load_config(config_path=bot_config_path)
|
global_config = BotConfig.load_config(config_path=bot_config_path)
|
||||||
|
|
||||||
|
|
||||||
|
# config_dir = os.path.dirname(bot_config_path)
|
||||||
|
|
||||||
|
# logger.info(f"尝试从 {bot_config_path} 加载机器人配置")
|
||||||
|
# global_config = BotConfig.load_config(config_path=bot_config_path)
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class LLMConfig:
|
class LLMConfig:
|
||||||
"""机器人配置类"""
|
"""机器人配置类"""
|
||||||
|
|||||||
@@ -349,7 +349,7 @@ class CQCode:
|
|||||||
# 创建Message对象
|
# 创建Message对象
|
||||||
from .message import Message
|
from .message import Message
|
||||||
if self.reply_message == None:
|
if self.reply_message == None:
|
||||||
print(f"\033[1;31m[错误]\033[0m 回复消息为空")
|
# print(f"\033[1;31m[错误]\033[0m 回复消息为空")
|
||||||
return '[回复某人消息]'
|
return '[回复某人消息]'
|
||||||
|
|
||||||
if self.reply_message.sender.user_id:
|
if self.reply_message.sender.user_id:
|
||||||
|
|||||||
@@ -150,9 +150,9 @@ class PromptBuilder:
|
|||||||
prompt_personality = ''
|
prompt_personality = ''
|
||||||
personality_choice = random.random()
|
personality_choice = random.random()
|
||||||
if personality_choice < 4/6: # 第一种人格
|
if personality_choice < 4/6: # 第一种人格
|
||||||
prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧,你正在浏览qq群,{promt_info_prompt},
|
prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},现在学习心理学和脑科学,你会刷贴吧,你正在浏览qq群,{promt_info_prompt},
|
||||||
现在请你给出日常且口语化的回复,平淡一些,尽量简短一些。{is_bot_prompt}
|
现在请你给出日常且口语化的回复,平淡一些,尽量简短一些。{is_bot_prompt}
|
||||||
请注意把握群里的聊天内容,不要回复的太有条理,可以有个性。'''
|
请注意把握群里的聊天内容,不要刻意突出自身学科背景,不要回复的太有条理,可以有个性。'''
|
||||||
elif personality_choice < 1: # 第二种人格
|
elif personality_choice < 1: # 第二种人格
|
||||||
prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},是一个女大学生,你有黑色头发,你会刷小红书, 你正在浏览qq群,{promt_info_prompt},
|
prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},是一个女大学生,你有黑色头发,你会刷小红书, 你正在浏览qq群,{promt_info_prompt},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user