fix: Regression on reasoning time

PR #1253 fixed reasoning time calculation for APIs that return reasoning
content in `delta.content`, but introduced a regression for those
returning it in `delta.reasoning_content`. This commit fixes the
regression.

Fixes #1593
This commit is contained in:
shniubobo 2025-02-13 22:22:51 +00:00 committed by 亢奋猫
parent f5cd6ecb50
commit bb0cb1cecc

View File

@ -206,6 +206,10 @@ export default class OpenAIProvider extends BaseProvider {
return streamOutput
}
let hasReasoningContent = false
const isReasoningJustDone = (delta: OpenAI.Chat.Completions.ChatCompletionChunk.Choice.Delta) =>
hasReasoningContent ? !!delta?.content : delta?.content === '</think>'
let time_first_token_millsec = 0
let time_first_content_millsec = 0
const start_time_millsec = new Date().getTime()
@ -243,20 +247,24 @@ export default class OpenAIProvider extends BaseProvider {
break
}
const delta = chunk.choices[0]?.delta
// @ts-expect-error `reasoning_content` not supported by OpenAI for now
if (delta?.reasoning_content) {
hasReasoningContent = true
}
if (time_first_token_millsec == 0) {
time_first_token_millsec = new Date().getTime() - start_time_millsec
}
//修复逻辑判断当content为</think>时time_first_content_millsec才会被赋值原有代码无意义.
if (time_first_content_millsec == 0 && chunk.choices[0]?.delta?.content == '</think>') {
if (time_first_content_millsec == 0 && isReasoningJustDone(delta)) {
time_first_content_millsec = new Date().getTime()
}
const time_completion_millsec = new Date().getTime() - start_time_millsec
const time_thinking_millsec = time_first_content_millsec ? time_first_content_millsec - start_time_millsec : 0
const delta = chunk.choices[0]?.delta
// Extract citations from the raw response if available
const citations = (chunk as OpenAI.Chat.Completions.ChatCompletionChunk & { citations?: string[] })?.citations