From c6f6b2487bc090ec6b6880fbdb179dab732d13b1 Mon Sep 17 00:00:00 2001 From: Dt8333 Date: Sun, 30 Nov 2025 10:49:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(imageCaption):=20=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=83=BD=E5=8A=9B=E5=88=A4=E6=96=AD=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E9=9C=80=E8=A6=81=E6=A0=87=E6=B3=A8=E5=9B=BE=E7=89=87?= =?UTF-8?q?=EF=BC=8C=E8=80=8C=E4=B8=8D=E6=98=AF=E5=85=A8=E9=83=A8=E6=A0=87?= =?UTF-8?q?=E6=B3=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #3770 --- packages/astrbot/process_llm_request.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/astrbot/process_llm_request.py b/packages/astrbot/process_llm_request.py index 4a680a040..319c72ec9 100644 --- a/packages/astrbot/process_llm_request.py +++ b/packages/astrbot/process_llm_request.py @@ -115,6 +115,18 @@ async def _request_img_caption( f"Cannot get image caption because provider `{provider_id}` is not exist.", ) + def _select_provider(self, event: AstrMessageEvent): + """选择使用的 LLM 提供商""" + sel_provider = event.get_extra("selected_provider") + _ctx = self.ctx + if sel_provider and isinstance(sel_provider, str): + provider = _ctx.get_provider_by_id(sel_provider) + if not provider: + logger.error(f"未找到指定的提供商: {sel_provider}。") + return provider + + return _ctx.get_using_provider(umo=event.unified_msg_origin) + async def process_llm_request(self, event: AstrMessageEvent, req: ProviderRequest): """在请求 LLM 前注入人格信息、Identifier、时间、回复内容等 System Prompt""" cfg: dict = self.ctx.get_config(umo=event.unified_msg_origin)[ @@ -165,7 +177,14 @@ async def process_llm_request(self, event: AstrMessageEvent, req: ProviderReques await self._ensure_persona(req, cfg, event.unified_msg_origin) # image caption - if img_cap_prov_id and req.image_urls: + if ( + img_cap_prov_id + and req.image_urls + and "image" + not in self._select_provider(event).provider_config.get( + "modalities", ["image"] + ) + ): await self._ensure_img_caption(req, cfg, img_cap_prov_id) # quote message processing