Prompt 评估体系:构建自动化测试集
如果不能衡量它,就不能改进它。 在传统的软件工程中,单元测试(Unit Test)是代码质量的保证。 在 Prompt Engineering 中,我们同样需要一套评估体系 (Evals)。 没有 Evals,任何 Prompt 的修改都是“盲改”。 也许改了这句,那个 Case 好了,但另外 10 个 Case 坏了(Regression)。
1. 评估的核心挑战
LLM 的输出是开放的(Open-ended)。 对于 "Write a poem about AI",没有唯一的标准答案。 这就导致了评估的困难:
- 非确定性:同样的 Prompt,每次输出都不一样。
- 主观性:好坏取决于人的审美。
- 多维度:准确性、流畅性、安全性、格式规范性。
2. 评估方法论:从规则到模型
2.1 基于规则 (Rule-based)
最简单,最客观。
- Exact Match (EM):完全匹配。适用于数学题、代码填空。
- Contains Keyword:包含特定关键词。适用于 RAG 问答(必须包含原文实体)。
- JSON Schema Validation:输出是否符合 JSON 格式。
- Length Check:字数是否达标。
2.2 基于参考答案 (Reference-based)
即使没有唯一答案,如果有标准答案(Ground Truth),也可以计算相似度。
- Embedding Similarity:计算生成文本与参考文本的向量余弦相似度(Cosine Similarity > 0.8)。
- ROUGE / BLEU:传统的 NLP 指标(N-gram 重叠率)。虽然过时,但仍有参考价值。
2.3 基于模型 (Model-based / LLM-as-a-Judge)
让另一个更强的模型(如 GPT-4)来当裁判。 Prompt:
"You are an expert judge. Here is a question, a reference answer, and a student answer. Rate the student answer from 1 to 5 based on accuracy and helpfulness. Explain your reasoning first."
这种方法被称为 LLM-as-a-Judge。 它虽然昂贵,但是最接近人类评估(Human Eval)。 常用框架:G-Eval, Prometheus, JudgeLM。
3. 构建 Golden Dataset (黄金数据集)
评估的前提是有数据。 你需要建立一个 Golden Dataset,包含高质量的 (Input, Expected Output) 对。
3.1 来源
- 人工编写:最精准,但成本高。
- 生产日志挖掘:从线上日志中挑选典型 Case,人工修正。
- 合成数据:用 GPT-4 生成一批 Case,人工审核。
3.2 维护
Golden Dataset 是活的。 每当线上出现 Bad Case,都要第一时间加入 Dataset,防止以后再次出现(Regression Test)。
4. 工具链推荐
4.1 Ragas
专为 RAG 系统设计的评估框架。
- Context Precision:检索到的文档是否相关?
- Context Recall:是否遗漏了关键信息?
- Faithfulness:回答是否忠实于原文?
- Answer Relevancy:回答是否切题?
4.2 TruLens
记录每一次 LLM 调用的输入输出,并自动计算 Feedback Function(如 PII 检测、毒性检测)。 支持 Dashboard 可视化。
4.3 DeepEval
基于 PyTest 的 LLM 测试框架。 你可以像写单元测试一样写 Prompt 测试:
from deepeval import assert_test
from deepeval.metrics import AnswerRelevancyMetric
from deepeval.test_case import LLMTestCase
def test_answer_relevancy():
input = "What if these shoes don't fit?"
actual_output = "We offer a 30-day full refund at no extra cost."
metric = AnswerRelevancyMetric(threshold=0.7)
test_case = LLMTestCase(input=input, actual_output=actual_output)
assert_test(test_case, [metric])Prompt Engineering 正在变成 Prompt Programming。 而 Evals 就是它的 CI/CD。 只有建立了完善的评估体系,我们才能在大模型的浪潮中,稳步前行,不断迭代,打造出真正可用的 AI 产品。