Skip to content
🔗 分享本题
查看我的学习进度 →

AI 基线版本与候选版本在固定数据和多层测试中的回归比较图

🧠 记忆锚点:固定数据与版本,既测确定性契约也测概率分布;看分层退化,不只看平均分。

💡 答案要点

回归测试挑战:

  1. LLM 输出有随机性,不能简单对比
  2. 测试用例维护成本高
  3. 评估标准主观性强

测试框架:

┌─────────────────────────────────────────────────────────┐
│                   AI 应用回归测试框架                     │
└─────────────────────────────────────────────────────────┘

测试集 → 执行 → 评估 → 报告
  ↓       ↓       ↓       ↓
黄金用例  批量运行  自动评分  对比分析

测试用例设计:

类型说明示例
黄金用例标准问题 + 标准答案"北京天气?" → "北京今天晴..."
边界用例极端或异常情况超长输入、特殊字符
对抗用例故意攻击测试Prompt 注入、越狱尝试
回归用例历史 Bug 复现之前修复的问题

评估方法:

python
# 语义相似度评估
from sentence_transformers import SentenceTransformer

model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')

def semantic_similarity(text1, text2):
    emb1 = model.encode(text1)
    emb2 = model.encode(text2)
    return cosine_similarity([emb1], [emb2])[0][0]

# 测试用例
test_cases = [
    {"input": "北京天气", "expected": "北京今天晴朗...", "threshold": 0.8},
    {"input": "上海气温", "expected": "上海今天 25 度...", "threshold": 0.8},
]

for case in test_cases:
    actual = llm.generate(case["input"])
    score = semantic_similarity(actual, case["expected"])
    assert score >= case["threshold"], f"相似度 {score} 低于阈值"

面试话术:

"黄金集应按真实任务和风险分层,并持续加入线上失败案例。语义相似度只能覆盖部分质量,阈值必须用人工标注校准;安全集只能证明已测攻击下的表现,不能保证‘不会被越狱’,还需红队、权限隔离和持续监控。"

📚 参考:promptfoo(LLM 回归测试工具)