ref:让MaiSaka使用麦麦原有的pompt系统,配置系统
This commit is contained in:
76
src/maisaka/timing.py
Normal file
76
src/maisaka/timing.py
Normal file
@@ -0,0 +1,76 @@
|
||||
"""
|
||||
MaiSaka - Timing 模块(含自我反思功能)
|
||||
构建对话时间戳信息,供 Timing 分析模块使用。
|
||||
该模块同时负责分析对话的时间维度和进行自我反思分析。
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def build_timing_info(
|
||||
chat_start_time: Optional[datetime],
|
||||
last_user_input_time: Optional[datetime],
|
||||
last_assistant_response_time: Optional[datetime],
|
||||
user_input_times: list[datetime],
|
||||
) -> str:
|
||||
"""
|
||||
构建当前时间戳信息文本,供 Timing 模块分析。
|
||||
|
||||
Args:
|
||||
chat_start_time: 对话开始时间
|
||||
last_user_input_time: 用户上次输入时间
|
||||
last_assistant_response_time: 助手上次回复时间
|
||||
user_input_times: 所有用户输入时间戳列表
|
||||
"""
|
||||
now = datetime.now()
|
||||
parts: list[str] = []
|
||||
|
||||
parts.append(f"当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
|
||||
if chat_start_time:
|
||||
elapsed = now - chat_start_time
|
||||
minutes, seconds = divmod(int(elapsed.total_seconds()), 60)
|
||||
hours, minutes = divmod(minutes, 60)
|
||||
if hours > 0:
|
||||
parts.append(f"对话已持续: {hours}小时{minutes}分{seconds}秒")
|
||||
elif minutes > 0:
|
||||
parts.append(f"对话已持续: {minutes}分{seconds}秒")
|
||||
else:
|
||||
parts.append(f"对话已持续: {seconds}秒")
|
||||
|
||||
if last_user_input_time:
|
||||
since_user = now - last_user_input_time
|
||||
parts.append(f"距用户上次输入: {int(since_user.total_seconds())}秒")
|
||||
|
||||
if last_assistant_response_time:
|
||||
since_assistant = now - last_assistant_response_time
|
||||
parts.append(f"距助手上次回复: {int(since_assistant.total_seconds())}秒")
|
||||
|
||||
if len(user_input_times) >= 2:
|
||||
intervals = [
|
||||
(user_input_times[i] - user_input_times[i - 1]).total_seconds()
|
||||
for i in range(1, len(user_input_times))
|
||||
]
|
||||
avg_interval = sum(intervals) / len(intervals)
|
||||
parts.append(f"用户平均回复间隔: {int(avg_interval)}秒")
|
||||
parts.append(f"用户总共发言次数: {len(user_input_times)}")
|
||||
|
||||
# 时段判断
|
||||
hour = now.hour
|
||||
if 0 <= hour < 6:
|
||||
parts.append("当前时段: 深夜/凌晨")
|
||||
elif 6 <= hour < 9:
|
||||
parts.append("当前时段: 早晨")
|
||||
elif 9 <= hour < 12:
|
||||
parts.append("当前时段: 上午")
|
||||
elif 12 <= hour < 14:
|
||||
parts.append("当前时段: 中午")
|
||||
elif 14 <= hour < 18:
|
||||
parts.append("当前时段: 下午")
|
||||
elif 18 <= hour < 22:
|
||||
parts.append("当前时段: 晚上")
|
||||
else:
|
||||
parts.append("当前时段: 深夜")
|
||||
|
||||
return "\n".join(parts)
|
||||
Reference in New Issue
Block a user