🤖 自动格式化代码 [skip ci]
This commit is contained in:
@@ -566,15 +566,11 @@ class HeartFChatting:
|
|||||||
|
|
||||||
# 创建三个并行任务,为LLM调用添加超时保护
|
# 创建三个并行任务,为LLM调用添加超时保护
|
||||||
action_modify_task = asyncio.create_task(
|
action_modify_task = asyncio.create_task(
|
||||||
asyncio.wait_for(
|
asyncio.wait_for(modify_actions_task(), timeout=ACTION_MODIFICATION_TIMEOUT)
|
||||||
modify_actions_task(),
|
|
||||||
timeout=ACTION_MODIFICATION_TIMEOUT
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
memory_task = asyncio.create_task(
|
memory_task = asyncio.create_task(
|
||||||
asyncio.wait_for(
|
asyncio.wait_for(
|
||||||
self.memory_activator.activate_memory(self.observations),
|
self.memory_activator.activate_memory(self.observations), timeout=MEMORY_ACTIVATION_TIMEOUT
|
||||||
timeout=MEMORY_ACTIVATION_TIMEOUT
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
processor_task = asyncio.create_task(self._process_processors(self.observations))
|
processor_task = asyncio.create_task(self._process_processors(self.observations))
|
||||||
@@ -584,27 +580,26 @@ class HeartFChatting:
|
|||||||
running_memorys = []
|
running_memorys = []
|
||||||
all_plan_info = []
|
all_plan_info = []
|
||||||
processor_time_costs = {}
|
processor_time_costs = {}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
action_modify_result, running_memorys, (all_plan_info, processor_time_costs) = await asyncio.gather(
|
action_modify_result, running_memorys, (all_plan_info, processor_time_costs) = await asyncio.gather(
|
||||||
action_modify_task, memory_task, processor_task,
|
action_modify_task, memory_task, processor_task, return_exceptions=True
|
||||||
return_exceptions=True
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# 检查各个任务的结果
|
# 检查各个任务的结果
|
||||||
if isinstance(action_modify_result, Exception):
|
if isinstance(action_modify_result, Exception):
|
||||||
if isinstance(action_modify_result, asyncio.TimeoutError):
|
if isinstance(action_modify_result, asyncio.TimeoutError):
|
||||||
logger.error(f"{self.log_prefix} 动作修改任务超时")
|
logger.error(f"{self.log_prefix} 动作修改任务超时")
|
||||||
else:
|
else:
|
||||||
logger.error(f"{self.log_prefix} 动作修改任务失败: {action_modify_result}")
|
logger.error(f"{self.log_prefix} 动作修改任务失败: {action_modify_result}")
|
||||||
|
|
||||||
if isinstance(running_memorys, Exception):
|
if isinstance(running_memorys, Exception):
|
||||||
if isinstance(running_memorys, asyncio.TimeoutError):
|
if isinstance(running_memorys, asyncio.TimeoutError):
|
||||||
logger.error(f"{self.log_prefix} 记忆激活任务超时")
|
logger.error(f"{self.log_prefix} 记忆激活任务超时")
|
||||||
else:
|
else:
|
||||||
logger.error(f"{self.log_prefix} 记忆激活任务失败: {running_memorys}")
|
logger.error(f"{self.log_prefix} 记忆激活任务失败: {running_memorys}")
|
||||||
running_memorys = []
|
running_memorys = []
|
||||||
|
|
||||||
processor_result = (all_plan_info, processor_time_costs)
|
processor_result = (all_plan_info, processor_time_costs)
|
||||||
if isinstance(processor_result, Exception):
|
if isinstance(processor_result, Exception):
|
||||||
if isinstance(processor_result, asyncio.TimeoutError):
|
if isinstance(processor_result, asyncio.TimeoutError):
|
||||||
@@ -615,7 +610,7 @@ class HeartFChatting:
|
|||||||
processor_time_costs = {}
|
processor_time_costs = {}
|
||||||
else:
|
else:
|
||||||
all_plan_info, processor_time_costs = processor_result
|
all_plan_info, processor_time_costs = processor_result
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"{self.log_prefix} 并行任务gather失败: {e}")
|
logger.error(f"{self.log_prefix} 并行任务gather失败: {e}")
|
||||||
# 设置默认值以继续执行
|
# 设置默认值以继续执行
|
||||||
@@ -628,7 +623,9 @@ class HeartFChatting:
|
|||||||
"processor_time_costs": processor_time_costs,
|
"processor_time_costs": processor_time_costs,
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug(f"{self.log_prefix} 并行阶段完成,准备进入规划器,plan_info数量: {len(all_plan_info)}, running_memorys数量: {len(running_memorys)}")
|
logger.debug(
|
||||||
|
f"{self.log_prefix} 并行阶段完成,准备进入规划器,plan_info数量: {len(all_plan_info)}, running_memorys数量: {len(running_memorys)}"
|
||||||
|
)
|
||||||
|
|
||||||
with Timer("规划器", cycle_timers):
|
with Timer("规划器", cycle_timers):
|
||||||
plan_result = await self.action_planner.plan(all_plan_info, running_memorys, loop_start_time)
|
plan_result = await self.action_planner.plan(all_plan_info, running_memorys, loop_start_time)
|
||||||
|
|||||||
@@ -163,7 +163,6 @@ class ExpressionSelectorProcessor(BaseProcessor):
|
|||||||
cache_size = len(selected_expressions) if selected_expressions else 0
|
cache_size = len(selected_expressions) if selected_expressions else 0
|
||||||
mode_desc = f"LLM模式(已缓存{cache_size}个)"
|
mode_desc = f"LLM模式(已缓存{cache_size}个)"
|
||||||
|
|
||||||
|
|
||||||
if selected_expressions:
|
if selected_expressions:
|
||||||
# 缓存选择的表达方式
|
# 缓存选择的表达方式
|
||||||
self.cached_expressions = selected_expressions
|
self.cached_expressions = selected_expressions
|
||||||
|
|||||||
@@ -706,7 +706,7 @@ class PersonImpressionpProcessor(BaseProcessor):
|
|||||||
if self.info_fetched_cache:
|
if self.info_fetched_cache:
|
||||||
persons_with_known_info = [] # 有已知信息的人员
|
persons_with_known_info = [] # 有已知信息的人员
|
||||||
persons_with_unknown_info = [] # 有未知信息的人员
|
persons_with_unknown_info = [] # 有未知信息的人员
|
||||||
|
|
||||||
for person_id in self.info_fetched_cache:
|
for person_id in self.info_fetched_cache:
|
||||||
person_known_infos = []
|
person_known_infos = []
|
||||||
person_unknown_infos = []
|
person_unknown_infos = []
|
||||||
@@ -739,9 +739,11 @@ class PersonImpressionpProcessor(BaseProcessor):
|
|||||||
for person_name, unknown_types in persons_with_unknown_info:
|
for person_name, unknown_types in persons_with_unknown_info:
|
||||||
unknown_types_str = "、".join(unknown_types)
|
unknown_types_str = "、".join(unknown_types)
|
||||||
unknown_persons_details.append(f"{person_name}的[{unknown_types_str}]")
|
unknown_persons_details.append(f"{person_name}的[{unknown_types_str}]")
|
||||||
|
|
||||||
if len(unknown_persons_details) == 1:
|
if len(unknown_persons_details) == 1:
|
||||||
persons_infos_str += f"你不了解{unknown_persons_details[0]}信息,不要胡乱回答,可以直接说不知道或忘记了;\n"
|
persons_infos_str += (
|
||||||
|
f"你不了解{unknown_persons_details[0]}信息,不要胡乱回答,可以直接说不知道或忘记了;\n"
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
unknown_all_str = "、".join(unknown_persons_details)
|
unknown_all_str = "、".join(unknown_persons_details)
|
||||||
persons_infos_str += f"你不了解{unknown_all_str}等信息,不要胡乱回答,可以直接说不知道或忘记了;\n"
|
persons_infos_str += f"你不了解{unknown_all_str}等信息,不要胡乱回答,可以直接说不知道或忘记了;\n"
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ from src.chat.utils.chat_message_builder import (
|
|||||||
get_raw_msg_before_timestamp_with_chat,
|
get_raw_msg_before_timestamp_with_chat,
|
||||||
num_new_messages_since,
|
num_new_messages_since,
|
||||||
)
|
)
|
||||||
from src.person_info.relationship_manager import get_relationship_manager
|
|
||||||
|
|
||||||
willing_manager = get_willing_manager()
|
willing_manager = get_willing_manager()
|
||||||
|
|
||||||
@@ -779,17 +778,11 @@ class NormalChat:
|
|||||||
logger.debug(f"[{self.stream_name}] 额外动作处理完成: {self.action_type}")
|
logger.debug(f"[{self.stream_name}] 额外动作处理完成: {self.action_type}")
|
||||||
|
|
||||||
if not response_set or (
|
if not response_set or (
|
||||||
self.enable_planner
|
self.enable_planner and self.action_type not in ["no_action"] and not self.is_parallel_action
|
||||||
and self.action_type not in ["no_action"]
|
|
||||||
and not self.is_parallel_action
|
|
||||||
):
|
):
|
||||||
if not response_set:
|
if not response_set:
|
||||||
logger.info(f"[{self.stream_name}] 模型未生成回复内容")
|
logger.info(f"[{self.stream_name}] 模型未生成回复内容")
|
||||||
elif (
|
elif self.enable_planner and self.action_type not in ["no_action"] and not self.is_parallel_action:
|
||||||
self.enable_planner
|
|
||||||
and self.action_type not in ["no_action"]
|
|
||||||
and not self.is_parallel_action
|
|
||||||
):
|
|
||||||
logger.info(f"[{self.stream_name}] 模型选择其他动作(非并行动作)")
|
logger.info(f"[{self.stream_name}] 模型选择其他动作(非并行动作)")
|
||||||
# 如果模型未生成回复,移除思考消息
|
# 如果模型未生成回复,移除思考消息
|
||||||
container = await message_manager.get_container(self.stream_id) # 使用 self.stream_id
|
container = await message_manager.get_container(self.stream_id) # 使用 self.stream_id
|
||||||
@@ -836,8 +829,6 @@ class NormalChat:
|
|||||||
if len(self.recent_replies) > self.max_replies_history:
|
if len(self.recent_replies) > self.max_replies_history:
|
||||||
self.recent_replies = self.recent_replies[-self.max_replies_history :]
|
self.recent_replies = self.recent_replies[-self.max_replies_history :]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 回复后处理
|
# 回复后处理
|
||||||
await willing_manager.after_generate_reply_handle(message.message_info.message_id)
|
await willing_manager.after_generate_reply_handle(message.message_info.message_id)
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ from src.chat.utils.chat_message_builder import build_readable_messages, get_raw
|
|||||||
from src.config.config import global_config
|
from src.config.config import global_config
|
||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
from src.chat.message_receive.message_sender import message_manager
|
|
||||||
from src.chat.message_receive.message import MessageThinking
|
|
||||||
|
|
||||||
logger = get_logger("normal_chat_action_modifier")
|
logger = get_logger("normal_chat_action_modifier")
|
||||||
|
|
||||||
@@ -280,8 +278,6 @@ class NormalChatActionModifier:
|
|||||||
logger.debug(f"{self.log_prefix}动作 {action_name} 未匹配到任何关键词: {activation_keywords}")
|
logger.debug(f"{self.log_prefix}动作 {action_name} 未匹配到任何关键词: {activation_keywords}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_available_actions_count(self) -> int:
|
def get_available_actions_count(self) -> int:
|
||||||
"""获取当前可用动作数量(排除默认的no_action)"""
|
"""获取当前可用动作数量(排除默认的no_action)"""
|
||||||
current_actions = self.action_manager.get_using_actions_for_mode("normal")
|
current_actions = self.action_manager.get_using_actions_for_mode("normal")
|
||||||
|
|||||||
@@ -193,8 +193,6 @@ class ExpressionConfig(ConfigBase):
|
|||||||
enable_expression_learning: bool = True
|
enable_expression_learning: bool = True
|
||||||
"""是否启用表达学习"""
|
"""是否启用表达学习"""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
expression_groups: list[list[str]] = field(default_factory=list)
|
expression_groups: list[list[str]] = field(default_factory=list)
|
||||||
"""
|
"""
|
||||||
表达学习互通组
|
表达学习互通组
|
||||||
|
|||||||
@@ -492,9 +492,11 @@ class RelationshipManager:
|
|||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
relation_value_response, _ = await self.relationship_llm.generate_response_async(prompt=relation_value_prompt)
|
relation_value_response, _ = await self.relationship_llm.generate_response_async(
|
||||||
|
prompt=relation_value_prompt
|
||||||
|
)
|
||||||
relation_value_json = json.loads(repair_json(relation_value_response))
|
relation_value_json = json.loads(repair_json(relation_value_response))
|
||||||
|
|
||||||
# 从LLM获取新生成的值
|
# 从LLM获取新生成的值
|
||||||
new_familiarity_value = int(relation_value_json.get("familiarity_value", 0))
|
new_familiarity_value = int(relation_value_json.get("familiarity_value", 0))
|
||||||
new_liking_value = int(relation_value_json.get("liking_value", 50))
|
new_liking_value = int(relation_value_json.get("liking_value", 50))
|
||||||
@@ -502,14 +504,16 @@ class RelationshipManager:
|
|||||||
# 获取数据库中的旧值,如果不存在则使用默认值
|
# 获取数据库中的旧值,如果不存在则使用默认值
|
||||||
old_familiarity_value = await person_info_manager.get_value(person_id, "familiarity_value") or 0
|
old_familiarity_value = await person_info_manager.get_value(person_id, "familiarity_value") or 0
|
||||||
old_liking_value = await person_info_manager.get_value(person_id, "liking_value") or 50
|
old_liking_value = await person_info_manager.get_value(person_id, "liking_value") or 50
|
||||||
|
|
||||||
# 计算平均值
|
# 计算平均值
|
||||||
final_familiarity_value = (old_familiarity_value + new_familiarity_value) // 2
|
final_familiarity_value = (old_familiarity_value + new_familiarity_value) // 2
|
||||||
final_liking_value = (old_liking_value + new_liking_value) // 2
|
final_liking_value = (old_liking_value + new_liking_value) // 2
|
||||||
|
|
||||||
await person_info_manager.update_one_field(person_id, "familiarity_value", final_familiarity_value)
|
await person_info_manager.update_one_field(person_id, "familiarity_value", final_familiarity_value)
|
||||||
await person_info_manager.update_one_field(person_id, "liking_value", final_liking_value)
|
await person_info_manager.update_one_field(person_id, "liking_value", final_liking_value)
|
||||||
logger.info(f"更新了与 {person_name} 的关系值: 熟悉度={final_familiarity_value}, 好感度={final_liking_value}")
|
logger.info(
|
||||||
|
f"更新了与 {person_name} 的关系值: 熟悉度={final_familiarity_value}, 好感度={final_liking_value}"
|
||||||
|
)
|
||||||
except (json.JSONDecodeError, ValueError, TypeError) as e:
|
except (json.JSONDecodeError, ValueError, TypeError) as e:
|
||||||
logger.error(f"解析relation_value JSON失败或值无效: {e}, 响应: {relation_value_response}")
|
logger.error(f"解析relation_value JSON失败或值无效: {e}, 响应: {relation_value_response}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user