跳转至

程序脚本

本实验项目附带一个完整的 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 密钥

cp .env.example .env
# 编辑 .env 文件,填入你自己的 DeepSeek 和豆包 API 密钥

3. 启动图形界面

python run.py

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

六、自定义扩展

添加新任务

  1. data/questions/ 对应类型目录下新建 .txt 文件写入题目
  2. data/prompts/ 对应类型目录下新建三个子目录(low/medium/high),分别放入提示词
  3. 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(待补充)生成更丰富的交互图。

八、联系与贡献


许可证:本项目采用 MIT 许可证,欢迎 fork 和修改。