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,