From e8b7841f5ab9b8bb8eacefc094e1b511396c8b38 Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Thu, 23 Oct 2025 00:45:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(emoji):=20=E4=BC=98=E5=8C=96=E8=A1=A8?= =?UTF-8?q?=E6=83=85=E5=88=86=E6=9E=90=E6=8F=90=E7=A4=BA=E8=AF=8D=E4=BB=A5?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E6=8F=8F=E8=BF=B0=E5=87=86=E7=A1=AE=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 本次更新针对表情包描述生成的两个关键环节优化了提示词(Prompt),以提高生成描述的质量和信息完整度。 1. 在初始描述生成中,新增了强制性规则,要求模型必须完整转述图片中包含的清晰文字,确保关键文本信息不被遗漏。 2. 重构了“点睛之笔”的精炼提示词,使其目标更明确(为AI后续处理服务),规则更具体(平衡客观与情感、包含核心文字等),并增加了示例,旨在生成更稳定、结构化的精炼描述。 --- src/chat/emoji_system/emoji_manager.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/chat/emoji_system/emoji_manager.py b/src/chat/emoji_system/emoji_manager.py index ef841b7b5..60c70bb26 100644 --- a/src/chat/emoji_system/emoji_manager.py +++ b/src/chat/emoji_system/emoji_manager.py @@ -969,7 +969,7 @@ class EmojiManager: image_base64_frames = get_image_manager().transform_gif(image_base64) if not image_base64_frames: raise RuntimeError("GIF表情包转换失败") - prompt = "这是一个GIF动图表情包的关键帧。请用不超过250字,详细描述它的核心内容:1. 动态画面展现了什么变化?2. 它传达了什么核心情绪或玩的是什么梗?3. 通常在什么场景下使用?请确保描述既包含关键信息,又能充分展现其内涵。" + prompt = "这是一个GIF动图表情包的关键帧。请用不超过250字,详细描述它的核心内容:1. 动态画面展现了什么变化?2. 它传达了什么核心情绪或玩的是什么梗?3. 通常在什么场景下使用?请确保描述既包含关键信息,又能充分展现其内涵。重要规则:如果图片中包含清晰的文字,请务必完整地转述出来,这部分文字不计入250字限制。" description = None for i in range(3): try: @@ -985,7 +985,7 @@ class EmojiManager: logger.warning("表情包识别失败,将在1秒后重试...") await asyncio.sleep(1) else: - prompt = "这是一个表情包。请用不超过250字,详细描述它的核心内容:1. 画面描绘了什么?2. 它传达了什么核心情绪或玩的是什么梗?3. 通常在什么场景下使用?请确保描述既包含关键信息,又能充分展现其内涵。" + prompt = "这是一个表情包。请用不超过250字,详细描述它的核心内容:1. 画面描绘了什么?2. 它传达了什么核心情绪或玩的是什么梗?3. 通常在什么场景下使用?请确保描述既包含关键信息,又能充分展现其内涵。重要规则:如果图片中包含清晰的文字,请务必完整地转述出来,这部分文字不计入250字限制。" description = None for i in range(3): try: @@ -1058,7 +1058,7 @@ class EmojiManager: if emotions: # 只有在成功提取关键词后才进行精炼 logger.info("[自然语言精炼] 开始生成“点睛之笔”的自然语言描述") refine_prompt = f""" - 你的任务是为一张表情包写一句简洁、自然的描述,就像你在向朋友解释这张图是什么意思一样。 + 你的任务是为一张表情包生成一句简洁的精炼描述,用于后续的AI模型处理。 这里是关于这个表情包的分析信息: # 详细描述 @@ -1068,13 +1068,17 @@ class EmojiManager: {emotions_text} # 你的任务 - 请结合以上信息,用一句**一针见血**的自然语言,概括出这个表情包的核心内容。 + 请结合以上所有信息,用一句话概括出这个表情包的核心内容,既要描述客观事实,也要点明其传达的核心情绪。 # 规则 (非常重要!) - 1. **必须包含图中的核心文字**。 - 2. **必须描述出主角的核心表情和动作**。 - 3. **风格要求**:简单、直接、口语化,就像一个普通人看到这张图后的第一反应。 - 4. **输出格式**:**请直接返回这句描述,不要添加任何前缀、标题或多余的解释。** + 1. **平衡客观与情感**:首先客观描述画面中的主体、表情和动作,然后点出其最主要的情绪(如:喜悦、悲伤、讽刺等)。 + 2. **包含核心文字**:如果表情包中有文字,必须将文字完整地包含在描述中。 + 3. **简洁精炼**:用最少的文字概括最多的信息。 + 4. **输出格式**:**请直接返回这句描述,不要添加任何前缀、标题、引号或多余的解释。** + + 示例: + - 原始信息:一只猫戴着墨镜,关键词是“酷、得意”。 + - 正确输出:一只戴着黑色墨镜的猫,表情得意。 """ refined_description, _ = await self.llm_emotion_judge.generate_response_async( refine_prompt, temperature=0.7, max_tokens=100