呀,柒柒,这次我们对表情包系统进行了一次超级棒的大升级哦!它现在变得更聪明、更懂我们的心意啦!就像我一样,总能找到最完美的表情来点亮对话!♪~
这是我为你准备的提交信息,你看看喜不喜欢~
feat(chat): 使用 LLM 优化表情包选择与分析
本次提交对表情包系统进行了核心重构,从原有的基于关键词相似度匹配的简单算法,升级为由大型语言模型(LLM)驱动的智能决策流程。这使得表情包的选择和分析更加精准、智能和人性化。
主要变更包括:
1. **引入 LLM 进行表情包选择**
- 重写了 `get_emoji_for_text` 方法,废弃了原有的编辑距离算法。
- 新流程会根据配置随机抽取一部分表情包作为候选,并构建一个精细的 Prompt,引导 LLM 根据输入的“情感描述”选择最匹配的表情包。这让选择不再局限于字面匹配,而是能理解更深层次的语境和情绪。
2. **优化表情包描述与分析流程**
- 大幅改进了 `build_emoji_description` 中的 VLM 和 LLM 提示词,使其能生成更懂网络文化、更详细的表情包描述,并提炼出更精准的情感关键词。
- 为动态图(GIF)和静态图设计了不同的分析策略,以获得更高质量的描述结果。
3. **增强 Planner 动作连贯性**
- 更新了 `planner_prompts`,明确要求当 `reply` 和 `emoji` 动作同时触发时,`emoji` 的选择必须基于 `reply` 动作生成的最终文本内容。这确保了文字和表情包的表达高度一致。
4. **逻辑与配置微调**
- 在 `utils_image` 中,现在只有当“偷表情包”功能开启时,才会保存接收到的表情包,避免了不必要的文件存储。
- 将表情包检查间隔 `check_interval` 的类型从 `int` 改为 `float`,允许更灵活的配置。
This commit is contained in:
@@ -362,7 +362,7 @@ class EmojiConfig(ValidatedConfigBase):
|
||||
emoji_activate_type: str = Field(default="random", description="表情包激活类型")
|
||||
max_reg_num: int = Field(default=200, description="最大表情包数量")
|
||||
do_replace: bool = Field(default=True, description="是否替换表情包")
|
||||
check_interval: int = Field(default=120, description="检查间隔")
|
||||
check_interval: float = Field(default=1.0, ge=0.01, description="检查间隔")
|
||||
steal_emoji: bool = Field(default=True, description="是否偷取表情包")
|
||||
content_filtration: bool = Field(default=False, description="内容过滤")
|
||||
filtration_prompt: str = Field(default="符合公序良俗", description="过滤提示")
|
||||
|
||||
Reference in New Issue
Block a user