import gradio as gr from utils import WORKFLOW_SVG_DIAGRAM from config import WORKFLOW_GENERATE_SYSTEM_PROMPT, WORKFLOW_EXECUTE_SYSTEM_PROMPT def handle_workflow_generation(description): """处理“工作流执行”标签页的生成逻辑""" # 在真实应用中,这里会使用 WORKFLOW_GENERATE_SYSTEM_PROMPT # We use a mock SVG diagram from utils svg_diagram = WORKFLOW_SVG_DIAGRAM steps = ["Step 1: Plan", "Step 2: Execute", "Step 3: Review"] initial_state = {"current_step": 0, "steps": steps} initial_status = f"**当前节点**: {steps[0]}" initial_chatbot_message = [(None, f"工作流已生成。让我们开始第一步:‘{steps[0]}’。请提供规划所需的信息。 ")] return svg_diagram, initial_status, initial_chatbot_message, initial_state def handle_workflow_chat(user_input, chat_history, state): """处理工作流的交互式聊天""" if not state or not state.get("steps"): return chat_history, state, "", gr.update(interactive=False) chat_history.append((user_input, None)) current_step_index = state["current_step"] steps = state["steps"] thinking_message = "..." chat_history[-1] = (user_input, thinking_message) yield chat_history, state, "", gr.update(interactive=False) current_step_index += 1 state["current_step"] = current_step_index if current_step_index < len(steps): next_step_name = steps[current_step_index] response = f"好的,已完成上一步。现在我们进行 ‘{next_step_name}’。请提供相关信息。" new_status = f"**当前节点**: {next_step_name}" interactive = True else: response = "所有步骤均已完成!工作流结束。" new_status = "**状态**: 已完成" interactive = False chat_history.append((None, response)) yield chat_history, state, new_status, gr.update(interactive=interactive) def create_workflow_tab(): with gr.TabItem("工作流执行", id="workflow_tab"): gr.Markdown("
由 Ring 💍 模型驱动
") with gr.Row(): with gr.Column(scale=1): workflow_description_input = gr.Textbox(lines=7, label="工作流描述", placeholder="Describe the steps of your workflow...") gr.Examples( examples=["规划一次东京之旅", "新用户引导流程", "内容审批流程"], label="示例提示", inputs=[workflow_description_input] ) generate_workflow_button = gr.Button("✨ 生成工作流") workflow_visualization_output = gr.HTML(label="工作流图示") with gr.Column(scale=1): workflow_status_output = gr.Markdown(label="节点状态") workflow_chatbot = gr.Chatbot(label="执行对话", height=400) workflow_chat_input = gr.Textbox(label="交互输入", placeholder="Your response...", interactive=False) return { "workflow_description_input": workflow_description_input, "generate_workflow_button": generate_workflow_button, "workflow_visualization_output": workflow_visualization_output, "workflow_status_output": workflow_status_output, "workflow_chatbot": workflow_chatbot, "workflow_chat_input": workflow_chat_input }