diff --git a/addons/dashboard/helper.py b/addons/dashboard/helper.py index f4d0e6e09..875a70277 100644 --- a/addons/dashboard/helper.py +++ b/addons/dashboard/helper.py @@ -197,6 +197,14 @@ class DashBoardHelper(): value=config['direct_message_mode'], path="direct_message_mode", ), + DashBoardConfig( + config_type="item", + val_type="string", + name="LLM 唤醒词", + description="如果不为空, 那么只有当消息以此词开头时,才会调用大语言模型进行回复。如设置为 /chat,那么只有当消息以 /chat 开头时,才会调用大语言模型进行回复。", + value=config['llm_wake_prefix'], + path="llm_wake_prefix", + ) ] ) diff --git a/cores/qqbot/core.py b/cores/qqbot/core.py index 57c8e4d21..797944754 100644 --- a/cores/qqbot/core.py +++ b/cores/qqbot/core.py @@ -54,6 +54,7 @@ chosen_provider = None # 语言模型对象 llm_instance: dict[str, Provider] = {} llm_command_instance: dict[str, Command] = {} +llm_wake_prefix = "" # 百度内容审核实例 baidu_judge = None @@ -240,7 +241,9 @@ def initBot(cfg): nick_qq = tuple(nick_qq) _global_object.nick = nick_qq - thread_inst = None + # 语言模型唤醒词 + global llm_wake_prefix + llm_wake_prefix = cc.get("llm_wake_prefix", "") gu.log("--------加载插件--------", gu.LEVEL_INFO, fg=gu.FG_COLORS['yellow']) # 加载插件 @@ -481,7 +484,7 @@ async def oper_msg(message: Union[GroupMessage, FriendMessage, GuildMessage, Nak for i in uw.unfit_words_q: matches = re.match(i, message_str.strip(), re.I | re.M) if matches: - return MessageResult(f"你的提问得到的回复未通过【自有关键词拦截】服务, 不予回复。") + return MessageResult(f"你的提问得到的回复未通过【默认关键词拦截】服务, 不予回复。") if baidu_judge != None: check, msg = baidu_judge.judge(message_str) if not check: @@ -489,6 +492,8 @@ async def oper_msg(message: Union[GroupMessage, FriendMessage, GuildMessage, Nak if chosen_provider == None: return MessageResult(f"管理员未启动任何语言模型或者语言模型初始化时失败。") try: + if llm_wake_prefix != "" and not message_str.startswith(llm_wake_prefix): + return # check image url image_url = None for comp in message.message: diff --git a/util/cmd_config.py b/util/cmd_config.py index 610a323b7..52e256268 100644 --- a/util/cmd_config.py +++ b/util/cmd_config.py @@ -108,6 +108,7 @@ def init_astrbot_config_items(): cc.init_attributes("admin_qq", "") cc.init_attributes("admin_qqchan", "") cc.init_attributes("llm_env_prompt", "> hint: 末尾根据内容和心情添加 1-2 个emoji") + cc.init_attributes("llm_wake_prefix", "") cc.init_attributes("default_personality_str", "") cc.init_attributes("openai_image_generate", { "model": "dall-e-3", @@ -119,4 +120,5 @@ def init_astrbot_config_items(): cc.init_attributes("https_proxy", "") cc.init_attributes("dashboard_username", "") cc.init_attributes("dashboard_password", "") + # cc.init_attributes(["qq_forward_mode"], False)