报错是这么冒出来的。灰度期间发现同一批问题答案质量不一,想按版本拆开看,日志里只有 model 字段写着别名,实际背后指向哪个快照完全查不到。

中间走过弯路,把「网关把响应头里的版本字段丢掉了」当成主因,改完现象没变。

真正麻烦的地方在于,几个原因的现象几乎一样。请求里用的是别名,返回体里的具体版本没落库。另一种情况是日志只记录入参不记录响应元信息。

另外,多处代码各自拼 model 字符串,取值不统一。

第一件事是确认响应体里是否带具体版本

python -c "import json;d=json.load(open('r.json'));print(d.get('model'))"

接着把响应里的 model 与请求 id 一起写进日志

python -c "import json;print(json.dumps({'req_id':'r1','model':'gpt-4.1-2025-04-14'}))"

网关透传上游的版本响应头

python -c "print({'x-upstream-model':'gpt-4.1-2025-04-14'})"

末了按版本维度统计质量指标做对比

python report.py --group-by model --in logs.jsonl

怎么算真的好了,看的是同一批现象。日志里每条请求都能看到具体快照名,按版本分组后能算出各自的失败率与平均耗时。

提醒一点。别名方便切换但会隐藏真实版本,别名和解析后的版本都要记,否则灰度出问题连对照都做不了。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189