From 1905e02587d88da160bef59800d60f5ab791a12d Mon Sep 17 00:00:00 2001 From: Bakadax Date: Wed, 7 May 2025 15:48:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20pfc=20repationship=20?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/PFC/conversation.py | 11 ++++++----- src/plugins/PFC/pfc_relationship.py | 19 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/plugins/PFC/conversation.py b/src/plugins/PFC/conversation.py index 4d45f053..bb5477cc 100644 --- a/src/plugins/PFC/conversation.py +++ b/src/plugins/PFC/conversation.py @@ -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: diff --git a/src/plugins/PFC/pfc_relationship.py b/src/plugins/PFC/pfc_relationship.py index efe8a6cc..630eac2c 100644 --- a/src/plugins/PFC/pfc_relationship.py +++ b/src/plugins/PFC/pfc_relationship.py @@ -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 \ No newline at end of file