记录一下那天晚上的排查过程。用 promptfoo 0.100 跑回归评测,配置里写了 openai:gpt-4o-mini,运行报 provider not registered,同一份配置在同事机器上能跑,Node 版本是 20。
刚开始盯着「全局安装与本地安装版本不一致」,折腾了半个多小时,排掉了。
真正麻烦的地方在于,几个原因的现象几乎一样。provider 标识要写成完整形式,冒号后是模型名。少数情况下是配置里的 model 应写在 providers 而非 targets。
还有一种情况,代理环境变量缺失,注册阶段拉不到模型列表。
上来先确认配置文件结构
npx promptfoo@0.100.0 config --help
随后把 providers 改成数组形式再跑一次
python -c "print({'providers': ['openai:gpt-4o-mini']})"
再往下用官方示例配置做最小验证
npx promptfoo@0.100.0 eval -c promptfooconfig.yaml --max-concurrency 1
剩下的就是打印实际加载到的配置
npx promptfoo@0.100.0 debug -c promptfooconfig.yaml
别只看报错消失,验证要多做一步。评测能正常启动,providers 列表解析出 gpt-4o-mini,报告里能看到每条用例的得分。
这里还有个坑。评测工具的配置字段改名很频繁,报未注册多半是字段名或前缀写法的问题,不是 key 失效。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
