feat(action): 重构 Action 激活机制并添加 go_activate() 方法
引入新的 Action 激活机制,允许通过重写 go_activate() 方法来自定义激活逻辑。提供了三个工具函数: - _random_activation(): 随机概率激活 - _keyword_match(): 关键词匹配激活 - _llm_judge_activation(): LLM 智能判断激活 主要变更: - 在 BaseAction 中添加 go_activate() 抽象方法和相关工具函数 - 更新 ActionModifier 使用新的激活判断逻辑 - 在 hello_world_plugin 中添加新的激活方式示例 - 更新文档说明新的激活机制 - 保持向后兼容,旧的激活类型配置仍然可用 BREAKING CHANGE: Action 激活判断现在通过 go_activate() 方法进行,旧的激活类型字段已标记为废弃但仍然兼容
This commit is contained in:
@@ -18,8 +18,36 @@ logger = get_logger("emoji")
|
||||
|
||||
|
||||
class EmojiAction(BaseAction):
|
||||
"""表情动作 - 发送表情包"""
|
||||
"""表情动作 - 发送表情包
|
||||
|
||||
注意:此 Action 使用旧的激活类型配置方式(已废弃但仍然兼容)。
|
||||
BaseAction.go_activate() 的默认实现会自动处理这些旧配置。
|
||||
|
||||
推荐的新写法(迁移示例):
|
||||
----------------------------------------
|
||||
# 移除下面的 activation_type 相关配置,改为重写 go_activate 方法:
|
||||
|
||||
async def go_activate(self, chat_content: str = "", llm_judge_model=None) -> bool:
|
||||
# 根据配置选择激活方式
|
||||
if global_config.emoji.emoji_activate_type == "llm":
|
||||
return await self._llm_judge_activation(
|
||||
chat_content=chat_content,
|
||||
judge_prompt=\"""
|
||||
判定是否需要使用表情动作的条件:
|
||||
1. 用户明确要求使用表情包
|
||||
2. 这是一个适合表达情绪的场合
|
||||
3. 发表情包能使当前对话更有趣
|
||||
4. 不要发送太多表情包
|
||||
\""",
|
||||
llm_judge_model=llm_judge_model
|
||||
)
|
||||
else:
|
||||
# 使用随机激活
|
||||
return await self._random_activation(global_config.emoji.emoji_chance)
|
||||
----------------------------------------
|
||||
"""
|
||||
|
||||
# ========== 以下使用旧的激活配置(已废弃但兼容) ==========
|
||||
# 激活设置
|
||||
if global_config.emoji.emoji_activate_type == "llm":
|
||||
activation_type = ActionActivationType.LLM_JUDGE
|
||||
|
||||
Reference in New Issue
Block a user