系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

regression-testing

LLM 回归测试:把评估集、阈值和基线接入 CI,防止提示词/模型升级悄悄变差

补充说明

LLM 应用的回归测试和传统软件不同:输出不是精确字符串,评分有方差,模型/提示词/检索库/工具都可能变化。回归测试的目标不是“每次输出一样”,而是“关键指标不低于基线”。需要固定评估集、评分方法、基线版本和阈值,并把结果接入 CI。

典型触发:提示词修改、模型升级、RAG 分块/embedding 变更、工具 schema 变更、依赖升级。测试分层:单元(格式/JSON schema)、离线评估(准确率/召回/安全)、在线金丝雀(真实流量指标)。

常用示例

# promptfoo 配置示例
prompts:
  - file://prompts/support.txt
providers:
  - openai:gpt-4o-mini
tests:
  - vars:
      question: "如何重置密码?"
    assert:
      - type: contains
        value: "重置"
      - type: llm-rubric
        value: "回答包含具体步骤,且不承诺未经验证的处理时限"
# pytest + DeepEval:把评估变成测试用例
import pytest
from deepeval import assert_test
from deepeval.metrics import AnswerRelevancyMetric, FaithfulnessMetric
from deepeval.test_case import LLMTestCase

@pytest.mark.parametrize("case", load_cases("eval/support.jsonl"))
def test_answer_quality(case):
    output = app.answer(case["question"])
    test_case = LLMTestCase(
        input=case["question"], actual_output=output,
        expected_output=case["reference"], retrieval_context=case["context"],
    )
    assert_test(test_case, [AnswerRelevancyMetric(threshold=0.7),
                            FaithfulnessMetric(threshold=0.8)])
CI 门禁:
- 评估集版本固定,结果和基线对比
- 阈值按指标设定(准确率、召回、faithfulness、安全)
- 报告差异样本,失败的用例可复现
- 模型/提示词变更必须跑;失败阻止合并或触发人工复核
- 线上金丝雀观察延迟、错误率、用户反馈

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. LLM 回归测试和传统单元测试的最大区别是什么?
  2. 为什么必须保存基线指标和失败样本?
  3. 哪些变更应该触发回归测试?
答案
  1. 输出不是精确字符串,评分有方差;要用 rubric/语义指标和统计方法,而不是简单相等断言。
  2. 没有基线无法判断改进/退化;失败样本用于复现、定位和验证修复。
  3. 提示词、模型、RAG 分块/embedding、工具 schema、关键依赖和评测集本身的变更。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令