功能:配置可以单独调整各聊天群聊的回复权重

pull/345/head
Oct-autumn 2025-03-13 21:00:08 +08:00
parent 5ae32a965a
commit 4642e79999
No known key found for this signature in database
GPG Key ID: 53C510DF2E6149E8
7 changed files with 54 additions and 59 deletions

View File

@ -146,8 +146,7 @@ enable_check = false # 是否要检查表情包是不是合适的喵
check_prompt = "符合公序良俗" # 检查表情包的标准呢
[groups]
talk_allowed = [123456, 789012] # 比如让机器人在群123456和789012里说话
talk_frequency_down = [345678] # 比如在群345678里少说点话
talk_allowed = { 123456 = 1.5, 789012 = 1.0, 345678 = 0.5 } # 比如让机器人在群123456多说点话789012里正常说话在群345678里少说点话
ban_user_id = [111222] # 比如不回复QQ号为111222的人的消息
[others]

View File

@ -107,8 +107,7 @@ enable_check = false # 启用表情审核
check_prompt = "符合公序良俗"
[groups]
talk_allowed = [] # 允许对话的群号
talk_frequency_down = [] # 降低回复频率的群号
talk_allowed = {} # 允许对话的群号与对应的回复权重
ban_user_id = [] # 禁止回复的用户QQ号
[others]

View File

@ -316,8 +316,7 @@ enable_check = false # 启用表情审核
check_prompt = "符合公序良俗"
[groups]
talk_allowed = [] # 允许对话的群号
talk_frequency_down = [] # 降低回复频率的群号
talk_allowed = {} # 允许对话的群号与对应的回复权重
ban_user_id = [] # 禁止回复的用户QQ号
[others]

View File

@ -117,7 +117,7 @@ class ChatBot:
else:
# 白名单设定由nontbot侧完成
if event.group_id:
if event.group_id not in global_config.talk_allowed_groups:
if event.group_id not in global_config.talk_allowed_groups.keys():
return
user_info = UserInfo(

View File

@ -27,8 +27,7 @@ class BotConfig:
ENABLE_PIC_TRANSLATE: bool = True # 是否启用图片翻译
talk_allowed_groups = set()
talk_frequency_down_groups = set()
talk_allowed_groups = {}
thinking_timeout: int = 100 # 思考时间
response_willing_amplifier: float = 1.0 # 回复意愿放大系数
@ -330,8 +329,10 @@ class BotConfig:
def groups(parent: dict):
groups_config = parent["groups"]
config.talk_allowed_groups = set(groups_config.get("talk_allowed", []))
config.talk_frequency_down_groups = set(groups_config.get("talk_frequency_down", []))
# talk_allowed 是一个dict组每个dict包含群id和回复权重talk_allowed_groups是一个dictkey是群idvalue是回复权重
config.talk_allowed_groups = {int(k): v for k, v in groups_config.get("talk_allowed", {}).items()}
config.ban_user_id = set(groups_config.get("ban_user_id", []))
def others(parent: dict):

View File

@ -182,10 +182,12 @@ class WillingManager:
# 考虑回复意愿的影响
reply_probability = base_probability * current_willing
# 检查群组权限(如果是群聊)
# 群聊,根据配置调整回复概率
if chat_stream.group_info and config:
if chat_stream.group_info.group_id in config.talk_frequency_down_groups:
reply_probability = reply_probability / global_config.down_frequency_rate
if chat_stream.group_info.group_id in config.talk_allowed_groups.keys():
reply_probability = reply_probability * global_config.talk_allowed_groups[chat_stream.group_info.group_id]
else:
reply_probability = 0
# 限制最大回复概率
reply_probability = min(reply_probability, 0.75) # 设置最大回复概率为75%

View File

@ -1,5 +1,5 @@
[inner]
version = "0.0.8"
version = "0.0.9"
#如果你想要修改配置文件请在修改后将version的值进行变更
#如果新增项目请在BotConfig类下新增相应的变量
@ -9,8 +9,8 @@ version = "0.0.8"
#"necessary":False #是否必须
#}
#2.如果你修改的是[]下的项目,例如你新增了[memory]下的 memory_ban_words ,那么请在config.py的 load_config函数中的 memory函数下新增版本判断:
# if config.INNER_VERSION in SpecifierSet(">=0.0.2"):
# config.memory_ban_words = set(memory_config.get("memory_ban_words", []))
# if config.INNER_VERSION in SpecifierSet(">=0.0.2"):
# config.memory_ban_words = set(memory_config.get("memory_ban_words", []))
[bot]
qq = 123
@ -19,19 +19,19 @@ alias_names = ["小麦", "阿麦"]
[personality]
prompt_personality = [
"曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", # 贴吧人格
"是一个女大学生,你有黑色头发,你会刷小红书", # 小红书人格
"是一个女大学生你会刷b站对ACG文化感兴趣" # b站人格
]
"曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", # 贴吧人格
"是一个女大学生,你有黑色头发,你会刷小红书", # 小红书人格
"是一个女大学生你会刷b站对ACG文化感兴趣", # b站人格
]
personality_1_probability = 0.6 # 第一种人格出现概率
personality_2_probability = 0.3 # 第二种人格出现概率
personality_3_probability = 0.1 # 第三种人格出现概率请确保三个概率相加等于1
prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生喜欢刷qq贴吧知乎和小红书"
[message]
min_text_length = 2 # 与麦麦聊天时麦麦只会回答文本大于等于此数的消息
max_context_size = 15 # 麦麦获得的上文数量
emoji_chance = 0.2 # 麦麦使用表情包的概率
min_text_length = 2 # 与麦麦聊天时麦麦只会回答文本大于等于此数的消息
max_context_size = 15 # 麦麦获得的上文数量
emoji_chance = 0.2 # 麦麦使用表情包的概率
thinking_timeout = 120 # 麦麦思考时间
response_willing_amplifier = 1 # 麦麦回复意愿放大系数一般为1
@ -39,7 +39,7 @@ response_interested_rate_amplifier = 1 # 麦麦回复兴趣度放大系数,听
down_frequency_rate = 3.5 # 降低回复频率的群组回复意愿降低系数
ban_words = [
# "403","张三"
]
]
ban_msgs_regex = [
# 需要过滤的消息原始消息匹配的正则表达式匹配到的消息将被过滤支持CQ码若不了解正则表达式请勿修改
@ -49,27 +49,27 @@ ban_msgs_regex = [
]
[emoji]
check_interval = 120 # 检查表情包的时间间隔
register_interval = 10 # 注册表情包的时间间隔
auto_save = true # 自动偷表情包
enable_check = false # 是否启用表情包过滤
check_interval = 120 # 检查表情包的时间间隔
register_interval = 10 # 注册表情包的时间间隔
auto_save = true # 自动偷表情包
enable_check = false # 是否启用表情包过滤
check_prompt = "符合公序良俗" # 表情包过滤要求
[cq_code]
enable_pic_translate = false
[response]
model_r1_probability = 0.8 # 麦麦回答时选择主要回复模型1 模型的概率
model_v3_probability = 0.1 # 麦麦回答时选择次要回复模型2 模型的概率
model_r1_probability = 0.8 # 麦麦回答时选择主要回复模型1 模型的概率
model_v3_probability = 0.1 # 麦麦回答时选择次要回复模型2 模型的概率
model_r1_distill_probability = 0.1 # 麦麦回答时选择次要回复模型3 模型的概率
max_response_length = 1024 # 麦麦回答的最大token数
max_response_length = 1024 # 麦麦回答的最大token数
[memory]
build_memory_interval = 600 # 记忆构建间隔 单位秒 间隔越低,麦麦学习越多,但是冗余信息也会增多
memory_compress_rate = 0.1 # 记忆压缩率 控制记忆精简程度 建议保持默认,调高可以获得更多信息,但是冗余信息也会增多
memory_compress_rate = 0.1 # 记忆压缩率 控制记忆精简程度 建议保持默认,调高可以获得更多信息,但是冗余信息也会增多
forget_memory_interval = 600 # 记忆遗忘间隔 单位秒 间隔越低,麦麦遗忘越频繁,记忆更精简,但更难学习
memory_forget_time = 24 #多长时间后的记忆会被遗忘 单位小时
forget_memory_interval = 600 # 记忆遗忘间隔 单位秒 间隔越低,麦麦遗忘越频繁,记忆更精简,但更难学习
memory_forget_time = 24 #多长时间后的记忆会被遗忘 单位小时
memory_forget_percentage = 0.01 # 记忆遗忘比例 控制记忆遗忘程度 越大遗忘越多 建议保持默认
@ -78,43 +78,39 @@ memory_ban_words = [ #不希望记忆的词
]
[mood]
mood_update_interval = 1.0 # 情绪更新间隔 单位秒
mood_decay_rate = 0.95 # 情绪衰减率
mood_update_interval = 1.0 # 情绪更新间隔 单位秒
mood_decay_rate = 0.95 # 情绪衰减率
mood_intensity_factor = 1.0 # 情绪强度因子
[keywords_reaction] # 针对某个关键词作出反应
enable = true # 关键词反应功能的总开关
enable = true # 关键词反应功能的总开关
[[keywords_reaction.rules]] # 如果想要新增多个关键词直接复制本条修改keywords和reaction即可
enable = true # 是否启用此条为了人类在未来AI战争能更好地识别AIbushi默认开启
keywords = ["人机", "bot", "机器", "入机", "robot", "机器人"] # 会触发反应的关键词
enable = true # 是否启用此条为了人类在未来AI战争能更好地识别AIbushi默认开启
keywords = ["人机", "bot", "机器", "入机", "robot", "机器人"] # 会触发反应的关键词
reaction = "有人说你是人机或者机器人,否定这一事实,攻击或反问他。注意,只有认为你是机器人才回复,否则不要否认" # 触发之后添加的提示词
[[keywords_reaction.rules]] # 就像这样复制
enable = false # 仅作示例,不会触发
keywords = ["测试关键词回复","test",""]
enable = false # 仅作示例,不会触发
keywords = ["测试关键词回复", "test", ""]
reaction = "回答“测试成功”"
[chinese_typo]
enable = true # 是否启用中文错别字生成器
error_rate=0.006 # 单字替换概率
min_freq=7 # 最小字频阈值
tone_error_rate=0.2 # 声调错误概率
word_replace_rate=0.006 # 整词替换概率
enable = true # 是否启用中文错别字生成器
error_rate = 0.006 # 单字替换概率
min_freq = 7 # 最小字频阈值
tone_error_rate = 0.2 # 声调错误概率
word_replace_rate = 0.006 # 整词替换概率
[others]
enable_advance_output = true # 是否启用高级输出
enable_kuuki_read = true # 是否启用读空气功能
enable_debug_output = false # 是否启用调试输出
enable_friend_chat = false # 是否启用好友聊天
enable_kuuki_read = true # 是否启用读空气功能
enable_debug_output = false # 是否启用调试输出
enable_friend_chat = false # 是否启用好友聊天
[groups]
talk_allowed = [
123,
123,
] #可以回复消息的群
talk_frequency_down = [] #降低回复频率的群
ban_user_id = [] #禁止回复消息的QQ号
talk_allowed = { 123456 = 1.5, 789012 = 1.0, 345678 = 0.5 } # 允许对话的群号与对应的回复权重
ban_user_id = [] #禁止回复消息的QQ号
#V3
@ -134,8 +130,8 @@ ban_user_id = [] #禁止回复消息的QQ号
[model.llm_reasoning] #回复模型1 主要回复模型
name = "Pro/deepseek-ai/DeepSeek-R1"
provider = "SILICONFLOW"
pri_in = 0 #模型的输入价格(非必填,可以记录消耗)
pri_out = 0 #模型的输出价格(非必填,可以记录消耗)
pri_in = 0 #模型的输入价格(非必填,可以记录消耗)
pri_out = 0 #模型的输出价格(非必填,可以记录消耗)
[model.llm_reasoning_minor] #回复模型3 次要回复模型
@ -179,7 +175,6 @@ name = "Pro/Qwen/Qwen2-VL-7B-Instruct"
provider = "SILICONFLOW"
#嵌入模型
[model.embedding] #嵌入