前言
测试开发工程师在日常工作中需要处理大量测试文档,并且这些文档需要被高效分类、清洗和管理,同时结合强大的 AI 推理能力(如 DeepSeek 模型)进行智能化处理和分析。为此,我们开发了一款基于 PyQt5 的 GUI 工具,集 文件分类、内容清洗、内容展示、DeepSeek推理 和 结果导出 于一体。本地的deepseek-r1由于硬件受限,推理能力难以达到预期。使用三方提供的免费API接口,生成的结果较为满意。由于各位宝子所在公司模板要求不一,这里会将用例导出为json格式输出。
由于阿里云百炼的deepseek-r1接口不支持返回json格式,代码里进行了简单的适配。所有在输入提示词的时候,最好是加入以json格式输出。这样代码可以拿来即用。
本文将详细介绍这款工具的功能实现,并提供完整的源码,让测试工程师轻松实现测试文档的智能化管理与分析。
功能特点
智能文档分类:
- 支持常见文本格式:
docx
、xlsx
、md
、txt
、pdf
。 - 使用
阿里云百炼的deepseek-r1
模型API推理,更加智能。 - 使用
NLTK
进行智能清洗,仅保留有效内容。 - 支持用户手动修正分类。
self.template_phrases = [ "请参考以下格式", "本段用于描述", "请参照", "示意图", "文档信息", "版本记录", "目 录", "运行维护", "终端设备", "网络需求", "其他", "【注:以下内容,请做 标注】", "不涉及", "【注:需求规格说明书经业务、开发确认后可形成定版需求,版本号统一为V1.0】", "其他", "【注:以下内容,请做 标注】", "不涉及", "V1.0", "需求规格说明书", "【注:描述本批处理涉及的计算公式,比如退保金计算公式,尽可能列举实际案例说明】" ]
- 支持常见文本格式:
知识库目录选择与文件展示:
- 可通过下拉框选择知识库目录,本地的知识库需维护好,选取了文件后,会按预设的模板内容进行清洗,页眉、页脚及目录等信息也会被清除。
def clean_text(self, text): """ 文本清洗处理 """ # 去除标点 text = self.clean_headers_footers(text) cleaned_content = self.remove_template_phrases(text) return cleaned_content
- 联动展示所选目录下的所有文件。
- 支持文件单选、多选或全选。
效果如下图所示:
文件内容展示与编辑:
- 拼接多个文件内容并在文本框中展示。
- 提供输入框,供用户输入提示词,这里适配了json格式,所以可以在提示词中加入以json格式输出。
DeepSeek智能推理:
- 结合选取的文件内容和提示词,使用 DeepSeek 模型生成推理结果。
- 推理完成后结果进行展示。代码如下,需要注意的是需要更换代码里的api-key的值为自己的哦:
def generate_cases(self, content_param, prompt_param): # 初始化OpenAI客户端 client = OpenAI( # 如果没有配置环境变量,请用百炼API Key替换:api_key="sk-xxx" api_key='sk-xxx', # todo 此处需更换 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1" ) reasoning_content = "" # 定义完整思考过程 answer_content = "" # 定义完整回复 is_answering = False # 判断是否结束思考过程并开始回复 # 创建聊天完成请求 completion = client.chat.completions.create( model="deepseek-r1", # 此处以 deepseek-r1 为例,可按需更换模型名称 messages=[ {'role': 'user', 'content': f'文档内容: {content_param}, 提示词:{prompt_param}'} ], stream=True, # 解除以下注释会在最后一个chunk返回Token使用量 # stream_options={ # "include_usage": True # } ) print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n") for chunk in completion: # 如果chunk.choices为空,则打印usage if not chunk.choices: print("\nUsage:") print(chunk.usage) else: delta = chunk.choices[0].delta # 打印思考过程 if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None: print(delta.reasoning_content, end='', flush=True) reasoning_content += delta.reasoning_content else: # 开始回复 if delta.content != "" and not is_answering: print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n") is_answering = True # 打印回复过程 print(delta.content, end='', flush=True) answer_content += delta.content return answer_content
结果导出:
- 支持将推理结果导出为用户指定的文件格式(如
json
)。 - 用户可自定义文件命名。
- 支持将推理结果导出为用户指定的文件格式(如
- 美观大方的 GUI 界面:
- 使用 PyQt5 开发,布局简洁美观,符合大众审美。
保存的文件内容如下图所示:
总结
这款工具集智能推理和结果导出为一体,功能强大,界面美观,操作简洁,帮助测试开发工程师高效管理和分析测试文档。快来体验吧,让你的测试工作更智能!后续可在文档分类、内容清洗等方向持续优化。升级后的源码已上传云盘