From 70c12e788e632657be6e1240f685430caa4ccff7 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Mon, 20 Jan 2025 10:22:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20LLM=E9=A2=9D=E5=A4=96=E5=94=A4=E9=86=92?= =?UTF-8?q?=E8=AF=8D=E4=B8=8E=E6=9C=BA=E5=99=A8=E4=BA=BA=E5=94=A4=E9=86=92?= =?UTF-8?q?=E8=AF=8D=E5=86=B2=E7=AA=81=E6=97=B6=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pipeline/process_stage/method/llm_request.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/astrbot/core/pipeline/process_stage/method/llm_request.py b/astrbot/core/pipeline/process_stage/method/llm_request.py index 36ebae140..2cfa80437 100644 --- a/astrbot/core/pipeline/process_stage/method/llm_request.py +++ b/astrbot/core/pipeline/process_stage/method/llm_request.py @@ -17,6 +17,13 @@ class LLMRequestSubStage(Stage): async def initialize(self, ctx: PipelineContext) -> None: self.ctx = ctx + self.bot_wake_prefixs = ctx.astrbot_config['wake_prefix'] # list + self.provider_wake_prefix = ctx.astrbot_config['provider_settings']['wake_prefix'] # str + + for bwp in self.bot_wake_prefixs: + if self.provider_wake_prefix.startswith(bwp): + logger.info(f"识别 LLM 聊天额外唤醒前缀 {self.provider_wake_prefix} 以机器人唤醒前缀 {bwp} 开头,已自动去除。") + self.provider_wake_prefix = self.provider_wake_prefix[len(bwp):] async def process(self, event: AstrMessageEvent, _nested: bool = False) -> Union[None, AsyncGenerator[None, None]]: req: ProviderRequest = None @@ -30,10 +37,10 @@ class LLMRequestSubStage(Stage): assert isinstance(req, ProviderRequest), "provider_request 必须是 ProviderRequest 类型。" else: req = ProviderRequest(prompt="", image_urls=[]) - if self.ctx.astrbot_config['provider_settings']['wake_prefix']: - if not event.message_str.startswith(self.ctx.astrbot_config['provider_settings']['wake_prefix']): + if self.provider_wake_prefix: + if not event.message_str.startswith(self.provider_wake_prefix): return - req.prompt = event.message_str[len(self.ctx.astrbot_config['provider_settings']['wake_prefix']):] + req.prompt = event.message_str[len(self.provider_wake_prefix):] req.func_tool = self.ctx.plugin_manager.context.get_llm_tool_manager() for comp in event.message_obj.message: if isinstance(comp, Image):