🐛 fix: Tokens may not be counted in the stream below
This commit is contained in:
parent
05adacefff
commit
acf61f8b89
@ -242,6 +242,8 @@ func (h *ClaudeStreamHandler) HandlerStream(rawLine *[]byte, dataChan chan strin
|
|||||||
|
|
||||||
case "content_block_delta":
|
case "content_block_delta":
|
||||||
h.convertToOpenaiStream(&claudeResponse, dataChan)
|
h.convertToOpenaiStream(&claudeResponse, dataChan)
|
||||||
|
h.Usage.CompletionTokens += common.CountTokenText(claudeResponse.Delta.Text, h.Request.Model)
|
||||||
|
h.Usage.TotalTokens = h.Usage.PromptTokens + h.Usage.CompletionTokens
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return
|
return
|
||||||
|
@ -189,6 +189,9 @@ func (h *CohereStreamHandler) convertToOpenaiStream(cohereResponse *CohereStream
|
|||||||
Role: types.ChatMessageRoleAssistant,
|
Role: types.ChatMessageRoleAssistant,
|
||||||
Content: cohereResponse.Text,
|
Content: cohereResponse.Text,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h.Usage.CompletionTokens += common.CountTokenText(cohereResponse.Text, h.Request.Model)
|
||||||
|
h.Usage.TotalTokens = h.Usage.PromptTokens + h.Usage.CompletionTokens
|
||||||
}
|
}
|
||||||
|
|
||||||
chatCompletion := types.ChatCompletionStreamResponse{
|
chatCompletion := types.ChatCompletionStreamResponse{
|
||||||
|
@ -270,6 +270,9 @@ func (h *minimaxStreamHandler) convertToOpenaiStream(miniResponse *MiniMaxChatRe
|
|||||||
|
|
||||||
if miniResponse.Usage != nil {
|
if miniResponse.Usage != nil {
|
||||||
h.handleUsage(miniResponse)
|
h.handleUsage(miniResponse)
|
||||||
|
} else {
|
||||||
|
h.Usage.CompletionTokens += common.CountTokenText(miniChoice.Messages[0].Text, h.Request.Model)
|
||||||
|
h.Usage.TotalTokens = h.Usage.PromptTokens + h.Usage.CompletionTokens
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,6 +131,9 @@ func (h *mistralStreamHandler) handlerStream(rawLine *[]byte, dataChan chan stri
|
|||||||
|
|
||||||
if mistralResponse.Usage != nil {
|
if mistralResponse.Usage != nil {
|
||||||
*h.Usage = *mistralResponse.Usage
|
*h.Usage = *mistralResponse.Usage
|
||||||
|
} else {
|
||||||
|
h.Usage.CompletionTokens += common.CountTokenText(mistralResponse.GetResponseText(), h.Request.Model)
|
||||||
|
h.Usage.TotalTokens = h.Usage.PromptTokens + h.Usage.CompletionTokens
|
||||||
}
|
}
|
||||||
|
|
||||||
stop := false
|
stop := false
|
||||||
|
@ -138,7 +138,7 @@ func (h *OpenAIStreamHandler) HandlerChatStream(rawLine *[]byte, dataChan chan s
|
|||||||
if h.Usage.TotalTokens == 0 {
|
if h.Usage.TotalTokens == 0 {
|
||||||
h.Usage.TotalTokens = h.Usage.PromptTokens
|
h.Usage.TotalTokens = h.Usage.PromptTokens
|
||||||
}
|
}
|
||||||
countTokenText := common.CountTokenText(openaiResponse.getResponseText(), h.ModelName)
|
countTokenText := common.CountTokenText(openaiResponse.GetResponseText(), h.ModelName)
|
||||||
h.Usage.CompletionTokens += countTokenText
|
h.Usage.CompletionTokens += countTokenText
|
||||||
h.Usage.TotalTokens += countTokenText
|
h.Usage.TotalTokens += countTokenText
|
||||||
}
|
}
|
||||||
|
@ -12,14 +12,6 @@ type OpenAIProviderChatStreamResponse struct {
|
|||||||
types.OpenAIErrorResponse
|
types.OpenAIErrorResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OpenAIProviderChatStreamResponse) getResponseText() (responseText string) {
|
|
||||||
for _, choice := range c.Choices {
|
|
||||||
responseText += choice.Delta.Content
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type OpenAIProviderCompletionResponse struct {
|
type OpenAIProviderCompletionResponse struct {
|
||||||
types.CompletionResponse
|
types.CompletionResponse
|
||||||
types.OpenAIErrorResponse
|
types.OpenAIErrorResponse
|
||||||
|
@ -279,5 +279,8 @@ func (h *zhipuStreamHandler) convertToOpenaiStream(zhipuResponse *ZhipuStreamRes
|
|||||||
|
|
||||||
if zhipuResponse.Usage != nil {
|
if zhipuResponse.Usage != nil {
|
||||||
*h.Usage = *zhipuResponse.Usage
|
*h.Usage = *zhipuResponse.Usage
|
||||||
|
} else {
|
||||||
|
h.Usage.CompletionTokens += common.CountTokenText(zhipuResponse.GetResponseText(), h.Request.Model)
|
||||||
|
h.Usage.TotalTokens = h.Usage.PromptTokens + h.Usage.CompletionTokens
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,14 @@ type ZhipuStreamResponse struct {
|
|||||||
ZhipuResponseError
|
ZhipuResponseError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (z *ZhipuStreamResponse) GetResponseText() (responseText string) {
|
||||||
|
for _, choice := range z.Choices {
|
||||||
|
responseText += choice.Delta.Content
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
type ZhipuResponseError struct {
|
type ZhipuResponseError struct {
|
||||||
Error ZhipuError `json:"error,omitempty"`
|
Error ZhipuError `json:"error,omitempty"`
|
||||||
}
|
}
|
||||||
|
@ -376,3 +376,11 @@ type ChatCompletionStreamResponse struct {
|
|||||||
PromptAnnotations any `json:"prompt_annotations,omitempty"`
|
PromptAnnotations any `json:"prompt_annotations,omitempty"`
|
||||||
Usage *Usage `json:"usage,omitempty"`
|
Usage *Usage `json:"usage,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ChatCompletionStreamResponse) GetResponseText() (responseText string) {
|
||||||
|
for _, choice := range c.Choices {
|
||||||
|
responseText += choice.Delta.Content
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user