|
|
@@ -197,22 +197,26 @@ func OpenaiHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http.Respo
|
|
|
forceFormat = true
|
|
|
}
|
|
|
|
|
|
- if simpleResponse.Usage.TotalTokens == 0 || (simpleResponse.Usage.PromptTokens == 0 && simpleResponse.Usage.CompletionTokens == 0) {
|
|
|
- completionTokens := 0
|
|
|
- for _, choice := range simpleResponse.Choices {
|
|
|
- ctkm := service.CountTextToken(choice.Message.StringContent()+choice.Message.ReasoningContent+choice.Message.Reasoning, info.UpstreamModelName)
|
|
|
- completionTokens += ctkm
|
|
|
+ usageModified := false
|
|
|
+ if simpleResponse.Usage.PromptTokens == 0 {
|
|
|
+ completionTokens := simpleResponse.Usage.CompletionTokens
|
|
|
+ if completionTokens == 0 {
|
|
|
+ for _, choice := range simpleResponse.Choices {
|
|
|
+ ctkm := service.CountTextToken(choice.Message.StringContent()+choice.Message.ReasoningContent+choice.Message.Reasoning, info.UpstreamModelName)
|
|
|
+ completionTokens += ctkm
|
|
|
+ }
|
|
|
}
|
|
|
simpleResponse.Usage = dto.Usage{
|
|
|
PromptTokens: info.PromptTokens,
|
|
|
CompletionTokens: completionTokens,
|
|
|
TotalTokens: info.PromptTokens + completionTokens,
|
|
|
}
|
|
|
+ usageModified = true
|
|
|
}
|
|
|
|
|
|
switch info.RelayFormat {
|
|
|
case types.RelayFormatOpenAI:
|
|
|
- if forceFormat {
|
|
|
+ if forceFormat || usageModified {
|
|
|
responseBody, err = common.Marshal(simpleResponse)
|
|
|
if err != nil {
|
|
|
return nil, types.NewError(err, types.ErrorCodeBadResponseBody)
|