fix: 优化ollamaStreamHandler中的停止和最终使用响应逻辑
This commit is contained in:
@@ -114,16 +114,24 @@ func ollamaStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// done frame
|
// done frame
|
||||||
|
// finalize once and break loop
|
||||||
usage.PromptTokens = chunk.PromptEvalCount
|
usage.PromptTokens = chunk.PromptEvalCount
|
||||||
usage.CompletionTokens = chunk.EvalCount
|
usage.CompletionTokens = chunk.EvalCount
|
||||||
usage.TotalTokens = usage.PromptTokens + usage.CompletionTokens
|
usage.TotalTokens = usage.PromptTokens + usage.CompletionTokens
|
||||||
finishReason := chunk.DoneReason
|
finishReason := chunk.DoneReason
|
||||||
if finishReason == "" { finishReason = "stop" }
|
if finishReason == "" { finishReason = "stop" }
|
||||||
stop := helper.GenerateStopResponse(responseId, created, model, finishReason)
|
// emit stop delta
|
||||||
|
if stop := helper.GenerateStopResponse(responseId, created, model, finishReason); stop != nil {
|
||||||
if data, err := common.Marshal(stop); err == nil { _ = helper.StringData(c, string(data)) }
|
if data, err := common.Marshal(stop); err == nil { _ = helper.StringData(c, string(data)) }
|
||||||
final := helper.GenerateFinalUsageResponse(responseId, created, model, *usage)
|
}
|
||||||
|
// emit usage frame
|
||||||
|
if final := helper.GenerateFinalUsageResponse(responseId, created, model, *usage); final != nil {
|
||||||
if data, err := common.Marshal(final); err == nil { _ = helper.StringData(c, string(data)) }
|
if data, err := common.Marshal(final); err == nil { _ = helper.StringData(c, string(data)) }
|
||||||
}
|
}
|
||||||
|
// send [DONE]
|
||||||
|
helper.Done(c)
|
||||||
|
break
|
||||||
|
}
|
||||||
if err := scanner.Err(); err != nil && err != io.EOF { logger.LogError(c, "ollama stream scan error: "+err.Error()) }
|
if err := scanner.Err(); err != nil && err != io.EOF { logger.LogError(c, "ollama stream scan error: "+err.Error()) }
|
||||||
return usage, nil
|
return usage, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user