ling-playground / tab_workflow.py
cafe3310's picture
feat: Initial clean commit
a9fb7e9
raw
history blame
3.43 kB
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("<p align='center'>由 <strong>Ring 💍</strong> 模型驱动</p>")
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
}