fix: responses 流 cache token 未计费

This commit is contained in:
creamlike1024
2025-08-05 23:08:08 +08:00
parent edbe18b157
commit a746309a8e

View File

@@ -37,10 +37,14 @@ func OaiResponsesHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http
// compute usage // compute usage
usage := dto.Usage{} usage := dto.Usage{}
usage.PromptTokens = responsesResponse.Usage.InputTokens if responsesResponse.Usage != nil {
usage.CompletionTokens = responsesResponse.Usage.OutputTokens usage.PromptTokens = responsesResponse.Usage.InputTokens
usage.TotalTokens = responsesResponse.Usage.TotalTokens usage.CompletionTokens = responsesResponse.Usage.OutputTokens
usage.PromptTokensDetails.CachedTokens = responsesResponse.Usage.InputTokensDetails.CachedTokens usage.TotalTokens = responsesResponse.Usage.TotalTokens
if responsesResponse.Usage.InputTokensDetails != nil {
usage.PromptTokensDetails.CachedTokens = responsesResponse.Usage.InputTokensDetails.CachedTokens
}
}
// 解析 Tools 用量 // 解析 Tools 用量
for _, tool := range responsesResponse.Tools { for _, tool := range responsesResponse.Tools {
info.ResponsesUsageInfo.BuiltInTools[common.Interface2String(tool["type"])].CallCount++ info.ResponsesUsageInfo.BuiltInTools[common.Interface2String(tool["type"])].CallCount++
@@ -65,9 +69,14 @@ func OaiResponsesStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp
sendResponsesStreamData(c, streamResponse, data) sendResponsesStreamData(c, streamResponse, data)
switch streamResponse.Type { switch streamResponse.Type {
case "response.completed": case "response.completed":
usage.PromptTokens = streamResponse.Response.Usage.InputTokens if streamResponse.Response.Usage != nil {
usage.CompletionTokens = streamResponse.Response.Usage.OutputTokens usage.PromptTokens = streamResponse.Response.Usage.InputTokens
usage.TotalTokens = streamResponse.Response.Usage.TotalTokens usage.CompletionTokens = streamResponse.Response.Usage.OutputTokens
usage.TotalTokens = streamResponse.Response.Usage.TotalTokens
if streamResponse.Response.Usage.InputTokensDetails != nil {
usage.PromptTokensDetails.CachedTokens = streamResponse.Response.Usage.InputTokensDetails.CachedTokens
}
}
case "response.output_text.delta": case "response.output_text.delta":
// 处理输出文本 // 处理输出文本
responseTextBuilder.WriteString(streamResponse.Delta) responseTextBuilder.WriteString(streamResponse.Delta)