現在我們已經準備好評估資料集,接下來是時候建立核心評估流程了。這包括取出每個測試案例,將其與我們的提示合併,餵給 Claude,然後對結果進行評分。

評估流程遵循一個清晰的工作流程:我們取出測試案例的資料集,將每一個與我們的提示範本結合,發送給 Claude 進行處理,然後使用評分系統評估輸出結果。
建立核心函式
評估流程由三個主要函式組成,每個函式都有特定的職責。讓我們從最簡單的開始——處理個別提示執行的函式。
run_prompt 函式
此函式取出一個測試案例,並將其與我們的提示範本合併:
def run_prompt(test_case):
"""Merges the prompt and test case input, then returns the result"""
prompt = f"""
Please solve the following task:
{test_case["task"]}
"""
messages = []
add_user_message(messages, prompt)
output = chat(messages)
return output目前,我們保持提示極為簡單。我們沒有包含任何格式化指示,這意味著 Claude 很可能會回傳比我們所需更冗長的輸出。我們將在後續迭代評估流程時對此進行改進。
run_test_case 函式
此函式協調執行單一測試案例並對結果進行評分:
def run_test_case(test_case):
"""Calls run_prompt, then grades the result"""
output = run_prompt(test_case)
# TODO - 評分
score = 10
return {
"output": output,
"test_case": test_case,
"score": score
}目前,我們使用硬編碼的分數 10。評分邏輯是我們將在接下來的章節中投入大量時間的部分,但這個佔位符讓我們能夠測試整體流程結構。
run_eval 函式
這是處理整個資料集的主要協調器:
def run_eval(dataset):
"""Loads the dataset and calls run_test_case with each 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))
結果結構包含一個物件陣列,其中每個物件代表一次測試案例的執行。您會看到 Claude 的輸出(在沒有格式限制的情況下往往相當冗長)、原始測試案例定義,以及分數。

我們已完成的工作
到目前為止,我們已成功實作了核心評估流程。我們可以:
- 從資料集中取出測試案例
- 將它們與提示範本合併
- 從 Claude 取得回應
- 收集並整理所有結果
缺少的部分是智慧評分——目前我們只是為每個回應指定一個固定分數。下一步是建立能夠真正評估 Claude 輸出是否正確的評分器,這正是評估系統真正複雜之處所在。
這個流程結構可能看起來很簡單,但它代表了大多數 AI 評估系統所建立的基礎。複雜性在於評分邏輯和提示優化,而不在於執行測試的基本協調工作。