执行式评估:用运行结果判对错
能运行的任务优先用执行结果判对错:代码跑单元测试、SQL 对结果集、正则对样例集合。相比文本相似度,执行式评估更接近真实正确性,也不受表述方式影响。前提是判定环境本身要可靠——沙箱隔离、超时限制、用例覆盖正例与边界。
基本信息
| 判定 | 单元测试通过 / 结果集一致 / 样例匹配 |
|---|---|
| 安全 | 不可信代码必须在隔离沙箱内执行 |
| 用例 | 正例、边界、异常三类都要覆盖 |
| 超时 | 死循环用例必须有超时,超时按失败计 |
典型使用场景
- 代码生成评测:用单元测试判定,指标含义明确
- SQL 生成评估:在只读副本上执行并比对结果集
- 正则与规则生成:拿样例集合跑一遍看命中与误伤
- 数据清洗脚本评估:跑完比对输出表的行数与关键字段
- 回归门禁:把执行式用例接入 CI,退化即拦截
执行评估骨架
执行评估骨架
# 仅在隔离沙箱与超时限制内执行候选代码
python - <<'PY'
def evaluate(candidate_code: str, cases: list) -> dict:
ns = {}
exec(candidate_code, ns) # 沙箱内执行,勿在宿主机直接运行
passed = 0
for args, want in cases:
try:
got = ns['solve'](*args)
except Exception:
continue # 抛异常按未通过计
if got == want:
passed += 1
return {'passed': passed, 'total': len(cases)}
PY
# 配套:进程级超时、内存上限、无网络、只读文件系统判定要素读法
| 要素 | 含义 | 异常表现 |
|---|---|---|
| 通过数 | 用例中通过的条数 | 全通过但用例太弱,指标虚高 |
| 用例类型 | 正例 / 边界 / 异常 | 只测正例,边界与异常场景上线才暴露 |
| 超时 | 单条用例的最长执行时间 | 无超时限制时死循环拖垮评测任务 |
| 隔离 | 沙箱与权限边界 | 在宿主机执行带来安全与稳定性风险 |
| 隐藏用例 | 不写进提示的保留用例 | 全部公开时模型可针对性写死逻辑 |
执行模型生成的代码必须做隔离:独立容器或沙箱、限时限内存、默认无外网、不挂载生产凭据。这几条缺任何一条,执行式评估本身就成了风险源。
把全部用例写进提示,模型会针对性写死到这些输入。保留一部分隐藏用例,并在评测时统计「公开用例通过但隐藏用例失败」的比例,用它衡量过拟合程度。