微调任务失败时业务侧没有任何通知,webhook 配置里只勾了 job.succeeded 一个事件,投递日志里也找不到与失败相关的记录。
一开始怀疑是「事件类型大小写写错时配置能保存,但永远不会匹配投递」,查了一圈,方向不对。
真正麻烦的地方在于,几个原因的现象几乎一样。成功和失败是两个独立事件,勾一个不会顺带订阅另一个。另一种情况是批次任务与微调任务各有自己的事件命名空间,名字不能混用。
另外,端点被停用后事件静默丢弃,不会补发历史事件。
第一件事是确认配置里显式订阅了哪些事件
python -c "import json;print(json.load(open('wh.json'))['enabled_events'])"
接着把失败与取消两个事件补进订阅列表
python -c "import json;print(['fine_tuning.job.failed','fine_tuning.job.cancelled'])"
然后用测试投递接口验证链路是否通
curl -X POST https://api.openai.com/v1/webhooks/wh_abc/test -H "Authorization: Bearer $ADMIN_KEY" | jq '.status'
等前面都确认过,再在投递记录里核对状态码与事件类型
curl -s "https://api.openai.com/v1/webhooks/wh_abc/deliveries?limit=5" -H "Authorization: Bearer $ADMIN_KEY" | jq -r '.data[]|"\(.status_code) \(.event_type)"'
恢复的判定其实很直接。人为制造一次失败任务后五分钟内收到对应事件,投递记录里 status_code 为 200 且 event_type 是 failed,下游工单被正确创建。
补一句。事件订阅是按类型精确匹配的,别指望 succeeded 会覆盖所有结局,上线前把失败、取消、过期三类都勾上再测一遍。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
