From 310415bea982b9bbce563a51d3be47def7bab5ed Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Thu, 6 Feb 2025 18:49:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=81=8A=E5=A4=A9=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E5=9B=BE=E5=83=8F=E8=BD=AC=E8=BF=B0=E6=94=AF=E6=8C=81=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=20Provider=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/config/default.py | 7 +++++++ packages/astrbot/long_term_memory.py | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/astrbot/core/config/default.py b/astrbot/core/config/default.py index 0c475bf60..a6933a767 100644 --- a/astrbot/core/config/default.py +++ b/astrbot/core/config/default.py @@ -57,6 +57,7 @@ DEFAULT_CONFIG = { "group_icl_enable": False, "group_message_max_cnt": 300, "image_caption": False, + "image_caption_provider_id": "", "image_caption_prompt": "Please describe the image using Chinese.", "active_reply": { "enable": False, @@ -723,6 +724,12 @@ CONFIG_METADATA_2 = { "obvious_hint": True, "hint": "启用后,当接收到图片消息时,会使用模型先将图片转述为文字再进行后续处理。推荐使用 gpt-4o-mini 模型。", }, + "image_caption_provider_id": { + "description": "图像转述提供商 ID", + "type": "string", + "obvious_hint": True, + "hint": "可选。图像转述提供商 ID。如为空将选择聊天使用的提供商。", + }, "image_caption_prompt": { "description": "图像转述提示词", "type": "string" diff --git a/packages/astrbot/long_term_memory.py b/packages/astrbot/long_term_memory.py index 527bb8ead..a55df03ef 100644 --- a/packages/astrbot/long_term_memory.py +++ b/packages/astrbot/long_term_memory.py @@ -25,6 +25,7 @@ class LongTermMemory: self.max_cnt = 300 self.image_caption = self.config["image_caption"] self.image_caption_prompt = self.config["image_caption_prompt"] + self.image_caption_provider_id = self.config["image_caption_provider_id"] self.active_reply = self.config["active_reply"] self.enable_active_reply = self.active_reply.get("enable", False) @@ -42,7 +43,13 @@ class LongTermMemory: return cnt async def get_image_caption(self, image_url: str) -> str: - provider = self.context.get_using_provider() + + if not self.image_caption_provider_id: + provider = self.context.get_using_provider() + else: + provider = self.context.get_provider_by_id(self.image_caption_provider_id) + if not provider: + raise Exception(f"没有找到 ID 为 {self.image_caption_provider_id} 的提供商") response = await provider.text_chat( prompt=self.image_caption_prompt, session_id=uuid.uuid4().hex,