diff --git a/relay/relay-text.go b/relay/relay-text.go index 9a9e6974..86fed5f2 100644 --- a/relay/relay-text.go +++ b/relay/relay-text.go @@ -108,10 +108,17 @@ func TextHelper(c *gin.Context) (openaiErr *dto.OpenAIErrorWithStatusCode) { } } - promptTokens, err := getPromptTokens(textRequest, relayInfo) - // count messages token error 计算promptTokens错误 - if err != nil { - return service.OpenAIErrorWrapper(err, "count_token_messages_failed", http.StatusInternalServerError) + // 获取 promptTokens,如果上下文中已经存在,则直接使用 + var promptTokens int + if value, exists := c.Get("prompt_tokens"); exists { + promptTokens = value.(int) + } else { + promptTokens, err = getPromptTokens(textRequest, relayInfo) + // count messages token error 计算promptTokens错误 + if err != nil { + return service.OpenAIErrorWrapper(err, "count_token_messages_failed", http.StatusInternalServerError) + } + c.Set("prompt_tokens", promptTokens) } if !getModelPriceSuccess {