6.Code based grading(基于代码的评分)
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org
==================================================
在评估生成代码的AI模型时,仅仅检查响应是否合理是不够的。您还需要验证生成的代码是否具有有效的语法并遵循正确的格式。这就是基于代码的评分发挥作用的地方。
代码评分的工作原理
代码评分验证AI生成响应的两个关键方面:

- 格式 - 响应应该只返回请求的代码类型(Python、JSON或Regex),不包含解释说明
- 有效语法 - 生成的代码应该能够正确解析为预期的语言
- 任务遵循 - 响应应该直接解决所提出的问题并且准确无误
前两个标准由代码评分器处理,而任务遵循则由模型评分器评估。两者结合起来提供全面的评估。
语法验证函数
要检查生成的代码是否具有有效语法,您可以创建三个辅助函数来尝试解析输出:

def validate_json(text):
try:
json.loads(text.strip())
return 10
except json.JSONDecodeError:
return 0
def validate_python(text):
try:
ast.parse(text.strip())
return 10
except SyntaxError:
return 0
def validate_regex(text):
try:
re.compile(text.strip())
return 10
except re.error:
return 0
每个函数都尝试将文本解析为其对应的格式。如果解析成功,则返回满分10分。如果解析失败并出现错误,则说明语法无效,返回0分。
数据集格式要求
为了让代码评分器知道使用哪个验证器,您的测试用例需要指定预期的输出格式:
{
"task": "创建一个Python函数来验证AWS IAM用户名",
"format": "python"
}
您可以通过将格式字段添加到示例输出结构中,来更新您的数据集生成提示,使其自动包含此格式字段。
改进提示清晰度
为了从您的AI模型获得更好的结果,请让您的提示指令对预期输出格式更加具体:
* 仅使用Python、JSON或纯Regex进行响应
* 不要添加任何注释、评论或解释
您还可以使用预填充的助手消息和代码块来鼓励模型仅返回原始代码:
add_assistant_message(messages, "```code")
这告诉Claude开始生成代码内容,而无需提前指定是Python、JSON还是Regex。
Combining Scores
最后一步是将模型评分器分数与代码评分器分数合并。一个简单的方法是取平均值:
model_grade = grade_by_model(test_case, output)
model_score = model_grade["score"]
syntax_score = grade_syntax(output, test_case)
score = (model_score + syntax_score) / 2
这样可以为内容质量和技术正确性赋予相等的权重。您可以根据特定用例中更重要的方面来调整这些权重。
测试您的实现
一旦您实现了代码评分功能,运行评估以获得基准分数。分数本身并没有绝对的好坏之分——重要的是您是否能够通过改进提示词来提升分数。这为您提供了一种量化的方式来衡量提示词工程的进展,而不是依赖主观评估。
==================================================
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org