feat(expression): 增强表达学习与选择系统的健壮性和智能匹配
- 改进表达学习器的提示词格式规范,增强LLM输出解析的容错性 - 优化表达选择器的模型预测模式,添加情境提取和模糊匹配机制 - 增强StyleLearner的错误处理和日志记录,提高训练和预测的稳定性 - 改进流循环管理器的日志输出,避免重复信息刷屏 - 扩展SendAPI的消息查找功能,支持DatabaseMessages对象兼容 - 添加智能回退机制,当模型预测失败时自动切换到经典模式 - 优化数据库查询逻辑,支持跨聊天流的表达方式共享 BREAKING CHANGE: 表达选择器的模型预测模式现在需要情境提取器配合使用,旧版本配置可能需要更新依赖关系
This commit is contained in:
@@ -108,52 +108,79 @@ def message_dict_to_message_recv(message_dict: dict[str, Any]) -> MessageRecv |
|
||||
"""查找要回复的消息
|
||||
|
||||
Args:
|
||||
message_dict: 消息字典
|
||||
message_dict: 消息字典或 DatabaseMessages 对象
|
||||
|
||||
Returns:
|
||||
Optional[MessageRecv]: 找到的消息,如果没找到则返回None
|
||||
"""
|
||||
# 兼容 DatabaseMessages 对象和字典
|
||||
if isinstance(message_dict, dict):
|
||||
user_platform = message_dict.get("user_platform", "")
|
||||
user_id = message_dict.get("user_id", "")
|
||||
user_nickname = message_dict.get("user_nickname", "")
|
||||
user_cardname = message_dict.get("user_cardname", "")
|
||||
chat_info_group_id = message_dict.get("chat_info_group_id")
|
||||
chat_info_group_platform = message_dict.get("chat_info_group_platform", "")
|
||||
chat_info_group_name = message_dict.get("chat_info_group_name", "")
|
||||
chat_info_platform = message_dict.get("chat_info_platform", "")
|
||||
message_id = message_dict.get("message_id") or message_dict.get("chat_info_message_id") or message_dict.get("id")
|
||||
time_val = message_dict.get("time")
|
||||
additional_config = message_dict.get("additional_config")
|
||||
processed_plain_text = message_dict.get("processed_plain_text")
|
||||
else:
|
||||
# DatabaseMessages 对象
|
||||
user_platform = getattr(message_dict, "user_platform", "")
|
||||
user_id = getattr(message_dict, "user_id", "")
|
||||
user_nickname = getattr(message_dict, "user_nickname", "")
|
||||
user_cardname = getattr(message_dict, "user_cardname", "")
|
||||
chat_info_group_id = getattr(message_dict, "chat_info_group_id", None)
|
||||
chat_info_group_platform = getattr(message_dict, "chat_info_group_platform", "")
|
||||
chat_info_group_name = getattr(message_dict, "chat_info_group_name", "")
|
||||
chat_info_platform = getattr(message_dict, "chat_info_platform", "")
|
||||
message_id = getattr(message_dict, "message_id", None)
|
||||
time_val = getattr(message_dict, "time", None)
|
||||
additional_config = getattr(message_dict, "additional_config", None)
|
||||
processed_plain_text = getattr(message_dict, "processed_plain_text", "")
|
||||
|
||||
# 构建MessageRecv对象
|
||||
user_info = {
|
||||
"platform": message_dict.get("user_platform", ""),
|
||||
"user_id": message_dict.get("user_id", ""),
|
||||
"user_nickname": message_dict.get("user_nickname", ""),
|
||||
"user_cardname": message_dict.get("user_cardname", ""),
|
||||
"platform": user_platform,
|
||||
"user_id": user_id,
|
||||
"user_nickname": user_nickname,
|
||||
"user_cardname": user_cardname,
|
||||
}
|
||||
|
||||
group_info = {}
|
||||
if message_dict.get("chat_info_group_id"):
|
||||
if chat_info_group_id:
|
||||
group_info = {
|
||||
"platform": message_dict.get("chat_info_group_platform", ""),
|
||||
"group_id": message_dict.get("chat_info_group_id", ""),
|
||||
"group_name": message_dict.get("chat_info_group_name", ""),
|
||||
"platform": chat_info_group_platform,
|
||||
"group_id": chat_info_group_id,
|
||||
"group_name": chat_info_group_name,
|
||||
}
|
||||
|
||||
format_info = {"content_format": "", "accept_format": ""}
|
||||
template_info = {"template_items": {}}
|
||||
|
||||
message_info = {
|
||||
"platform": message_dict.get("chat_info_platform", ""),
|
||||
"message_id": message_dict.get("message_id")
|
||||
or message_dict.get("chat_info_message_id")
|
||||
or message_dict.get("id"),
|
||||
"time": message_dict.get("time"),
|
||||
"platform": chat_info_platform,
|
||||
"message_id": message_id,
|
||||
"time": time_val,
|
||||
"group_info": group_info,
|
||||
"user_info": user_info,
|
||||
"additional_config": message_dict.get("additional_config"),
|
||||
"additional_config": additional_config,
|
||||
"format_info": format_info,
|
||||
"template_info": template_info,
|
||||
}
|
||||
|
||||
new_message_dict = {
|
||||
"message_info": message_info,
|
||||
"raw_message": message_dict.get("processed_plain_text"),
|
||||
"processed_plain_text": message_dict.get("processed_plain_text"),
|
||||
"raw_message": processed_plain_text,
|
||||
"processed_plain_text": processed_plain_text,
|
||||
}
|
||||
|
||||
message_recv = MessageRecv(new_message_dict)
|
||||
|
||||
logger.info(f"[SendAPI] 找到匹配的回复消息,发送者: {message_dict.get('user_nickname', '')}")
|
||||
logger.info(f"[SendAPI] 找到匹配的回复消息,发送者: {user_nickname}")
|
||||
return message_recv
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user