事情本身不复杂,线索都在日志里。把旧的 OpenAI Evals yaml 迁到新 graders,运行时返回 unknown eval type,dashboard 里看不到这次结果,key 是项目级的。
第一反应是「旧 yaml 里的字段在新接口不兼容」,验证下来不成立。
排查方向其实有限,先把可能性排一排。接口从旧版 eval 换成了 v1/evals 新结构。少数情况下是grader 的名称和参数格式变了。
还有一种情况,项目 key 没有评测相关权限。
动手时先用新结构提交一个最小评测
curl -s https://api.openai.com/v1/evals -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d @eval.json
随后把旧的 modelgraded 配置改成 grader 引用
python migrate_eval.py --input old.yaml --out new.json
接着检查返回里的错误字段和类型名
python -c "import json;print(json.load(open('resp.json')))"
等前面都确认过,再确认 key 所属项目的权限范围
curl -s https://api.openai.com/v1/projects -H "Authorization: Bearer $KEY"
这次没动代码,只在配置和运行环境上找原因。
改完先别撤,确认这几项。评测任务创建成功并返回 run id,dashboard 能看到结果,unknown eval type 不再出现。
容易忽略的是,评测接口改版后旧配置文件不会自动迁移,字段名相近但语义不同,迁移时先用一条样本跑通再批量。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
