加群配置使用前端指令完成,方便管理。

This commit is contained in:
liuwei
2025-02-19 14:51:52 +08:00
parent 5019d86af3
commit 3083ed948f
5 changed files with 142 additions and 69 deletions

View File

@@ -1,20 +0,0 @@
import parsedatetime as pdt
from datetime import datetime
# 初始化 Calendar 对象
cal = pdt.Calendar()
def parse_natural_language_time(text):
time_struct, parse_status = cal.parse(text)
if parse_status == 1:
# 将解析后的时间结构转换为 datetime 对象
parsed_time = datetime(*time_struct[:6])
print(f"Parsed time: {parsed_time}")
return parsed_time
else:
print(f"Could not parse time for: {text}")
return None
# 示例输入
test_input = "明天上午9点开会"
parsed_time = parse_natural_language_time(test_input)

57
task/message_task_json.py Normal file
View File

@@ -0,0 +1,57 @@
import requests
import json
# 解析JSON
def extract_content(data_string):
try:
data = json.loads(data_string)
# 提取content字段
content = data["choices"][0]["message"].get("content", "")
return content
except json.JSONDecodeError:
print("Invalid JSON")
return None
def message_task_json(content):
# 设置Authorization和URL
authorization = "46a5674a-e978-491b-a810-5d54605f2c36" # 请替换为真实的Authorization token
url = 'http://127.0.0.1:8080/v1/chat/completions'
prompt = ('你是一个个人助理请根据用户给的任务要求及时安排日程。需要你理解用户的自然语言并即时反馈在什么时候加入了日程提醒。提醒时间为什么时候。请只返回json格式的内容用于提取数据。格式如下{\"task\": \"洗澡\", \"reminder_time\":\"00 20 * * *\", \"reason\": \"用户今天晚上八点要洗澡\"}')
# 设置请求的payload
data = {
# "stream": True,
"model": "windsurf/gpt4o",
"messages": [
{
"role": "system",
"content": f"{prompt}"
},
{
"role": "user",
"content": f"{content}"
}
]
}
# 设置请求头
headers = {
"Content-Type": "application/json; charset=utf-8",
"Authorization": authorization
}
# 发送POST请求
response = requests.post(url, headers=headers, data=json.dumps(data), )
response.encoding = 'utf-8'
# 输出响应内容
print(response.status_code)
print(response.text)
return extract_content(response.text)
if __name__ == '__main__':
print(message_task_json('提醒我明天晚上9点20要去游泳'))

View File

@@ -1,6 +1,7 @@
import pymysql
import dateparser
import schedule
import json
from task.message_task_json import message_task_json
# 配置数据库连接
db_config = {
@@ -17,12 +18,6 @@ def get_db_connection():
return connection
# 解析自然语言时间
def parse_natural_language_time(text):
parsed_time = dateparser.parse(text)
return parsed_time
# 插入任务到数据库
def insert_task_to_db(description, reminder_time, task_type):
connection = get_db_connection()
@@ -69,14 +64,20 @@ def schedule_recurring_task(reminder_time, task_id):
# 处理用户输入
def handle_user_input(user_input, task_type):
parsed_time = parse_natural_language_time(user_input)
print(parsed_time)
if parsed_time:
formatted_time = parsed_time.strftime('%H:%M')
print(f"Scheduling task for {formatted_time}")
task_json = message_task_json(user_input)
print(task_json)
if task_json:
# 将JSON字符串解析为字典
data = json.loads(task_json)
# 提取内容
task = data["task"]
reminder_time = data["reminder_time"]
reason = data["reason"]
# 将任务存入数据库
insert_task_to_db(user_input, formatted_time, task_type)
insert_task_to_db(user_input, reminder_time, task_type)
# 获取插入的任务ID
connection = get_db_connection()
@@ -88,9 +89,9 @@ def handle_user_input(user_input, task_type):
connection.close()
# 根据任务类型调度任务
if task_type == 'single':
schedule_single_task(formatted_time, task_id)
schedule_single_task(reminder_time, task_id)
elif task_type == 'recurring':
schedule_recurring_task(formatted_time, task_id)
schedule_recurring_task(reminder_time, task_id)
# 查询指定类型的任务
@@ -152,6 +153,4 @@ def main():
if __name__ == "__main__":
# main()
parsed_time = dateparser.parse('每天上午9:00提醒我开会', settings={'TIMEZONE': 'Asia/Shanghai'},)
print(parsed_time)
main()