在构建提示评估工作流程时,评分器(grader)提供关于输出质量的客观信号。评分器接收模型输出,并返回某种可衡量的反馈——通常是1到10之间的数字,其中10代表高质量,1代表低质量。
评分器的类型

评估模型输出主要有三种方法:
- 代码评分器(Code graders) - 使用自定义逻辑以编程方式评估输出
- 模型评分器(Model graders) - 使用另一个AI模型来评估质量
- 人工评分器(Human graders) - 由人工手动审查并为输出打分
代码评分器
代码评分器让您能够实现您能想到的任何编程检查。常见用途包括:
- 检查输出长度
- 验证输出是否包含(或不包含)特定词语
- 对JSON、Python或正则表达式进行语法验证
- 可读性评分
唯一的要求是您的代码在运行时返回某种可衡量的信号。
模型评分器
模型评分器会发出一个额外的API请求来评估原始输出。这种方法在评估以下方面提供了极大的灵活性:
- 响应质量
- 指令遵循质量
- 完整性
- 有用性
- 安全性
人工评分器
人工评分器提供了最大的灵活性,但耗时且繁琐。它们适用于评估:
- 总体响应质量
- 全面性
- 深度
- 简洁性
- 相关性
定义评估标准

在实现任何评分器之前,您需要明确的评估标准。对于代码生成提示,您可能会关注:
- 格式(Format) - 应仅返回Python、JSON或正则表达式,不带任何解释
- 有效语法(Valid Syntax) - 生成的代码应具有有效的语法
- 任务遵循(Task Following) - 响应应通过准确的代码直接解决用户的任务

前两个标准非常适合使用代码评分器,而任务遵循由于其灵活性,更适合使用模型评分器。
实现模型评分器
以下是构建模型评分器函数的方法:
def grade_by_model(test_case, output):
# 创建评估提示
eval_prompt = """
You are an expert code reviewer. Evaluate this AI-generated solution.
Task: {task}
Solution: {solution}
Provide your evaluation as a structured JSON object with:
- "strengths": An array of 1-3 key strengths
- "weaknesses": An array of 1-3 key areas for improvement
- "reasoning": A concise explanation of your assessment
- "score": A number between 1-10
"""
messages = []
add_user_message(messages, eval_prompt)
add_assistant_message(messages, "```json")
eval_text = chat(messages, stop_sequences=["```"])
return json.loads(eval_text) 关键的洞察在于,除了分数之外,还要询问优点、缺点和推理过程。如果没有这些背景信息,模型往往会默认给出6分左右的中等分数。 ## 集成评分器 更新您的测试用例函数以使用模型评分器: ``` def run_test_case(test_case): output = run_prompt(test_case) # Get model evaluation model_grade = grade_by_model(test_case, output) score = model_grade["score"] reasoning = model_grade["reasoning"] return \{ "output": output, "test_case": test_case, "score": score, "reasoning": reasoning \} ``` `` ## 计算平均分数 要获得整体性能指标,请计算所有测试用例的平均分数: ``` from statistics import mean def run_eval(dataset): results = [] for test_case in dataset: result = run_test_case(test_case) results.append(result) average_score = mean([result["score"] for result in results]) print(f"Average score: \{average_score\}") return results ``` ` 这为您提供了一个具体、客观的指标,用于随时间跟踪提示的性能。尽管模型评分器可能存在一定的不一致性,但它们为系统地衡量和改进您的提示提供了一个起点。 ` ``