From 1a713ed0d92e167c2ae2f73a8e978062afa01e8a Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Sat, 7 Jun 2025 09:26:33 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E7=A9=BApoints?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../info_processors/relationship_processor.py | 5 ++++- src/chat/normal_chat/normal_chat_generator.py | 3 ++- src/person_info/impression_update_task.py | 8 ++++---- src/person_info/relationship_manager.py | 19 ++++++++++++++----- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/chat/focus_chat/info_processors/relationship_processor.py b/src/chat/focus_chat/info_processors/relationship_processor.py index 0e7a6d927..8f128d993 100644 --- a/src/chat/focus_chat/info_processors/relationship_processor.py +++ b/src/chat/focus_chat/info_processors/relationship_processor.py @@ -20,9 +20,12 @@ logger = get_logger("processor") def init_prompt(): relationship_prompt = """ {name_block} -你是一个AI,但是你伪装成了一个人类,你不想让别人知道你是一个AI +你和别人的关系信息是,请从这些信息中提取出你和别人的关系的原文: {relation_prompt} +请只从上面这些信息中提取出。 + + 现在是{time_now},你正在上网,和qq群里的网友们聊天,以下是正在进行的聊天内容: {chat_observe_info} diff --git a/src/chat/normal_chat/normal_chat_generator.py b/src/chat/normal_chat/normal_chat_generator.py index 82a8bc0bb..ae1f1109e 100644 --- a/src/chat/normal_chat/normal_chat_generator.py +++ b/src/chat/normal_chat/normal_chat_generator.py @@ -8,6 +8,7 @@ from src.chat.utils.timer_calculator import Timer from src.common.logger_manager import get_logger from src.chat.utils.info_catcher import info_catcher_manager from src.person_info.person_info import person_info_manager +from src.chat.utils.utils import process_llm_response logger = get_logger("normal_chat_response") @@ -57,7 +58,7 @@ class NormalChatGenerator: if model_response: logger.debug(f"{global_config.bot.nickname}的原始回复是:{model_response}") - model_response = await self.process_llm_response(model_response) + model_response = process_llm_response(model_response) return model_response else: diff --git a/src/person_info/impression_update_task.py b/src/person_info/impression_update_task.py index cb89834ca..c3c4705ea 100644 --- a/src/person_info/impression_update_task.py +++ b/src/person_info/impression_update_task.py @@ -24,10 +24,10 @@ class ImpressionUpdateTask(AsyncTask): try: # 获取最近的消息 current_time = int(time.time()) - start_time = current_time - 360000 # 1小时前 + start_time = current_time - 600 # 1小时前 # 获取所有消息 - messages = get_raw_msg_by_timestamp(timestamp_start=start_time, timestamp_end=current_time, limit=200) + messages = get_raw_msg_by_timestamp(timestamp_start=start_time, timestamp_end=current_time, limit=300) if not messages: logger.info("没有找到需要处理的消息") @@ -66,11 +66,11 @@ class ImpressionUpdateTask(AsyncTask): # 获取第一条bot消息前15条消息 first_bot_index = sorted_messages.index(first_bot_msg) - start_index = max(0, first_bot_index - 15) + start_index = max(0, first_bot_index - 25) # 获取最后一条bot消息后15条消息 last_bot_index = sorted_messages.index(last_bot_msg) - end_index = min(len(sorted_messages), last_bot_index + 16) + end_index = min(len(sorted_messages), last_bot_index + 26) # 获取相关消息 relevant_messages = sorted_messages[start_index:end_index] diff --git a/src/person_info/relationship_manager.py b/src/person_info/relationship_manager.py index 7f8f11d94..fb0f04cca 100644 --- a/src/person_info/relationship_manager.py +++ b/src/person_info/relationship_manager.py @@ -121,9 +121,15 @@ class RelationshipManager: person_name = await person_info_manager.get_value(person_id, "person_name") impression = await person_info_manager.get_value(person_id, "impression") interaction = await person_info_manager.get_value(person_id, "interaction") - points = await person_info_manager.get_value(person_id, "points") + points = await person_info_manager.get_value(person_id, "points") or [] - random_points = random.sample(points, min(3, len(points))) + if isinstance(points, str): + try: + points = ast.literal_eval(points) + except (SyntaxError, ValueError): + points = [] + + random_points = random.sample(points, min(3, len(points))) if points else [] nickname_str = await person_info_manager.get_value(person_id, "nickname") platform = await person_info_manager.get_value(person_id, "platform") @@ -138,6 +144,9 @@ class RelationshipManager: if random_points: for point in random_points: + # print(f"point: {point}") + # print(f"point[2]: {point[2]}") + # print(f"point[0]: {point[0]}") point_str = f"时间:{point[2]}。内容:{point[0]}" relation_prompt += f"你记得{person_name}最近的点是:{point_str}。" @@ -223,7 +232,7 @@ class RelationshipManager: ) for original_name, mapped_name in name_mapping.items(): - print(f"original_name: {original_name}, mapped_name: {mapped_name}") + # print(f"original_name: {original_name}, mapped_name: {mapped_name}") readable_messages = readable_messages.replace(f"{original_name}", f"{mapped_name}") prompt = f""" @@ -502,8 +511,8 @@ class RelationshipManager: keep_indices = set() for idx in target_indices: # 获取前后5条消息的索引 - start_idx = max(0, idx - 10) - end_idx = min(len(messages), idx + 11) + start_idx = max(0, idx - 5) + end_idx = min(len(messages), idx + 6) keep_indices.update(range(start_idx, end_idx)) print(keep_indices)