修复 pfc repationship 报错

pull/937/head
Bakadax 2025-05-07 15:48:33 +08:00
parent 32ace682d3
commit 1905e02587
2 changed files with 15 additions and 15 deletions

View File

@ -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:

View File

@ -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