OpenAI Responses WebSocket 多轮请求计费幂等冲突导致后续 turn 漏计费 0.1.133版本遇到的
问题描述
启用 OpenAI Responses WebSocket 后,服务端日志中大量出现计费失败错误:
openai.websocket_record_usage_failed method=GET path=/responses req=resp_xxx client_req=xxx user=2 acc=4 model=gpt-5.5 error=usage billing request fingerprint conflict
请求本身可以正常返回,但本地 usage billing 失败。
影响
同一个 WebSocket 连接内,第一轮 turn 可能正常计费,但后续 turn 可能因为计费幂等冲突而失败。
这会导致:
- 后续 turn 没有正常扣费
- 后续 turn 没有写入 usage log
- 用户余额、订阅用量、API Key quota、账号 quota 等统计可能不准确
- 日志中持续出现大量
openai.websocket_record_usage_failed
预期行为
OpenAI Responses WebSocket 下,每个 turn 应该可以独立、稳定地完成计费。
同一个 WebSocket 连接内的多轮请求不应互相产生计费幂等冲突。
实际行为
同一个 WebSocket 连接内的后续 turn 可能触发:
usage billing request fingerprint conflict
触发后,该 turn 的本地计费流程失败,usage log 也可能不会写入。
复现现象
- 启用 OpenAI Responses WebSocket
- 使用支持多轮 WebSocket 请求的客户端发起对话
- 在同一个 WebSocket 连接内连续进行多个 turn
- 观察服务端日志
可见大量类似错误:
openai.websocket_record_usage_failed method=GET path=/responses req=resp_xxx client_req=xxx user=xxx acc=xxx model=xxx error=usage billing request fingerprint conflict
建议修复方向
- WebSocket 多轮请求应按 turn 维度进行计费幂等处理
- 每个 turn 应拥有独立的计费标识
- 后续 turn 不应因为复用同一个 WebSocket 连接而与前一轮 turn 发生计费 fingerprint 冲突
- 修复后应补充多轮 WebSocket 计费测试,确保多个 turn 都能正常扣费并写入 usage log
临时规避
在修复前,可以临时关闭 OpenAI Responses WebSocket,回退到 HTTP/SSE,避免该问题继续影响计费。
OpenAI Responses WebSocket 多轮请求计费幂等冲突导致后续 turn 漏计费 0.1.133版本遇到的
问题描述
启用 OpenAI Responses WebSocket 后,服务端日志中大量出现计费失败错误:
请求本身可以正常返回,但本地 usage billing 失败。
影响
同一个 WebSocket 连接内,第一轮 turn 可能正常计费,但后续 turn 可能因为计费幂等冲突而失败。
这会导致:
openai.websocket_record_usage_failed预期行为
OpenAI Responses WebSocket 下,每个 turn 应该可以独立、稳定地完成计费。
同一个 WebSocket 连接内的多轮请求不应互相产生计费幂等冲突。
实际行为
同一个 WebSocket 连接内的后续 turn 可能触发:
触发后,该 turn 的本地计费流程失败,usage log 也可能不会写入。
复现现象
可见大量类似错误:
建议修复方向
临时规避
在修复前,可以临时关闭 OpenAI Responses WebSocket,回退到 HTTP/SSE,避免该问题继续影响计费。