68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
import time
|
||
|
||
from src.common.logger import get_logger
|
||
from src.common.database.database_model import ChatHistory
|
||
|
||
logger = get_logger("dream_agent")
|
||
|
||
|
||
def make_create_chat_history(chat_id: str):
|
||
async def create_chat_history(
|
||
theme: str,
|
||
summary: str,
|
||
keywords: str,
|
||
key_point: str,
|
||
start_time: float,
|
||
end_time: float,
|
||
) -> str:
|
||
"""创建一条新的 ChatHistory 概括记录(用于整理/合并后的新记忆)"""
|
||
try:
|
||
logger.info(
|
||
f"[dream][tool] 调用 create_chat_history("
|
||
f"theme={bool(theme)}, summary={bool(summary)}, "
|
||
f"keywords={bool(keywords)}, key_point={bool(key_point)}, "
|
||
f"start_time={start_time}, end_time={end_time}) (chat_id={chat_id})"
|
||
)
|
||
|
||
now_ts = time.time()
|
||
|
||
# 将传入的 start_time/end_time(如果有)解析为时间戳;否则回退为当前时间
|
||
def _parse_ts(value, default):
|
||
if value is None:
|
||
return default
|
||
try:
|
||
return float(value)
|
||
except (TypeError, ValueError):
|
||
return default
|
||
|
||
start_ts = _parse_ts(start_time, now_ts)
|
||
end_ts = _parse_ts(end_time, now_ts)
|
||
|
||
record = ChatHistory.create(
|
||
chat_id=chat_id,
|
||
theme=theme,
|
||
summary=summary,
|
||
keywords=keywords,
|
||
key_point=key_point,
|
||
# 对于由 dream 整理产生的新概括,时间范围优先使用工具提供的时间,否则使用当前时间占位
|
||
start_time=start_ts,
|
||
end_time=end_ts,
|
||
)
|
||
|
||
msg = (
|
||
f"已创建新的 ChatHistory 记录,ID={record.id},"
|
||
f"theme={record.theme or '无'},summary={'有' if record.summary else '无'}。"
|
||
)
|
||
logger.info(f"[dream][tool] create_chat_history 完成: {msg}")
|
||
return msg
|
||
except Exception as e:
|
||
logger.error(f"create_chat_history 失败: {e}")
|
||
return f"create_chat_history 执行失败: {e}"
|
||
|
||
return create_chat_history
|
||
|
||
|
||
|
||
|
||
|