From 39bb99cef3e4035a695f00b062843a06cb841648 Mon Sep 17 00:00:00 2001 From: ChangingSelf Date: Sun, 9 Mar 2025 11:07:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E9=94=99=E5=88=AB=E5=AD=97=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=8F=90=E5=8F=96=E5=88=B0=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E4=B8=80=E5=8F=A5=E4=B8=80=E4=B8=AA=E9=94=99=E5=88=AB=E5=AD=97?= =?UTF-8?q?=E5=A4=AA=E7=83=A6=E4=BA=86=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/config.py | 15 +++++++++++++++ src/plugins/chat/utils.py | 17 ++++++++++------- template/bot_config_template.toml | 7 +++++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/plugins/chat/config.py b/src/plugins/chat/config.py index 2b0492de5..180cce568 100644 --- a/src/plugins/chat/config.py +++ b/src/plugins/chat/config.py @@ -66,6 +66,12 @@ class BotConfig: keywords_reaction_rules = [] # 关键词回复规则 + chinese_typo_enable=True # 是否启用中文错别字生成器 + chinese_typo_error_rate=0.03 # 单字替换概率 + chinese_typo_min_freq=7 # 最小字频阈值 + chinese_typo_tone_error_rate=0.2 # 声调错误概率 + chinese_typo_word_replace_rate=0.02 # 整词替换概率 + # 默认人设 PROMPT_PERSONALITY=[ "曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", @@ -203,6 +209,15 @@ class BotConfig: if keywords_reaction_config.get("enable", False): config.keywords_reaction_rules = keywords_reaction_config.get("rules", config.keywords_reaction_rules) + if "chinese_typo_generator" in toml_dict: + # 读取中文错别字生成器配置 + chinese_typo_generator_config = toml_dict["chinese_typo_generator"] + config.chinese_typo_enable = chinese_typo_generator_config.get("enable", config.chinese_typo_enable) + config.chinese_typo_error_rate = chinese_typo_generator_config.get("error_rate", config.chinese_typo_error_rate) + config.chinese_typo_min_freq = chinese_typo_generator_config.get("min_freq", config.chinese_typo_min_freq) + config.chinese_typo_tone_error_rate = chinese_typo_generator_config.get("tone_error_rate", config.chinese_typo_tone_error_rate) + config.chinese_typo_word_replace_rate = chinese_typo_generator_config.get("word_replace_rate", config.chinese_typo_word_replace_rate) + # 群组配置 if "groups" in toml_dict: groups_config = toml_dict["groups"] diff --git a/src/plugins/chat/utils.py b/src/plugins/chat/utils.py index b2583e86f..e0e06118c 100644 --- a/src/plugins/chat/utils.py +++ b/src/plugins/chat/utils.py @@ -330,13 +330,16 @@ def process_llm_response(text: str) -> List[str]: print(f"回复过长 ({len(text)} 字符),返回默认回复") return ['懒得说'] # 处理长消息 - typo_generator = ChineseTypoGenerator( - error_rate=0.03, - min_freq=7, - tone_error_rate=0.2, - word_replace_rate=0.02 - ) - typoed_text = typo_generator.create_typo_sentence(text)[0] + if global_config.chinese_typo_enable: + typo_generator = ChineseTypoGenerator( + error_rate=global_config.chinese_typo_error_rate, + min_freq=global_config.chinese_typo_min_freq, + tone_error_rate=global_config.chinese_typo_tone_error_rate, + word_replace_rate=global_config.chinese_typo_word_replace_rate + ) + typoed_text = typo_generator.create_typo_sentence(text)[0] + else: + typoed_text = text sentences = split_into_sentences_w_remove_punctuation(typoed_text) # 检查分割后的消息数量是否过多(超过3条) if len(sentences) > 4: diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index 4f357dec4..9709ebbdd 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -64,6 +64,13 @@ enable = false # 仅作示例,不会触发 keywords = ["测试关键词回复","test",""] reaction = "回答“测试成功”" +[chinese_typo] +enable = true # 是否启用中文错别字生成器 +error_rate=0.03 # 单字替换概率 +min_freq=7 # 最小字频阈值 +tone_error_rate=0.2 # 声调错误概率 +word_replace_rate=0.02 # 整词替换概率 + [others] enable_advance_output = true # 是否启用高级输出 enable_kuuki_read = true # 是否启用读空气功能