ling-playground / docs /backlog /2025-10-11-20-32-chat-interrupt-output.md
cafe3310's picture
little demo
cb6eafc
# 需求:聊天功能添加终止输出能力
- **创建时间:** 2025-01-27-15-30
- **状态:** 待处理 (Pending)
- **重要性:** 中等 (Medium)
## 需求描述
为聊天 Tab 添加终止输出功能,提升用户体验。具体要求:
1. **按钮状态切换:**
- 正常状态下显示"发送消息"按钮
- 模型输出期间,按钮文本变为"终止输出"
- 输出完成后,按钮恢复为"发送消息"
2. **中断机制:**
- 用户点击"终止输出"按钮时,立即停止当前的流式响应
- 已输出的部分内容保留在聊天历史中
- 系统应优雅地处理中断,避免产生错误或异常状态
3. **用户体验:**
- 按钮状态变化应该直观明确
- 中断操作应该响应迅速
- 中断后用户可以立即发送新消息
## 技术实现要点
- 需要在流式输出过程中检查中断信号
- 使用 Gradio 的事件处理机制管理按钮状态
- 确保中断后的状态清理和重置
## 验证方式
1. **启动应用:** 在终端中运行 `python app.py`
2. **打开聊天 Tab:** 在浏览器中打开应用,并切换到“聊天”标签页。
3. **发送消息:** 输入一条消息,点击“发送”按钮。
4. **观察按钮状态:** 确认“发送”按钮变为“终止”按钮。
5. **终止输出:** 在模型输出期间,点击“终止”按钮。
6. **验证中断:** 确认模型输出立即停止。
7. **验证按钮恢复:** 确认“终止”按钮恢复为“发送”按钮。
8. **验证可再次发送:** 确认可以立即发送新的消息。
9. **验证正常完成:** 发送一条简短消息,让其自然结束,确认结束后按钮会自动从“终止”恢复为“发送”。
## 验证结果
(暂无)