import uuid
import time
from threading import Thread
tasks = {}
class Task:
def __init__(self, user_id, input):
self.task_id = str(uuid.uuid4())
self.user_id = user_id
self.current_step = 1
self.step_results = {}
self.input = input
self.status = "等待中"
self.options = []
def update_step_result(self, step, result):
self.step_results[step] = result
def update_status(self, status):
self.status = status
def set_options(self, options):
self.options = options
def create_new_task(user_id, input):
task = Task(user_id, input)
tasks[task.task_id] = task
thread = Thread(target=llm_process, args=(task.task_id,))
thread.start()
return task.task_id
def get_task_status(task_id):
task = tasks.get(task_id)
if not task:
return None
return {
"task_id": task.task_id,
"status": task.status,
"current_step": task.current_step,
"step_results": task.step_results,
"options": task.options,
}
def confirm_task_option(task_id, selected_option):
task = tasks.get(task_id)
if not task:
return {"error": "未找到该任务"}
if task.status != "等待确认":
return {"error": "该任务无等待人工确认的操作"}
task.update_step_result(task.current_step, f"Confirmed {selected_option}")
task.current_step += 1
task.update_status("正在处理")
thread = Thread(target=continue_task, args=(task.task_id, selected_option))
thread.start()
return {
"message": "Option confirmed, task continued",
"task_id": task_id,
"status": "正在处理",
}
def llm_process(task_id):
task = tasks.get(task_id)
if not task:
return
task.update_status("正在处理")
time.sleep(2)
options = [f"方案 {i}" for i in range(1, 4)]
task.set_options(options)
task.update_step_result(task.current_step, options)
task.update_status("等待确认")
def continue_task(task_id, selected_option):
task = tasks.get(task_id)
if not task:
return
task.update_status("正在处理")
time.sleep(2)
final_result = f"Final result for {selected_option}"
task.current_step += 1
task.update_step_result(task.current_step, final_result)
task.update_status("完成")