← 工程作品集 · 项目 11(LLM-as-judge + 漂移监控)的真实案例
⚖️ 诗社的 LLM-judge 系统
小恒 · 16 岁 · Qwen 本地评分模型 + 回归测试
背景 · 评分的困境
小恒参加学校诗社。诗社每个月收 200+ 首诗(社员投稿),导师需要评分。导师说:"评诗很主观,我得读每一首花 5 分钟,月底要花几十小时。能不能用 AI 辅助评分?" 小恒决定做一个 LLM-judge 系统,用本地 Qwen 评分。
系统设计 · 人机对齐
- 数据: 500+ 首历年参赛诗 + 导师评分(gold standard)
- 模型: Qwen 7B,fine-tune 在诗歌评分任务上
- 对齐指标: 人机对齐度 78% → 导师的评分和 AI 的评分偏差 < 1 分(5 分制)
- 漂移检测: 一旦识别到 AI 的评分规律改变(比如新增了一种偏好),自动告警
回归测试 + 漂移检测
【回归测试:对 100 首参考诗进行定期评分】
def run_regression_test(model, ref_poems, gold_scores):
predictions = []
for poem in ref_poems:
score = model.score(poem) # 1-5
predictions.append(score)
accuracy = calculate_alignment(predictions, gold_scores)
return accuracy # 应该 >= 77%
【漂移检测:评分分布的变化】
def detect_drift(old_scores, new_scores, threshold=0.1):
"""
比较旧评分分布和新评分分布
如果分布发生显著变化(> 10%),说明漂移了
"""
old_mean = mean(old_scores)
new_mean = mean(new_scores)
drift_rate = abs(new_mean - old_mean) / old_mean
if drift_rate > threshold:
alert(f"Model drift detected: {drift_rate*100:.1f}%")
return True
return False
【版本控制示例】
v1.0 (2026-02-15): Base model, 78% alignment
v1.1 (2026-03-20): After 50 new poems, 77% (drift: 1%)
v1.2 (2026-04-05): Model update, re-tuned → 81% alignment ✓
人机评分对比
| 诗 | 导师评分 | AI 评分 | 差异 | 备注 |
|---|---|---|---|---|
| 《春天回来了》 | 4 | 4 | 0 | 完全同意 |
| 《雨的独白》 | 5 | 4 | 1 | AI 低估了意象 |
| 《无题》 | 2 | 2 | 0 | 都认为平庸 |
| 《灯火阑珊处》 | 3 | 4 | 1 | AI 高估了韵律 |
一次真实的漂移发现
时间: 2026-04-05
发生了什么: Qwen 更新了版本(从 7B 改到一个新的 fine-tune 版本)。小恒运行回归测试,发现对同样的 100 首参考诗,新模型的评分分布发生了明显变化:特别是"古韵类诗歌"的评分从平均 3.2 升到 3.8。
原因分析: 新的 fine-tune 学到了对"古典意象"的更强偏好。
处理: 小恒没有立刻替换,而是和导师讨论:"新模型对古诗的评分是否更合理?" 导师看了几个例子,说"确实公平一些"。确认后才更新为 v1.2。
实际效果
- 评分样本: 500+ 首诗
- 人机对齐度: 78%(5 分制,平均误差 < 1)
- 时间节省: 导师原来需要 50 小时/月,现在 10 小时/月(先看 AI 评分,只复核有争议的)
- 诗社反馈: "虽然不如导师那么细致,但至少是一致的、透明的"