From fea3285d2012d572a856a0bdf1aaf692eeb15fc7 Mon Sep 17 00:00:00 2001 From: tcmofashi Date: Thu, 6 Mar 2025 06:30:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20emoji=E9=80=89=E6=8B=A9=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/emoji_manager.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/plugins/chat/emoji_manager.py b/src/plugins/chat/emoji_manager.py index 2a74e8b02..f2bee4fb5 100644 --- a/src/plugins/chat/emoji_manager.py +++ b/src/plugins/chat/emoji_manager.py @@ -51,6 +51,7 @@ class EmojiManager: self.db = Database.get_instance() self._scan_task = None self.llm = LLM_request(model=global_config.vlm, temperature=0.3, max_tokens=1000) + self.lm = LLM_request(model=global_config.llm_reasoning_minor, max_tokens=1000) def _ensure_emoji_dir(self): """确保表情存储目录存在""" @@ -106,7 +107,8 @@ class EmojiManager: self._ensure_db() # 获取文本的embedding - text_embedding = get_embedding(text) + text_for_search= await self._get_kimoji_for_text(text) + text_embedding = get_embedding(text_for_search) if not text_embedding: logger.error("无法获取文本的embedding") return None @@ -202,6 +204,18 @@ class EmojiManager: logger.error(f"获取标签失败: {str(e)}") return None + async def _get_kimoji_for_text(self, text:str): + try: + prompt = f'这是{global_config.BOT_NICKNAME}将要发送的消息内容:\n{text}\n若要为其配上表情包,请你输出这个表情包应该表达怎样的情感,应该给人什么样的感觉,不要太简洁也不要太长,注意不要输出任何对内容的分析内容,只输出\"一种什么样的感觉\"中间的形容词部分。' + + content, _ = await self.llm.generate_response_async(prompt) + logger.info(f"输出描述: {content}") + return content + + except Exception as e: + logger.error(f"获取标签失败: {str(e)}") + return None + async def _compress_image(self, image_path: str, target_size: int = 0.8 * 1024 * 1024) -> Optional[str]: """压缩图片并返回base64编码 Args: