问题出现得很突然,日志倒是留得挺全。promptfoo 0.95 的 providers 配置 id 为 openai:chat:gpt-4o,config 里写 baseURL 指到自建网关,抓包发现请求还是发到 api.openai.com。

刚开始盯着「环境变量 OPENAI_BASE_URL 优先于配置」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。字段名应该是 apiBaseUrl,大小写不匹配。另一种情况是配置放错了层级,被 provider 默认值覆盖。

不容易想到的是,provider 版本较旧,不认识这个字段。

先看 promptfoo 解析后的最终配置

npx promptfoo config --output json

再往下把字段改成 apiBaseUrl 再跑一次

npx promptfoo eval -c promptfooconfig.yaml --no-cache

随后用环境变量兜底并确认优先级

python -c "print('OPENAI_BASE_URL=http://gateway.local/v1')"

末了抓一次请求确认目标地址

curl -s http://gateway.local/v1/models -H "Authorization: Bearer $KEY"

隔了一天再看,现象没变,说明不是偶发。

怎么算真的好了,看的是同一批现象。请求确实打到自建网关,网关日志里能看到对应调用,api.openai.com 不再出现流量。

补一句。这类配置字段各家写法不统一,改完一定要抓包确认,配置文件不报错不代表字段被识别。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189