feat: enhance reasoning token handling in OpenAI adaptor

This commit is contained in:
Laisky.Cai
2025-02-19 08:10:04 +00:00
parent 480f248a3d
commit 5ba60433d7
2 changed files with 12 additions and 0 deletions

View File

@@ -64,6 +64,9 @@ func StreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*model.E
if choice.Delta.Reasoning != nil {
reasoningText += *choice.Delta.Reasoning
}
if choice.Delta.ReasoningContent != nil {
reasoningText += *choice.Delta.ReasoningContent
}
responseText += conv.AsString(choice.Delta.Content)
}
@@ -97,6 +100,12 @@ func StreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*model.E
return ErrorWrapper(err, "close_response_body_failed", http.StatusInternalServerError), "", nil
}
// If there is no reasoning tokens in the completion, we should count the reasoning tokens in the response.
if len(reasoningText) > 0 &&
(usage.CompletionTokensDetails == nil || usage.CompletionTokensDetails.ReasoningTokens == 0) {
usage.CompletionTokens += CountToken(reasoningText)
}
return nil, reasoningText + responseText, usage
}