Merge remote-tracking branch 'upstream/debug' into debug
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
from typing import List, Dict
|
from typing import List, Dict, Union
|
||||||
from ...common.database import Database # 使用正确的导入语法
|
from ...common.database import Database # 使用正确的导入语法
|
||||||
from src.plugins.chat.config import global_config
|
from src.plugins.chat.config import global_config
|
||||||
from nonebot import get_driver
|
from nonebot import get_driver
|
||||||
from ..models.utils_model import LLM_request
|
from ..models.utils_model import LLM_request
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
import json
|
||||||
driver = get_driver()
|
driver = get_driver()
|
||||||
config = driver.config
|
config = driver.config
|
||||||
|
|
||||||
@@ -58,19 +58,20 @@ class ScheduleGenerator:
|
|||||||
|
|
||||||
elif read_only == False:
|
elif read_only == False:
|
||||||
print(f"{date_str}的日程不存在,准备生成新的日程。")
|
print(f"{date_str}的日程不存在,准备生成新的日程。")
|
||||||
prompt = f"""我是{global_config.BOT_NICKNAME},{global_config.PROMPT_SCHEDULE_GEN},请为我生成{date_str}({weekday})的日程安排,包括:
|
prompt = f"""我是{global_config.BOT_NICKNAME},{global_config.PROMPT_SCHEDULE_GEN},请为我生成{date_str}({weekday})的日程安排,包括:"""+\
|
||||||
|
"""
|
||||||
1. 早上的学习和工作安排
|
1. 早上的学习和工作安排
|
||||||
2. 下午的活动和任务
|
2. 下午的活动和任务
|
||||||
3. 晚上的计划和休息时间
|
3. 晚上的计划和休息时间
|
||||||
请按照时间顺序列出具体时间点和对应的活动,用一个时间点而不是时间段来表示时间,用逗号,隔开时间与活动,格式为"时间,活动",例如"08:00,起床"。"""
|
请按照时间顺序列出具体时间点和对应的活动,用一个时间点而不是时间段来表示时间,用JSON格式返回日程表,仅返回内容,不要返回注释,时间采用24小时制,格式为{"时间": "活动","时间": "活动",...}。"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
schedule_text, _ = await self.llm_scheduler.generate_response(prompt)
|
schedule_text, _ = await self.llm_scheduler.generate_response(prompt)
|
||||||
|
self.db.db.schedule.insert_one({"date": date_str, "schedule": schedule_text})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"生成日程失败: {str(e)}")
|
logger.error(f"生成日程失败: {str(e)}")
|
||||||
schedule_text = "生成日程时出错了"
|
schedule_text = "生成日程时出错了"
|
||||||
# print(self.schedule_text)
|
# print(self.schedule_text)
|
||||||
self.db.db.schedule.insert_one({"date": date_str, "schedule": schedule_text})
|
|
||||||
else:
|
else:
|
||||||
print(f"{date_str}的日程不存在。")
|
print(f"{date_str}的日程不存在。")
|
||||||
schedule_text = "忘了"
|
schedule_text = "忘了"
|
||||||
@@ -80,20 +81,15 @@ class ScheduleGenerator:
|
|||||||
schedule_form = self._parse_schedule(schedule_text)
|
schedule_form = self._parse_schedule(schedule_text)
|
||||||
return schedule_text,schedule_form
|
return schedule_text,schedule_form
|
||||||
|
|
||||||
def _parse_schedule(self, schedule_text: str) -> Dict[str, str]:
|
def _parse_schedule(self, schedule_text: str) -> Union[bool, Dict[str, str]]:
|
||||||
"""解析日程文本,转换为时间和活动的字典"""
|
"""解析日程文本,转换为时间和活动的字典"""
|
||||||
schedule_dict = {}
|
try:
|
||||||
# 按行分割日程文本
|
schedule_dict = json.loads(schedule_text)
|
||||||
lines = schedule_text.strip().split('\n')
|
return schedule_dict
|
||||||
for line in lines:
|
except json.JSONDecodeError as e:
|
||||||
# print(line)
|
print(schedule_text)
|
||||||
if ',' in line:
|
print(f"解析日程失败: {str(e)}")
|
||||||
# 假设格式为 "时间: 活动"
|
return False
|
||||||
time_str, activity = line.split(',', 1)
|
|
||||||
# print(time_str)
|
|
||||||
# print(activity)
|
|
||||||
schedule_dict[time_str.strip()] = activity.strip()
|
|
||||||
return schedule_dict
|
|
||||||
|
|
||||||
def _parse_time(self, time_str: str) -> str:
|
def _parse_time(self, time_str: str) -> str:
|
||||||
"""解析时间字符串,转换为时间"""
|
"""解析时间字符串,转换为时间"""
|
||||||
@@ -148,11 +144,14 @@ class ScheduleGenerator:
|
|||||||
|
|
||||||
def print_schedule(self):
|
def print_schedule(self):
|
||||||
"""打印完整的日程安排"""
|
"""打印完整的日程安排"""
|
||||||
|
if not self._parse_schedule(self.today_schedule_text):
|
||||||
print("\n=== 今日日程安排 ===")
|
print("今日日程有误,将在下次运行时重新生成")
|
||||||
for time_str, activity in self.today_schedule.items():
|
self.db.db.schedule.delete_one({"date": datetime.datetime.now().strftime("%Y-%m-%d")})
|
||||||
print(f"时间[{time_str}]: 活动[{activity}]")
|
else:
|
||||||
print("==================\n")
|
print("\n=== 今日日程安排 ===")
|
||||||
|
for time_str, activity in self.today_schedule.items():
|
||||||
|
print(f"时间[{time_str}]: 活动[{activity}]")
|
||||||
|
print("==================\n")
|
||||||
|
|
||||||
# def main():
|
# def main():
|
||||||
# # 使用示例
|
# # 使用示例
|
||||||
|
|||||||
Reference in New Issue
Block a user