第 24 页 / 共 100 页 / 飞书修订版 7

4.Running the eval

此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)

邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org

==================================================

现在我们的评估数据集已经准备就绪,是时候构建核心评估管道了。这包括获取每个测试用例,将其与我们的提示词合并,输入给Claude,然后对结果进行评分。

image1.png

评估过程遵循一个清晰的工作流程:我们获取测试用例数据集,将每个用例与我们的提示词模板结合,发送给Claude进行处理,然后使用评分系统对输出结果进行评估。

构建核心函数

评估管道由三个主要函数组成,每个函数都有特定的职责。让我们从最简单的一个开始——处理单个提示词的函数。

run_prompt 函数

这个函数接收一个测试用例并将其与我们的提示词模板合并:

def run_prompt(test_case):

"""合并提示词和测试用例输入,然后返回结果"""

prompt = f"""

请解决以下任务:

{test_case["task"]}

"""

messages = []

add_user_message(messages, prompt)

output = chat(messages)

return output

目前,我们将提示词保持得极其简单。我们没有包含任何格式化指令,所以Claude可能会返回比我们需要的更冗长的输出。我们将在后续迭代提示词设计时完善这一点。

run_test_case函数

该函数负责协调运行单个测试用例并对结果进行评分:

def run_test_case(test_case):

"""调用run_prompt,然后对结果进行评分"""

output = run_prompt(test_case)

# TODO - 评分

score = 10

return {

"output": output,

"test_case": test_case,

"score": score

}

目前,我们使用硬编码的分数10。评分逻辑是我们在接下来的章节中会花费大量时间的地方,但这个占位符让我们可以测试整个流水线。

run_eval 函数

这个函数协调整个评估过程:

def run_eval(dataset):

"""加载数据集并对每个案例调用 run_test_case"""

results = []

for test_case in dataset:

result = run_test_case(test_case)

results.append(result)

return results

这个函数处理数据集中的每个测试案例,并将所有结果收集到一个列表中。

运行评估

要执行我们的评估流水线,我们需要加载数据集并通过我们的函数运行它:

with open("dataset.json", "r") as f:

dataset = json.load(f)

results = run_eval(dataset)

第一次运行时,预计需要一些时间 - 即使使用 Claude Haiku,处理完整数据集也可能需要大约30秒。我们稍后会介绍优化技术。

检查结果

评估返回一个结构化的 JSON 数组,其中每个对象代表一个测试用例结果:

print(json.dumps(results, indent=2))

image2.png

每个结果包含三个关键信息:

  • output:来自 Claude 的完整响应
  • test_case:被处理的原始测试用例
  • score:评估分数(目前是硬编码的)

正如您在输出中看到的,Claude 生成的响应相当冗长,因为我们还没有提供具体的格式化指令。这正是我们在完善提示词时需要解决的问题类型。

image3.png

我们已经完成的工作

到目前为止,我们已经成功构建了核心评估管道。我们可以获取数据集,通过 Claude 进行处理,并收集结构化结果。主要缺失的部分是评分系统——那个硬编码的分数 10 需要被实际的评估逻辑所替代。

这个管道代表了大多数 AI 评估系统的基础。虽然看起来很简单,但您刚刚构建了评估管道实际功能的大部分内容。复杂性体现在细节中——更好的提示词、复杂的评分机制和性能优化。

接下来,我们将深入探讨评分器这一关键主题,它将把我们的硬编码分数转换为对 Claude 性能的有意义评估。

==================================================



此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org