5.Model based grading(基于模型的评分)
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org
==================================================
在构建提示词评估工作流时,评分系统为输出质量提供了客观的信号。评分器接收模型输出并返回某种可衡量的反馈——通常是1到10之间的数字,其中10代表高质量,1代表低质量。
Types of Graders

对模型输出进行评分主要有三种方法:
- 代码评分器 - 使用自定义逻辑以编程方式评估输出
- 模型评分器 - 使用另一个AI模型来评估质量
- 人工评分器 - 让人员手动审查和评分输出
Code Graders
代码评分器让你可以实现任何你能想象到的编程检查。常见用途包括:
- 检查输出长度
- 验证输出是否包含或不包含特定词汇
- 对JSON、Python或正则表达式进行语法验证
- Readability scores
唯一的要求是你的代码返回一些可用的信号——通常是1到10之间的数字。
Model Graders
模型评分器将您的原始输出输入到另一个API调用中进行评估。这种方法为评估以下方面提供了极大的灵活性:
- Response quality
- 指令遵循的质量
- Completeness
- Helpfulness
- Safety
Human Graders
人工评分器提供了最大的灵活性,但耗时且繁琐。它们适用于评估:
- 整体响应质量
- Comprehensiveness
- Depth
- Conciseness
- Relevance
定义评估标准

在实施任何评分器之前,您需要明确的评估标准。对于代码生成提示,您可能会关注:
- 格式 - 应该只返回Python、JSON或正则表达式,不需要解释
- 有效语法 - 生成的代码应该具有有效的语法
- 任务遵循 - 响应应该直接解决用户的任务,并提供准确的代码

前两个标准适合使用代码评分器,而任务遵循由于其灵活性更适合使用模型评分器。
实现模型评分器
以下是构建模型评分器函数的方法:
def grade_by_model(test_case, output):
# 创建评估提示
eval_prompt = """
你是一位专业的代码审查专家。请评估这个AI生成的解决方案。
任务:{task}
解决方案:{solution}
请以结构化的JSON对象形式提供你的评估,包含:
- "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)
# 对输出进行评分
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
这为您提供了一个客观的指标,可以在迭代优化提示词时进行跟踪。虽然模型评分器可能会有些反复无常,但它们为衡量改进效果提供了一致的基准线。
==================================================
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org