ling-playground / docs /requirements /2025-10-12-08-30-implement-workflow-tab.md
cafe3310's picture
little demo
cb6eafc

A newer version of the Gradio SDK is available: 6.1.0

Upgrade

需求:实现工作流(Workflow)标签页

重要性: 中 (Medium)

1. 目标

创建一个名为“工作流”的新标签页,允许用户通过与 AI 对话来定义和可视化一个任务的执行流程。

2. 功能描述

  1. 双 Agent 协作模式:

    • 主 Agent (Ling-1t): 在 UI 左侧通过聊天界面与用户直接交互,理解用户意图并帮助其完成任务。
    • 副 Agent (Ling-mini): 在后台静默观察主 Agent 与用户的对话,其实时、增量地分析和提取对话中体现出的工作流程。
  2. 实时工作流可视化:

    • 在 UI 右侧,实时显示由副 Agent 提取出的“当前主题”和“当前工作流描述”。
    • 工作流的文本描述格式需要定义,初期可使用简单的占位符格式(例如,使用 Markdown 列表)。
  3. 冷启动与示例:

    • 为了方便用户上手,需要在聊天输入框下方提供一些预设的示例主题(gr.Examples)。

3. UI 布局

  • 左侧面板:
    • gr.Chatbot: 用于展示与主 Agent 的对话历史。
    • gr.Textbox: 用户输入框。
    • gr.Button: 发送按钮。
    • gr.Examples: 预设主题示例。
  • 右侧面板:
    • gr.Textbox (或 gr.Markdown): 用于显示“当前主题”。
    • gr.Textbox (或 gr.Markdown): 用于显示“当前工作流描述”。

4. 开发说明

  • 必须对接真实 LLM: 功能逻辑必须调用真实的 LLM API 来生成聊天回复和工作流,不允许使用写死的静态字符串作为占位符。
  • System Prompts: 主副 Agent 的 System Prompt 可使用初步的、简单的版本,后续由用户精细化。
  • 用户接手: 最终的、精细化的 System Prompts 和工作流描述格式将由用户手动开发和指定。

5. 验证方式

  1. 启动应用,切换到“工作流”标签页。
  2. 左侧聊天功能可正常使用。
  3. 右侧能看到“主题”和“工作流”的显示区域。
  4. 点击预设示例,聊天框会自动填充。
  5. (手动验证) 在左侧进行对话,右侧的工作流描述会由 LLM 真实生成并发生有意义的变化。

6. 自动化测试方案

本方案旨在通过模拟一次完整的用户交互,来端到端地验证“工作流”标签页的核心功能。

测试用例: test_workflow_tab_dual_agent_interaction

  1. 环境重置 (Setup)

    • 调用“异常处理与重置流程”,确保浏览器和后台服务处于干净状态。
    • kill 掉所有 app.py 进程。
    • 后台启动 app.py
    • 等待 5 秒。
  2. 导航与定位 (Navigation)

    • 使用 navigate_page 打开 http://127.0.0.1:7860
    • 使用 take_snapshot 获取页面快照。
    • 从快照中找到 "工作流 (Workflow)" 标签页的 uid
    • 使用 click 点击该标签页。
    • 等待 2 秒以确保页面切换完成。
  3. 执行交互 (Action)

    • 使用 take_snapshot 获取工作流页面的快照。
    • 从快照中定位到聊天输入框的 uid (elem_id="workflow_chat_input")。
    • 使用 fill 向输入框填入一个清晰的任务,例如: "我需要一个 Python 函数,它可以接收一个 URL 列表,并返回每个 URL 的 HTTP 状态码。"
    • 从快照中定位到“发送”按钮的 uid (elem_id="workflow_send_button")。
    • 使用 click 点击“发送”按钮。
  4. 等待与断言 (Assertion)

    • 等待一个较长的时间(例如 20 秒),以确保双 LLM 调用均已完成。
    • 使用 take_snapshot 获取最终的页面快照。
    • 验证主 Agent 回复:
      • 检查快照中聊天记录(elem_id="workflow_chatbot")部分,确认其中包含了用户的输入以及由 LLM 生成的、非空的的助手回复。
    • 验证副 Agent 分析:
      • 检查快照中“当前主题”文本框(elem_id="workflow_topic_output"),确认其内容已被更新,不再是空的。
      • 检查快照中“当前工作流描述”区域(elem_id="workflow_output"),确认其内容已被更新,包含一个 Markdown 格式的、有意义的步骤列表,而不是初始的“*等待任务开始...*”。