From 767d5b5ced7cda34b61d3985a947fd5802042cd2 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sun, 21 Sep 2025 18:59:29 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=E8=AF=86=E5=88=AB=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=9A=84=E5=9B=BE=E7=89=87=E6=97=B6=E4=BC=98?= =?UTF-8?q?=E5=85=88=E4=BD=BF=E7=94=A8=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=BD=AC=E8=BF=B0=E6=8F=90=E4=BE=9B=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes: #2821 --- packages/astrbot/main.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/astrbot/main.py b/packages/astrbot/main.py index c8d4d0d8a..5678f3b87 100644 --- a/packages/astrbot/main.py +++ b/packages/astrbot/main.py @@ -1236,6 +1236,7 @@ async def decorate_llm_req(self, event: AstrMessageEvent, req: ProviderRequest): ) req.system_prompt += f"\nCurrent datetime: {current_time}\n" + img_cap_prov_id = cfg.get("default_image_caption_provider_id") if req.conversation: # persona inject persona_id = req.conversation.persona_id or cfg.get("default_personality") @@ -1276,7 +1277,6 @@ async def decorate_llm_req(self, event: AstrMessageEvent, req: ProviderRequest): logger.debug(f"Tool set for persona {persona_id}: {toolset.names()}") # image caption - img_cap_prov_id = cfg.get("default_image_caption_provider_id") if img_cap_prov_id and req.image_urls: img_cap_prompt = cfg.get( "image_caption_prompt", "Please describe the image." @@ -1313,9 +1313,14 @@ async def decorate_llm_req(self, event: AstrMessageEvent, req: ProviderRequest): break if image_seg: try: - if prov := self.context.get_using_provider( - event.unified_msg_origin - ): + prov = None + if img_cap_prov_id: + prov = self.context.get_provider_by_id(img_cap_prov_id) + if prov is None: + prov = self.context.get_using_provider( + event.unified_msg_origin + ) + if prov: llm_resp = await prov.text_chat( prompt="Please describe the image content.", image_urls=[await image_seg.convert_to_file_path()], From 084825dfcd945e358206c958623255c2f3f8ebb9 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sun, 21 Sep 2025 19:03:16 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=BB=A5=E5=A4=84=E7=90=86=E6=9C=AA=E6=89=BE?= =?UTF-8?q?=E5=88=B0=E5=9B=BE=E7=89=87=E6=A0=87=E9=A2=98=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E8=80=85=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/astrbot/main.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/astrbot/main.py b/packages/astrbot/main.py index 5678f3b87..97f997ac5 100644 --- a/packages/astrbot/main.py +++ b/packages/astrbot/main.py @@ -1329,6 +1329,8 @@ async def decorate_llm_req(self, event: AstrMessageEvent, req: ProviderRequest): req.system_prompt += ( f"Image Caption: {llm_resp.completion_text}\n" ) + else: + logger.warning("No provider found for image captioning.") except BaseException as e: logger.error(f"处理引用图片失败: {e}") From b9543a29f4c4e271ed88128652613545104beb0c Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sun, 21 Sep 2025 20:52:08 +0800 Subject: [PATCH 3/3] style: format code --- packages/astrbot/main.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/astrbot/main.py b/packages/astrbot/main.py index 97f997ac5..5f92170df 100644 --- a/packages/astrbot/main.py +++ b/packages/astrbot/main.py @@ -1317,9 +1317,7 @@ async def decorate_llm_req(self, event: AstrMessageEvent, req: ProviderRequest): if img_cap_prov_id: prov = self.context.get_provider_by_id(img_cap_prov_id) if prov is None: - prov = self.context.get_using_provider( - event.unified_msg_origin - ) + prov = self.context.get_using_provider(event.unified_msg_origin) if prov: llm_resp = await prov.text_chat( prompt="Please describe the image content.",