程序脚本
本实验项目附带一个完整的 Python 图形界面工具,用于批量调用LLM API、管理实验数据、辅助评分与结果可视化。
一、程序功能概览
使用 python run.py 启动后,你将看到一个基于 PyQt5 的多标签页图形界面,包含三个主要面板:
| 面板 | 功能 |
|---|---|
| 实验控制面板 | 选择模型(DeepSeek / 豆包)、指定任务与提示词质量等级,调用 API 获取模型输出并自动保存 |
| 评分面板 | 加载模型输出,根据预设的评分标准(解题/资料查找/复杂实践三类)逐项打分,生成评分记录 |
| 结果展示面板 | 展示评分汇总表(final_scores.csv),并支持生成柱状图、热力图、箱线图等可视化图表 |
二、程序结构速览
prompt-quality-matters/
│
├── run.py # 主程序入口(启动GUI)
├── gui/ # PyQt5图形界面模块
│ ├── main_window.py # 主窗口
│ ├── experiment_panel.py # 实验控制面板
│ ├── scoring_panel.py # 评分面板
│ ├── results_panel.py # 结果展示面板
│ └── utils.py # 工具函数
├── request/ # API请求模块
│ ├── base.py # 基础请求类
│ ├── ask_deepseek.py # DeepSeek API调用
│ └── ask_doubao.py # 豆包 API调用
└── data/ # 实验数据目录
├── prompts/ # 27个分级提示词文件
├── questions/ # 9个原始问题描述
├── outputs/ # 162个模型输出txt文件
└── scores/ # final_scores.csv 评分汇总
三、快速开始
如果你只需要运行已有的实验输出并查看评分,无需配置 API 密钥。若需重新运行模型调用实验,则必须配置 API 密钥。
1. 环境准备
# 克隆仓库
git clone https://gitee.com/otodone/prompt-quality-matters.git
cd prompt-quality-matters
# 创建并激活 conda 环境(推荐)
conda env create -f environment.yml
conda activate prompt-quality-matters
# 或者使用 pip 安装依赖
pip install pyqt5 requests pandas matplotlib seaborn
2. 配置 API 密钥
3. 启动图形界面
4. 数据分析(非 GUI 方式)
# 直接查看评分汇总
cat data/scores/final_scores.csv
# 使用 Pandas 快速分析
python -c "import pandas as pd; df = pd.read_csv('data/scores/final_scores.csv'); print(df.groupby(['model', 'quality'])['total_score'].mean())"
四、实验数据文件说明
程序运行过程中会读取/写入以下文件(均已包含在仓库中):
| 路径 | 内容 | 数量 |
|---|---|---|
data/questions/problem_solving/*.txt |
解题任务原始题目(数学、土力学、逻辑) | 3 |
data/questions/information_lookup/*.txt |
资料查找任务原始题目(概念、诺贝尔、HCI) | 3 |
data/questions/complex_practice/*.txt |
复杂实践任务原始题目(MBTI、受力分析、光追) | 3 |
data/prompts/*/*.txt |
每个题目对应的低/中/高三级提示词 | 27 |
data/outputs/deepseek/*/*.txt |
DeepSeek 模型输出(每条件3次重复) | 81 |
data/outputs/doubao/*/*.txt |
豆包模型输出(每条件3次重复) | 81 |
data/scores/final_scores.csv |
最终评分汇总表(含每次评分的明细) | 1 |
五、评分标准与 CSV 字段说明
final_scores.csv 包含以下关键字段:
| 字段名 | 含义 | 示例值 |
|---|---|---|
| model | 模型名称 | deepseek / doubao |
| task_type | 任务大类 | problem_solving / information_lookup / complex_practice |
| task_id | 具体任务 | math / soil_mechanics / logic / concept / nobel / hci / mbti / beam / raytracer |
| quality | 提示词质量等级 | low / medium / high |
| trial | 重复次数(第几次实验) | 1 / 2 / 3 |
| score_correctness | 答案正确性得分(解题任务) | 0-1(或 0-2,具体见评分标准) |
| score_process | 推理过程得分(解题任务) | 0-2 |
| score_fact | 事实准确性得分(资料查找任务) | 0-2 |
| score_completeness | 完整度得分(资料查找任务) | 0-1 |
| score_relevance | 相关性得分(资料查找任务) | 0-1 |
| score_function | 功能实现得分(复杂实践任务) | 0-2 |
| score_code_quality | 代码质量得分(复杂实践任务) | 0-2 |
| score_usability | 可用性得分(复杂实践任务) | 0-1 |
| total_score | 该次实验的总分(满分3/4/5) | 如 2.5 |
六、自定义扩展
添加新任务
- 在
data/questions/对应类型目录下新建.txt文件写入题目 - 在
data/prompts/对应类型目录下新建三个子目录(low/medium/high),分别放入提示词 - 在
gui/scoring_panel.py的评分标准字典中注册新任务及其满分结构
接入其他 LLM API
- 参考
request/ask_deepseek.py的写法,在request/下新增ask_xxx.py - 在
experiment_panel.py的模型选择下拉框中添加新模型名称
七、常见问题
Q:启动 GUI 时提示缺少模块?
A:运行 pip install pyqt5 requests pandas matplotlib seaborn 安装依赖。
Q:没有 API 密钥,能否使用程序?
A:可以。程序已预置 data/outputs/ 目录下的所有模型输出结果,你可以直接使用“评分面板”进行人工评分,或查看“结果展示面板”中已有的评分数据。
Q:如何重新运行所有实验?
A:配置好 .env 中的 API 密钥,然后在实验控制面板中依次选择每个(模型、任务、质量等级)组合,点击“运行”即可。程序会自动覆盖 data/outputs/ 中对应的输出文件。
Q:评分面板中打开输出文件时,如何快速定位?
A:程序已经按照 model/task_type/task_id/quality/trial.txt 的目录结构组织文件,文件选择对话框会默认定位到正确的类型目录。
Q:结果展示面板的图表是静态的还是可交互的?
A:目前生成的是 matplotlib 静态图片(PNG格式),但你可以复制图表数据到 Excel 或使用 scripts/visualize.py(待补充)生成更丰富的交互图。
八、联系与贡献
- 项目仓库:https://gitee.com/otodone/prompt-quality-matters
- 报告问题或建议:请提交 Gitee Issue
许可证:本项目采用 MIT 许可证,欢迎 fork 和修改。