fix: move start_time_millsec initialization to onChunk for accurate timing

This commit is contained in:
suyao 2025-05-12 18:14:19 +08:00 committed by 亢奋猫
parent 2782744a85
commit 5f3ef42826
4 changed files with 4 additions and 4 deletions

View File

@ -290,7 +290,6 @@ export default class AnthropicProvider extends BaseProvider {
const processStream = async (body: MessageCreateParamsNonStreaming, idx: number) => { const processStream = async (body: MessageCreateParamsNonStreaming, idx: number) => {
let time_first_token_millsec = 0 let time_first_token_millsec = 0
const start_time_millsec = new Date().getTime()
if (!streamOutput) { if (!streamOutput) {
const message = await this.sdk.messages.create({ ...body, stream: false }) const message = await this.sdk.messages.create({ ...body, stream: false })
@ -484,6 +483,7 @@ export default class AnthropicProvider extends BaseProvider {
}) })
} }
onChunk({ type: ChunkType.LLM_RESPONSE_CREATED }) onChunk({ type: ChunkType.LLM_RESPONSE_CREATED })
const start_time_millsec = new Date().getTime()
await processStream(body, 0).finally(cleanup) await processStream(body, 0).finally(cleanup)
} }

View File

@ -500,7 +500,6 @@ export default class GeminiProvider extends BaseProvider {
let functionCalls: FunctionCall[] = [] let functionCalls: FunctionCall[] = []
let time_first_token_millsec = 0 let time_first_token_millsec = 0
const start_time_millsec = new Date().getTime()
if (stream instanceof GenerateContentResponse) { if (stream instanceof GenerateContentResponse) {
let content = '' let content = ''
@ -647,6 +646,7 @@ export default class GeminiProvider extends BaseProvider {
} }
onChunk({ type: ChunkType.LLM_RESPONSE_CREATED }) onChunk({ type: ChunkType.LLM_RESPONSE_CREATED })
const start_time_millsec = new Date().getTime()
const userMessagesStream = await chat.sendMessageStream({ const userMessagesStream = await chat.sendMessageStream({
message: messageContents as PartUnion, message: messageContents as PartUnion,
config: { config: {

View File

@ -518,7 +518,6 @@ export default class OpenAICompatibleProvider extends BaseOpenAiProvider {
const processStream = async (stream: any, idx: number) => { const processStream = async (stream: any, idx: number) => {
const toolCalls: ChatCompletionMessageToolCall[] = [] const toolCalls: ChatCompletionMessageToolCall[] = []
let time_first_token_millsec = 0 let time_first_token_millsec = 0
const start_time_millsec = new Date().getTime()
// Handle non-streaming case (already returns early, no change needed here) // Handle non-streaming case (already returns early, no change needed here)
if (!isSupportStreamOutput()) { if (!isSupportStreamOutput()) {
@ -831,6 +830,7 @@ export default class OpenAICompatibleProvider extends BaseOpenAiProvider {
reqMessages = processReqMessages(model, reqMessages) reqMessages = processReqMessages(model, reqMessages)
// 等待接口返回流 // 等待接口返回流
onChunk({ type: ChunkType.LLM_RESPONSE_CREATED }) onChunk({ type: ChunkType.LLM_RESPONSE_CREATED })
const start_time_millsec = new Date().getTime()
const stream = await this.sdk.chat.completions const stream = await this.sdk.chat.completions
// @ts-ignore key is not typed // @ts-ignore key is not typed
.create( .create(

View File

@ -567,7 +567,6 @@ export abstract class BaseOpenAiProvider extends BaseProvider {
) => { ) => {
const toolCalls: OpenAI.Responses.ResponseFunctionToolCall[] = [] const toolCalls: OpenAI.Responses.ResponseFunctionToolCall[] = []
let time_first_token_millsec = 0 let time_first_token_millsec = 0
const start_time_millsec = new Date().getTime()
if (!streamOutput) { if (!streamOutput) {
const nonStream = stream as OpenAI.Responses.Response const nonStream = stream as OpenAI.Responses.Response
@ -785,6 +784,7 @@ export abstract class BaseOpenAiProvider extends BaseProvider {
} }
onChunk({ type: ChunkType.LLM_RESPONSE_CREATED }) onChunk({ type: ChunkType.LLM_RESPONSE_CREATED })
const start_time_millsec = new Date().getTime()
const stream = await this.sdk.responses.create( const stream = await this.sdk.responses.create(
{ {
model: model.id, model: model.id,