TDD的终结:为何“Evaluation Engineering”是新的Source Code

发布: (2026年1月2日 GMT+8 03:44)
5 分钟阅读
原文: Dev.to

Source: Dev.to

我最近看到一位初级工程师尝试为一个 LLM 代理编写单元测试。

他们想断言 response == "I can help with that"。测试失败了,因为 AI 回答道:“I would be happy to help with that.” 这位工程师叹了口气,更新了字符串后重新运行。结果再次失败。

这就是当今 AI 工程的现状:我们试图把概率系统强行塞进确定性的盒子里,这正在破坏我们的工作流。

在传统软件中,我们先编写实现(parse_date()),再编写测试(assert parse_date("2024-01-01") == date(2024, 1, 1))。但在 AI 场景下,AI 编写实现。我们的工作不再是写逻辑,而是写考题。

我把这称为 Evaluation Engineering,它将是你今年编写的最有价值的代码。

范式转变:从 TDD 到 Eval‑DD

在旧的世界里,人类是编码者,机器是执行者。在新的世界里,AI 是编码者,人类是审查者

你无法编写单元测试来覆盖 AI 回答的每一种创造性变体。相反,你需要从 测试驱动开发 (TDD) 转向 评估驱动开发 (Eval‑DD)

评估工程的三大支柱

我构建了一个简单的框架来取代我的单元测试。它由每个 AI 代码库都需要的三个核心组件组成。

1. 金色数据集(“规范”)

停止编写散文式的规范。它们对大型语言模型毫无用处。在 Eval‑DD 中,数据集本身就是规范。

# The Dataset IS the Spec
dataset.add_case(
    id="edge_001",
    input="Parse this date: 2024-13-01",  # Invalid month
    expected_output="ERROR",
    tags=["invalid", "edge_case"],
    difficulty="hard"
)

该数据集精确定义了“好”的标准。它是唯一的真理来源。如果 AI 通过了此数据集,则已准备好投入生产;如果未通过,则不行。

2. 评分标准(“评审”)

大多数团队只依据二元正确性进行评分,但现实中的答案可能是正确但有毒安全但无用ScoringRubric 类允许在加权维度上进行多维度评分。

rubric = ScoringRubric("Customer Service Rubric", "Evaluates correctness AND tone")

# Correctness is important...
rubric.add_criteria(
    dimension="correctness",
    weight=0.5,
    description="Does it solve the problem?",
    evaluator=correctness_evaluator
)

# ...but so is not being a jerk.
rubric.add_criteria(
    dimension="tone",
    weight=0.4,
    description="Is it polite and empathetic?",
    evaluator=tone_evaluator
)

如果 AI 回答“只要点忘记密码,显而易见”,它会得到:

  • 正确性: 10/10
  • 语气: 0/10
  • 最终得分: 5/10(不及格)

这捕捉到了简单 assert 语句无法体现的细微差别。

3. 评估运行器(“测试套件”)

运行器将 AI 在金色数据集上执行,并使用评分标准进行评分,取代 pytest。它报告通过率并指示你的提示工程是否有效。

runner = EvaluationRunner(dataset, rubric, my_ai_function)
results = runner.run(verbose=True)

if results['pass_rate'] > 0.9:
    print("🎉 AI meets requirements!")
else:
    print("❌ AI needs improvement")

为什么这很重要

它改变了如何工作。

  • 先写评估标准。 在编写提示之前,先定义成功的样子。
  • 迭代提示,而不是代码。 当测试失败时,调整系统提示或少量示例,而不是重写 Python 逻辑。
  • “源代码”已转移。 知识产权不再是包装代码;IP 是评估套件

高级工程师的新工作

如果你担心 AI 会抢走你的编码工作,完全不必担心。工作已经变了。

难点不再是生成代码(Cursor、Copilot 已经能做到)。难点在于:

  • 定义 Golden Dataset(捕获边缘案例)。
  • 调整 Rubric(将工程判断编码为权重)。
  • 分析 Failures(弄清 AI 出错的 原因)。

我们正离开确定性逻辑的时代,迈入概率工程的时代。别再通过提示乞求你的 AI 表现良好。开始给它打分吧。

Back to Blog

相关文章

阅读更多 »

RGB LED 支线任务 💡

markdown !Jennifer Davishttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...

Mendex:我为何构建

介绍 大家好。今天我想分享一下我是谁、我在构建什么以及为什么。 早期职业生涯与倦怠 我在 17 年前开始我的 developer 生涯……