mirror of https://github.com/Mai-with-u/MaiBot.git
修复 pfc repationship 报错
parent
32ace682d3
commit
1905e02587
|
|
@ -86,7 +86,7 @@ class Conversation:
|
|||
|
||||
# 初始化所有核心组件为 None,将在 _initialize 中创建
|
||||
self.relationship_updater: Optional[PfcRelationshipUpdater] = None # 新增
|
||||
self.relationshop_translator: Optional[PfcRepationshipTranslator] = None
|
||||
self.relationship_translator: Optional[PfcRepationshipTranslator] = None
|
||||
self.emotion_updater: Optional[PfcEmotionUpdater] = None # 新增
|
||||
self.action_planner: Optional[ActionPlanner] = None
|
||||
self.goal_analyzer: Optional[GoalAnalyzer] = None
|
||||
|
|
@ -132,7 +132,8 @@ class Conversation:
|
|||
private_name=self.private_name,
|
||||
bot_name=global_config.BOT_NICKNAME # 或者 self.name (如果 Conversation 类有 self.name)
|
||||
)
|
||||
logger.info(f"[私聊][{self.private_name}] PfcRelationshipUpdater 初始化完成。")
|
||||
self.relationship_translator = PfcRepationshipTranslator(private_name=self.private_name)
|
||||
logger.info(f"[私聊][{self.private_name}] PfcRelationship 初始化完成。")
|
||||
|
||||
self.emotion_updater = PfcEmotionUpdater(
|
||||
private_name=self.private_name,
|
||||
|
|
@ -287,7 +288,7 @@ class Conversation:
|
|||
numeric_relationship_value = 0.0
|
||||
|
||||
# 2. 使用PFC内部翻译函数
|
||||
self.conversation_info.relationship_text = self.relationshop_translator.translate_relationship_value_to_text(numeric_relationship_value)
|
||||
self.conversation_info.relationship_text = self.relationship_translator.translate_relationship_value_to_text(numeric_relationship_value)
|
||||
logger.info(f"[私聊][{self.private_name}] 初始化时加载关系文本: {self.conversation_info.relationship_text}")
|
||||
except Exception as e_init_rel:
|
||||
logger.error(f"[私聊][{self.private_name}] 初始化时加载关系文本出错: {e_init_rel}")
|
||||
|
|
@ -572,7 +573,7 @@ class Conversation:
|
|||
logger.debug(f"[私聊][{self.private_name}] 获取到数值型关系值: {numeric_relationship_value}")
|
||||
|
||||
# 2. 使用PFC内部的翻译函数将其转换为文本描述
|
||||
simplified_relationship_text = self.relationshop_translator.translate_relationship_value_to_text(numeric_relationship_value)
|
||||
simplified_relationship_text = self.relationship_translator.translate_relationship_value_to_text(numeric_relationship_value)
|
||||
self.conversation_info.relationship_text = simplified_relationship_text
|
||||
|
||||
logger.debug(f"[私聊][{self.private_name}] 更新后关系文本 (PFC内部翻译): {self.conversation_info.relationship_text}")
|
||||
|
|
@ -604,7 +605,7 @@ class Conversation:
|
|||
numeric_relationship_value = float(numeric_relationship_value.to_decimal())
|
||||
else:
|
||||
numeric_relationship_value = 0.0
|
||||
self.conversation_info.relationship_text = self.relationshop_translator.translate_relationship_value_to_text(numeric_relationship_value)
|
||||
self.conversation_info.relationship_text = self.relationship_translator.translate_relationship_value_to_text(numeric_relationship_value)
|
||||
logger.debug(f"[私聊][{self.private_name}] (备用逻辑)更新后关系文本: {self.conversation_info.relationship_text}")
|
||||
|
||||
except ValueError:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from typing import List, Dict, Any, Optional
|
||||
from typing import List, Dict, Any
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.models.utils_model import LLMRequest
|
||||
from src.plugins.person_info.person_info import person_info_manager
|
||||
|
|
@ -215,15 +215,14 @@ class PfcRepationshipTranslator:
|
|||
因为对于PFC的planner来说
|
||||
其暗示了选择回复
|
||||
所以新建代码文件来适配PFC的决策层面"""
|
||||
def __init__(self):
|
||||
pass
|
||||
def __init__(self, private_name: str):
|
||||
self.private_name = private_name
|
||||
|
||||
@staticmethod
|
||||
def translate_relationship_value_to_text(self, relationship_value: float) -> str:
|
||||
async def translate_relationship_value_to_text(self, relationship_value: float) -> str:
|
||||
"""
|
||||
将数值型的关系值转换为PFC私聊场景下简洁的关系描述文本。
|
||||
"""
|
||||
level_num = self._calculate_relationship_level_num(relationship_value)
|
||||
level_num = self._calculate_relationship_level_num(relationship_value, self.private_name)
|
||||
|
||||
relationship_descriptions = [
|
||||
"厌恶", # level_num 0
|
||||
|
|
@ -238,18 +237,18 @@ class PfcRepationshipTranslator:
|
|||
description = relationship_descriptions[level_num]
|
||||
else:
|
||||
description = "普通" # 默认或错误情况
|
||||
logger.warning(f"计算出的 level_num ({level_num}) 无效,关系描述默认为 '普通'")
|
||||
logger.warning(f"[私聊][{self.private_name}] 计算出的 level_num ({level_num}) 无效,关系描述默认为 '普通'")
|
||||
|
||||
return f"你们的关系是:{description}。"
|
||||
|
||||
@staticmethod
|
||||
def _calculate_relationship_level_num(relationship_value: float) -> int:
|
||||
def _calculate_relationship_level_num(relationship_value: float, private_name: str) -> int:
|
||||
"""
|
||||
根据关系值计算关系等级编号 (0-5)。
|
||||
这里的阈值应与 relationship_manager.py 中的保持一致
|
||||
"""
|
||||
if not isinstance(relationship_value, (int, float)):
|
||||
logger.warning(f"传入的 relationship_value '{relationship_value}' 不是有效的数值类型,默认为0。")
|
||||
logger.warning(f"[私聊][{private_name}] 传入的 relationship_value '{relationship_value}' 不是有效的数值类型,默认为0。")
|
||||
relationship_value = 0.0
|
||||
|
||||
if -1000 <= relationship_value < -227:
|
||||
|
|
@ -271,6 +270,6 @@ class PfcRepationshipTranslator:
|
|||
elif relationship_value < -1000:
|
||||
level_num = 0
|
||||
else: # 理论上不会到这里,除非前面的条件逻辑有误
|
||||
logger.warning(f"关系值 {relationship_value} 未落入任何预设范围,默认为普通。")
|
||||
logger.warning(f"[私聊][{private_name}] 关系值 {relationship_value} 未落入任何预设范围,默认为普通。")
|
||||
level_num = 2
|
||||
return level_num
|
||||
Loading…
Reference in New Issue