加入了二走逻辑
This commit is contained in:
@@ -413,7 +413,6 @@ class BaseAction(ABC):
|
|||||||
return False, f"未找到Action组件信息: {action_name}"
|
return False, f"未找到Action组件信息: {action_name}"
|
||||||
|
|
||||||
plugin_config = component_registry.get_plugin_config(component_info.plugin_name)
|
plugin_config = component_registry.get_plugin_config(component_info.plugin_name)
|
||||||
|
|
||||||
# 3. 实例化被调用的Action
|
# 3. 实例化被调用的Action
|
||||||
action_instance = action_class(
|
action_instance = action_class(
|
||||||
action_data=called_action_data,
|
action_data=called_action_data,
|
||||||
|
|||||||
@@ -60,10 +60,12 @@ class ReminderTask(AsyncTask):
|
|||||||
logger.info(f"执行提醒任务: 给 {self.target_user_name} 发送关于 '{self.event_details}' 的提醒")
|
logger.info(f"执行提醒任务: 给 {self.target_user_name} 发送关于 '{self.event_details}' 的提醒")
|
||||||
|
|
||||||
extra_info = f"现在是提醒时间,请你以一种符合你人设的、俏皮的方式提醒 {self.target_user_name}。\n提醒内容: {self.event_details}\n设置提醒的人: {self.creator_name}"
|
extra_info = f"现在是提醒时间,请你以一种符合你人设的、俏皮的方式提醒 {self.target_user_name}。\n提醒内容: {self.event_details}\n设置提醒的人: {self.creator_name}"
|
||||||
|
last_message = self.chat_stream.context_manager.context.get_last_message()
|
||||||
|
reply_message_dict = last_message.flatten() if last_message else None
|
||||||
success, reply_set, _ = await generator_api.generate_reply(
|
success, reply_set, _ = await generator_api.generate_reply(
|
||||||
chat_stream=self.chat_stream,
|
chat_stream=self.chat_stream,
|
||||||
extra_info=extra_info,
|
extra_info=extra_info,
|
||||||
reply_message=self.chat_stream.context_manager.context.get_last_message().to_dict(),
|
reply_message=reply_message_dict,
|
||||||
request_type="plugin.reminder.remind_message",
|
request_type="plugin.reminder.remind_message",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -217,7 +219,6 @@ class SetEmojiLikeAction(BaseAction):
|
|||||||
emoji_options.append(match.group(1))
|
emoji_options.append(match.group(1))
|
||||||
|
|
||||||
action_parameters = {
|
action_parameters = {
|
||||||
"emoji": f"要回应的表情,必须从以下表情中选择: {', '.join(emoji_options)}",
|
|
||||||
"set": "是否设置回应 (True/False)",
|
"set": "是否设置回应 (True/False)",
|
||||||
}
|
}
|
||||||
action_require = [
|
action_require = [
|
||||||
@@ -260,15 +261,50 @@ class SetEmojiLikeAction(BaseAction):
|
|||||||
return False, "未提供表情"
|
return False, "未提供表情"
|
||||||
logger.info(f"设置表情回应: {emoji_input}, 是否设置: {set_like}")
|
logger.info(f"设置表情回应: {emoji_input}, 是否设置: {set_like}")
|
||||||
|
|
||||||
emoji_id = get_emoji_id(emoji_input)
|
logger.info(f"无法直接匹配表情 '{emoji_input}',启动二级LLM选择...")
|
||||||
|
available_models = llm_api.get_available_models()
|
||||||
|
if "utils_small" not in available_models:
|
||||||
|
logger.error("未找到 'utils_small' 模型配置,无法选择表情")
|
||||||
|
return False, "表情选择功能配置错误"
|
||||||
|
|
||||||
|
model_to_use = available_models["utils_small"]
|
||||||
|
|
||||||
|
# 获取最近的对话历史作为上下文
|
||||||
|
context_text = ""
|
||||||
|
if self.action_message:
|
||||||
|
context_text = self.action_message.get("processed_plain_text", "")
|
||||||
|
else:
|
||||||
|
logger.error("无法找到动作选择的原始消息")
|
||||||
|
return False, "无法找到动作选择的原始消息"
|
||||||
|
|
||||||
|
prompt = (
|
||||||
|
f"根据以下这条消息,从列表中选择一个最合适的表情名称来回应这条消息。\n"
|
||||||
|
f"消息内容: '{context_text}'\n"
|
||||||
|
f"可用表情列表: {', '.join(self.emoji_options)}\n"
|
||||||
|
f"你的任务是:只输出你选择的表情的名称,不要包含任何其他文字或标点。\n"
|
||||||
|
f"例如,如果觉得应该用'赞',就只输出'赞'。"
|
||||||
|
)
|
||||||
|
|
||||||
|
success, response, _, _ = await llm_api.generate_with_model(
|
||||||
|
prompt, model_config=model_to_use, request_type="plugin.set_emoji_like.select_emoji"
|
||||||
|
)
|
||||||
|
|
||||||
|
if not success or not response:
|
||||||
|
logger.error(f"二级LLM未能为 '{emoji_input}' 选择有效的表情。")
|
||||||
|
return False, f"无法为 '{emoji_input}' 找到合适的表情。"
|
||||||
|
|
||||||
|
chosen_emoji_name = response.strip()
|
||||||
|
logger.info(f"二级LLM选择的表情是: '{chosen_emoji_name}'")
|
||||||
|
emoji_id = get_emoji_id(chosen_emoji_name)
|
||||||
|
|
||||||
if not emoji_id:
|
if not emoji_id:
|
||||||
logger.error(f"找不到表情: '{emoji_input}'。请从可用列表中选择。")
|
logger.error(f"二级LLM选择的表情 '{chosen_emoji_name}' 仍然无法匹配到有效的表情ID。")
|
||||||
await self.store_action_info(
|
await self.store_action_info(
|
||||||
action_build_into_prompt=True,
|
action_build_into_prompt=True,
|
||||||
action_prompt_display=f"执行了set_emoji_like动作:{self.action_name},失败: 找不到表情: '{emoji_input}'",
|
action_prompt_display=f"执行了set_emoji_like动作:{self.action_name},失败: 找不到表情: '{chosen_emoji_name}'",
|
||||||
action_done=False,
|
action_done=False,
|
||||||
)
|
)
|
||||||
return False, f"找不到表情: '{emoji_input}'。请从可用列表中选择。"
|
return False, f"找不到表情: '{chosen_emoji_name}'。"
|
||||||
|
|
||||||
# 4. 使用适配器API发送命令
|
# 4. 使用适配器API发送命令
|
||||||
if not message_id:
|
if not message_id:
|
||||||
|
|||||||
Reference in New Issue
Block a user