From e2d3b46a3a0506e8eb2745cab5e9abf4eed657f9 Mon Sep 17 00:00:00 2001 From: creamlike1024 Date: Fri, 17 Oct 2025 15:51:04 +0800 Subject: [PATCH] fix: gemini batch embedding token not counted --- relay/helper/valid_request.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/relay/helper/valid_request.go b/relay/helper/valid_request.go index d48939387..f17b4f5b8 100644 --- a/relay/helper/valid_request.go +++ b/relay/helper/valid_request.go @@ -22,8 +22,10 @@ func GetAndValidateRequest(c *gin.Context, format types.RelayFormat) (request dt case types.RelayFormatOpenAI: request, err = GetAndValidateTextRequest(c, relayMode) case types.RelayFormatGemini: - if strings.Contains(c.Request.URL.Path, ":embedContent") || strings.Contains(c.Request.URL.Path, ":batchEmbedContents") { + if strings.Contains(c.Request.URL.Path, ":embedContent") { request, err = GetAndValidateGeminiEmbeddingRequest(c) + } else if strings.Contains(c.Request.URL.Path, ":batchEmbedContents") { + request, err = GetAndValidateGeminiBatchEmbeddingRequest(c) } else { request, err = GetAndValidateGeminiRequest(c) } @@ -319,3 +321,12 @@ func GetAndValidateGeminiEmbeddingRequest(c *gin.Context) (*dto.GeminiEmbeddingR } return request, nil } + +func GetAndValidateGeminiBatchEmbeddingRequest(c *gin.Context) (*dto.GeminiBatchEmbeddingRequest, error) { + request := &dto.GeminiBatchEmbeddingRequest{} + err := common.UnmarshalBodyReusable(c, request) + if err != nil { + return nil, err + } + return request, nil +}