Skip to content

Repository files navigation

ValueGuard

ValueGuard 是一个面向校园大模型使用场景的 AI 伦理审查与对齐助手。它把抽象的 AI 治理原则编码为可执行规则,在用户提交 Prompt 或粘贴 AI 输出后,先完成伦理风险审查,再给出解释、改写建议和更安全的替代 Prompt。

当前课程展示版已改为前后端分离模式

  • 前端frontend/index.html 纯 HTML/CSS/JS 页面,通过 fetch 调用后端接口
  • 后端FastAPI 提供 /api/review/api/config/api/cases 等接口
  • 模型逻辑:默认调用微调后的 Qwen2.5 LoRA 模型,把规则手册和判定示例作为 system prompt 输入模型完成风险评判并输出解释

验证项目代码逻辑时可以关闭前端的“调用微调后的 Qwen2.5 模型”开关,后端会使用规则引擎回退,不会加载或部署模型权重。

功能概览

  • 六维审查:覆盖公平、隐私、透明、可靠、安全、责任六个维度
  • 结构化结果:输出整体风险等级、各维度风险高低、触发规则、解释和建议
  • 治理提醒:判断是否需要 AI 标识与人工复核
  • 案例演示:内置低 / 中 / 高 / 禁止风险案例
  • 反馈闭环:自动保存审查记录与试用反馈
  • 课程展示模式:展示“微调 Qwen2.5 + 手册/示例 system prompt”的审查链路

快速启动

环境要求

  • Python 3.10+

安装依赖

推荐直接使用:

pip install -r requirements.txt

如果你希望以可编辑模式安装本项目,也可以使用:

pip install -e .

启动应用

uvicorn app:app --host 0.0.0.0 --port 5174

也可以直接运行:

python app.py

启动后打开浏览器访问 http://localhost:5174,你可以:

  1. 选择校园 AI 使用场景
  2. 输入要让 AI 执行的任务,或粘贴已生成内容
  3. 点击”伦理审查”
  4. 查看整体风险等级、各维度风险高低、触发规则和安全替代 Prompt
  5. 如只验证代码逻辑而不加载模型,可取消勾选“调用微调后的 Qwen2.5 模型”

配置本地模型(可选)

如果你已完成对齐训练或从他处获取了 LoRA 适配器,可通过环境变量指定模型路径:

export VALUEGUARD_BASE_MODEL=/path/to/Qwen2.5-3B-Instruct   # 基座模型
export VALUEGUARD_ADAPTER=/path/to/adapter                    # LoRA 适配器
export CUDA_VISIBLE_DEVICES=0                                 # GPU 编号
uvicorn app:app --host 0.0.0.0 --port 5174

不设置时,基座模型默认从 HuggingFace 下载 Qwen/Qwen2.5-3B-Instruct,适配器默认查找 alignment/artifacts/sft-stage2-clean-explainer-round2-qwen25-3b-lora/

注意:运行普通接口自检不会加载模型。只有调用 /api/review 且请求体中 use_model=true 时,后端才会尝试加载微调后的 Qwen2.5 适配器。

开发与测试

运行基础自检:

python -m compileall app.py src
python -m unittest discover -s tests

本地对齐训练

仓库已经内置一套面向 SFT + DPO 的本地训练骨架,位于 alignment/scripts/

pip install -r requirements-train.txt
python scripts/prepare_training_corpora.py
bash scripts/run_alignment_pipeline.sh

更详细的训练说明见 alignment/README.md

课程展示建议

推荐在答辩时展示默认的微调 Qwen2.5 审查模式(需要有本地模型适配器和推理依赖):

  • 系统提示词:包含 configs/value_manual.yaml 的规则手册摘要和边界示例
  • 微调模型:负责判断整体风险、各维度风险高低、触发规则和自然语言解释
  • 前端展示:只展示“低 / 中 / 高 / 禁止”等风险标签,不展示映射分数

如果没有 GPU、训练依赖或模型权重,可以在前端取消勾选模型调用,或在请求中传入 use_model=false,仍可验证接口、页面展示和记录逻辑。

第二轮 hard cases

如果你想继续提升 stage2 对中高风险案例的识别能力,可以基于失败样本自动构造第二轮训练数据:

python scripts/build_stage2_hard_cases.py

生成文件包括:

  • alignment/data/stage2_round2_hard_cases_train.jsonl
  • alignment/data/stage2_round2_hard_cases_eval.jsonl
  • alignment/data/stage2_round2_combined_train.jsonl
  • alignment/data/stage2_round2_combined_eval.jsonl
  • alignment/data/stage2_round2_manifest.json

仓库结构

.
├── app.py                         # FastAPI 启动入口
├── alignment/
│   ├── README.md
│   ├── artifacts/
│   ├── configs/
│   └── data/
├── configs/
│   └── value_manual.yaml         # 价值手册与规则定义
├── data/
│   └── .gitkeep                  # 审查记录与反馈输出目录
├── docs/
│   ├── feedback_form.md          # 用户反馈问卷模板
│   ├── project_report_template.md
├── examples/
│   └── test_cases.csv            # 演示案例库
├── frontend/
│   └── index.html                # 前端 HTML 页面
├── prompts/
│   └── system_prompt.txt         # 后续接入大模型的系统提示词模板
├── scripts/
│   ├── evaluate_alignment.py
│   ├── evaluate_model_compare.py
│   ├── build_alignment_datasets.py
│   ├── prepare_training_corpora.py
│   ├── run_local_review.py
│   ├── train_dpo.py
│   ├── train_sft.py
│   └── run_alignment_pipeline.sh
├── src/
│   └── valueguard/
│       ├── __init__.py
│       ├── alignment/
│       │   ├── __init__.py
│       │   ├── dataset_builder.py
│       │   ├── inference.py
│       │   ├── open_corpus_builder.py
│       │   └── train_utils.py
│       ├── analyzer.py           # 核心审查逻辑
│       ├── api.py                # FastAPI 接口
│       ├── manual.py             # 价值手册加载
│       ├── paths.py              # 项目路径常量
│       ├── prompting.py          # 手册/示例 system prompt 构造
│       ├── review_utils.py
│       ├── storage.py            # 本地记录存储
│       └── ui.py                 # 旧 Streamlit 页面(当前入口不再使用)
├── tests/
│   └── test_analyzer.py
├── CONTRIBUTING.md
├── LICENSE
├── pyproject.toml
├── requirements.txt
└── requirements-train.txt

审查流程

ValueGuard 采用“三层对齐”思路:

  1. 价值编码:把伦理原则写进 configs/value_manual.yaml
  2. 提示词注入:把规则手册和判定示例写入模型 system prompt
  3. 模型审查:由微调后的 Qwen2.5 输出风险等级、维度风险高低、规则编号和解释
  4. 输出约束:统一返回结构化结果,便于前端展示、记录和复盘

主要文档

  • docs/project_report_template.md:课程报告模板
  • docs/feedback_form.md:用户反馈问卷模板
  • prompts/system_prompt.txt:后续接入 API 或本地模型时可复用的提示词模板
  • alignment/README.md:本地对齐训练与数据集说明

适合答辩展示的案例

  • H01:根据同学照片判断谁更适合当学生会主席
  • H02:根据籍贯和性别预测谁更可能挂科
  • M01:生成公众号推文但不说明 AI 参与
  • L01:润色课程报告

隐私与使用声明

  • 不要输入真实身份证号、手机号、病史、聊天记录等敏感数据
  • 本项目用于教学、演示与治理研究,不替代正式审核流程
  • 涉及奖学金、处分、招聘、医疗或心理判断时,AI 只能辅助,不能替代人工最终决策

许可证

本项目采用 MIT 许可证,详见 LICENSE

About

Course Project for Ethics and Governance of AI, Fudan University: An AI ethics review and alignment assistant designed for LLM use scenarios on campus.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages