当前位置: 首页 > news >正文

mT5分类增强版中文-baseWebUI定制:添加历史记录本地存储与JSON导出功能

mT5分类增强版中文-baseWebUI定制:添加历史记录本地存储与JSON导出功能

1. 项目背景与价值

如果你正在使用文本增强工具来处理中文内容,可能会遇到一个常见问题:每次生成的结果都需要手动复制保存,时间一长就找不到之前的工作记录了。特别是当需要处理大量文本时,这种重复性的复制粘贴工作既耗时又容易出错。

mT5分类增强版中文-base模型是一个强大的文本增强工具,它在原有mT5模型基础上使用了大量中文数据进行训练,并引入了零样本分类增强技术。这意味着模型不需要额外的训练就能处理各种文本增强任务,而且输出稳定性大幅提升。

但是,原生的Web界面缺少一个关键功能:历史记录管理。本文将为你展示如何为这个强大的工具添加本地存储和JSON导出功能,让你的文本增强工作更加高效和有序。

2. 功能需求分析

在开始编码之前,我们先明确需要实现哪些功能:

核心功能需求:

  • 自动保存每次的文本增强记录,包括输入文本和所有生成结果
  • 支持查看历史记录,能够按时间排序和搜索
  • 提供一键导出功能,可以将历史记录保存为JSON文件
  • 支持清空历史记录,释放本地存储空间

用户体验需求:

  • 界面简洁易用,与原WebUI风格保持一致
  • 操作流程自然,不增加用户的学习成本
  • 数据存储安全可靠,避免意外丢失

3. 环境准备与代码结构

在开始修改之前,确保你已经部署了mT5分类增强版中文-base模型。WebUI的主要文件是webui.py,我们将在这个文件中添加新功能。

首先备份原始文件:

cp /root/nlp_mt5_zero-shot-augment_chinese-base/webui.py /root/nlp_mt5_zero-shot-augment_chinese-base/webui.py.backup

新的代码结构将在原有功能基础上增加历史记录管理模块。主要修改包括:

  • 在页面布局中添加历史记录面板
  • 实现本地存储功能(使用浏览器localStorage)
  • 添加JSON导出功能
  • 完善历史记录的管理界面

4. 核心代码实现

4.1 本地存储功能实现

首先,我们需要在JavaScript中实现本地存储功能。在WebUI的HTML模板中添加以下代码:

// 保存历史记录到本地存储 function saveToHistory(inputText, results, params) { const timestamp = new Date().toISOString(); const historyItem = { id: Date.now(), // 唯一ID timestamp: timestamp, input: inputText, results: results, params: params }; // 获取现有历史记录 let history = JSON.parse(localStorage.getItem('mt5_augment_history') || '[]'); // 添加新记录 history.unshift(historyItem); // 限制历史记录数量(最多保存100条) if (history.length > 100) { history = history.slice(0, 100); } // 保存回本地存储 localStorage.setItem('mt5_augment_history', JSON.stringify(history)); return historyItem; } // 从本地存储加载历史记录 function loadHistory() { return JSON.parse(localStorage.getItem('mt5_augment_history') || '[]'); } // 清空历史记录 function clearHistory() { localStorage.removeItem('mt5_augment_history'); return []; }

4.2 JSON导出功能实现

接下来实现导出功能,让用户可以将历史记录保存为JSON文件:

// 导出历史记录为JSON文件 function exportHistory() { const history = loadHistory(); if (history.length === 0) { alert('没有历史记录可导出'); return; } const dataStr = JSON.stringify(history, null, 2); const dataUri = 'data:application/json;charset=utf-8,'+ encodeURIComponent(dataStr); const exportFileDefaultName = `mt5_augment_history_${new Date().toISOString().slice(0,10)}.json`; const linkElement = document.createElement('a'); linkElement.setAttribute('href', dataUri); linkElement.setAttribute('download', exportFileDefaultName); linkElement.click(); }

4.3 历史记录界面集成

现在我们需要在WebUI界面中添加历史记录面板。在Gradio界面定义中添加相应的组件:

import json import gradio as gr from datetime import datetime # 在原有界面基础上添加历史记录组件 with gr.Blocks(title="mT5文本增强 - 带历史记录版") as demo: gr.Markdown("# mT5文本增强服务") # 原有输入输出组件... with gr.Row(): with gr.Column(): input_text = gr.Textbox(label="输入文本", lines=3) num_return_sequences = gr.Slider(1, 10, value=3, label="生成数量") # 其他参数组件... augment_btn = gr.Button("开始增强", variant="primary") with gr.Column(): output_text = gr.Textbox(label="增强结果", lines=10) # 新增历史记录面板 with gr.Row(): with gr.Column(): gr.Markdown("## 📋 历史记录") history_output = gr.JSON(label="历史记录", visible=False) history_table = gr.Dataframe( headers=["时间", "输入文本", "生成数量"], datatype=["str", "str", "number"], interactive=False, label="最近操作记录" ) with gr.Row(): export_btn = gr.Button("导出JSON", variant="secondary") clear_btn = gr.Button("清空历史", variant="stop") # 原有处理函数... def augment_text(text, num_return_sequences, max_length, temperature, top_k, top_p): # 原有的文本增强逻辑... results = [...] # 获取增强结果 # 保存到历史记录 history_item = { "timestamp": datetime.now().isoformat(), "input": text, "results": results, "params": { "num_return_sequences": num_return_sequences, "max_length": max_length, "temperature": temperature, "top_k": top_k, "top_p": top_p } } # 这里需要将历史记录保存到前端,实际实现需要通过JavaScript return results, history_item # 连接按钮和函数 augment_btn.click( fn=augment_text, inputs=[input_text, num_return_sequences, max_length, temperature, top_k, top_p], outputs=[output_text, history_output] )

5. 完整集成方案

由于Gradio的限制,我们需要使用JavaScript来实现完整的历史记录功能。以下是完整的集成方案:

5.1 修改webui.py文件

在webui.py文件中添加自定义JavaScript代码:

# 在demo.launch()之前添加自定义JS custom_js = """ <script> // 历史记录管理功能 function setupHistory() { // 初始化历史记录 if (!localStorage.getItem('mt5_augment_history')) { localStorage.setItem('mt5_augment_history', JSON.stringify([])); } // 保存历史记录函数 window.saveToHistory = function(inputText, results, params) { const timestamp = new Date().toISOString(); const historyItem = { id: Date.now(), timestamp: timestamp, input: inputText, results: results, params: params }; let history = JSON.parse(localStorage.getItem('mt5_augment_history') || '[]'); history.unshift(historyItem); // 限制最多100条记录 if (history.length > 100) { history = history.slice(0, 100); } localStorage.setItem('mt5_augment_history', JSON.stringify(history)); updateHistoryDisplay(); return historyItem; }; // 更新历史记录显示 function updateHistoryDisplay() { const history = JSON.parse(localStorage.getItem('mt5_augment_history') || '[]'); const tableData = history.map(item => [ new Date(item.timestamp).toLocaleString(), item.input.length > 50 ? item.input.substring(0, 47) + '...' : item.input, item.params.num_return_sequences || 1 ]); // 更新Gradio组件 if (window.gradio_api) { gradio_api( "predict", [JSON.stringify(tableData)], (data) => {}, "history_table" ); } } // 导出功能 window.exportHistory = function() { const history = JSON.parse(localStorage.getItem('mt5_augment_history') || '[]'); if (history.length === 0) { alert('没有历史记录可导出'); return; } const dataStr = JSON.stringify(history, null, 2); const dataUri = 'data:application/json;charset=utf-8,'+ encodeURIComponent(dataStr); const exportFileDefaultName = `mt5_augment_history_${new Date().toISOString().slice(0,10)}.json`; const linkElement = document.createElement('a'); linkElement.setAttribute('href', dataUri); linkElement.setAttribute('download', exportFileDefaultName); linkElement.click(); }; // 清空历史 window.clearHistory = function() { if (confirm('确定要清空所有历史记录吗?此操作不可撤销。')) { localStorage.setItem('mt5_augment_history', JSON.stringify([])); updateHistoryDisplay(); alert('历史记录已清空'); } }; // 初始加载时更新显示 setTimeout(updateHistoryDisplay, 1000); } // 页面加载完成后设置历史记录功能 document.addEventListener('DOMContentLoaded', setupHistory); </script> """ # 在demo创建时注入自定义JS demo = gr.Blocks(title="mT5文本增强 - 带历史记录版", js=custom_js)

5.2 添加历史记录更新函数

在Python端添加更新历史记录的函数:

def update_history_display(): """从前端获取历史记录并格式化显示""" # 这个函数主要通过JavaScript实现 # Python端主要负责触发更新 return [] # 连接清空和导出按钮 clear_btn.click( fn=lambda: None, inputs=None, outputs=None, js="clearHistory" ) export_btn.click( fn=lambda: None, inputs=None, outputs=None, js="exportHistory" )

6. 使用指南与最佳实践

6.1 如何使用新功能

查看历史记录:启动WebUI后,你会看到新增的历史记录面板。每次进行文本增强操作后,记录会自动保存并显示在表格中。

导出历史记录:点击"导出JSON"按钮,系统会将所有历史记录保存为一个JSON文件,方便你进行后续分析或备份。

清空历史记录:如果需要释放存储空间,可以点击"清空历史"按钮,确认后所有记录将被删除。

6.2 最佳实践建议

  1. 定期导出备份:建议每周导出一次历史记录,避免意外丢失数据
  2. 利用历史记录进行分析:导出的JSON文件可以用于分析文本增强的效果和模式
  3. 合理管理存储空间:系统自动保留最近100条记录,旧的记录会被自动删除

6.3 故障排除

历史记录不显示:

  • 检查浏览器是否支持localStorage
  • 尝试清除浏览器缓存后重新加载页面

导出功能不正常:

  • 检查浏览器是否阻止了文件下载
  • 尝试使用其他浏览器

7. 总结

通过本文的改造,mT5分类增强版中文-base模型的WebUI获得了实用的历史记录管理功能。现在你可以:

  • 自动保存每次文本增强的操作记录
  • 随时查看历史记录,了解之前的工作内容
  • 一键导出所有记录为JSON文件,方便后续分析
  • 轻松管理存储空间,保持系统运行效率

这个改进显著提升了工具的使用体验,特别适合需要处理大量文本增强任务的用户。历史记录功能不仅方便回顾和查找,还为质量分析和效果评估提供了宝贵的数据支持。

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

http://www.jsqmd.com/news/484854/

相关文章:

  • 实时口罩检测-通用效果惊艳案例:口罩类型识别(医用/布艺/N95)
  • SiameseUIE快速部署:Jupyter Notebook中交互式调用SiameseUIE
  • chandra多语言OCR实践:中英日韩文档批量处理方案
  • Hunyuan模型部署最佳实践:config.json关键字段说明
  • Qwen2.5-VL-7B-Instruct部署避坑指南:显存不足报错、端口冲突、环境依赖解决
  • GLM-4.7-Flash部署案例:高校科研助手——论文摘要润色与查重辅助
  • Z-Image Turbo智能助手:自动补全提示词的实用技巧
  • lite-avatar形象库开源价值:150+可商用2D数字人资产,MIT协议免费使用
  • EagleEye实战教程:构建带时间戳与地理位置元数据的检测结果数据库
  • cv_resnet101_face-detection_cvpr22papermogface效果展示:眼镜反光/头发遮挡场景识别
  • OFA视觉问答模型入门必看:VQA任务评估指标(Accuracy/VQA Score)简介
  • AudioSeal Pixel Studio效果展示:电话语音(窄带8kHz)水印兼容性
  • 南北阁 Nanbeige 4.1-3B 开源部署教程:支持CPU推理的国产轻量化模型实操手册
  • 文墨共鸣效果展示:中文城市治理‘网格化’‘精细化’‘智能化’语义协同关系水墨呈现
  • 收藏!小白程序员轻松入门大模型:重排序技术提升RAG检索效果
  • YOLOE官版镜像GPU算力适配:YOLOE-v8l-seg在多GPU环境下支持DDP分布式训练
  • 清音听真Qwen3-ASR-1.7B效果展示:突发新闻现场录音→关键人物/时间/地点三元组抽取
  • Llama-3.2V-11B-cot惊艳效果:芯片版图→设计规则检查→优化建议生成
  • Qwen3-ForcedAligner-0.6B部署教程:Prometheus+Grafana性能监控指标接入
  • StructBERT零样本分类-中文-base惊艳效果:含错别字/网络用语/中英混杂文本鲁棒性测试
  • 发展规划是否需要用书名?
  • Qwen3.5-27B图文理解教程:支持base64编码图片直传,适配移动端集成
  • ANIMATEDIFF PRO开发者教程:Flask API封装与前端HTML5/CSS3交互逻辑
  • Step3-VL-10B实战教程:WebUI自定义CSS主题+响应式布局适配技巧
  • GTE中文向量模型实操手册:Flask Web应用调试、gunicorn生产化与Nginx反代
  • 2026年主流CRM软件全解析:5大赛道产品对比、行业适配与选型原则 - 毛毛鱼的夏天
  • StructBERT文本相似度实战案例:在线教育题库建设中自动合并重复题目与选项
  • UDOP-large部署教程:多实例部署时GPU显存隔离与资源分配策略
  • StructBERT语义匹配系统监控方案:Prometheus+Grafana指标采集教程
  • DeEAR语音情感识别详细步骤:音频预处理标准化(静音切除、归一化、重采样)说明