加群配置使用前端指令完成,方便管理。
This commit is contained in:
@@ -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
57
task/message_task_json.py
Normal 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要去游泳'))
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user