|
|
@@ -21,7 +21,11 @@ func GetAndValidateRequest(c *gin.Context, format types.RelayFormat) (request dt
|
|
|
case types.RelayFormatOpenAI:
|
|
|
request, err = GetAndValidateTextRequest(c, relayMode)
|
|
|
case types.RelayFormatGemini:
|
|
|
- request, err = GetAndValidateGeminiRequest(c)
|
|
|
+ if strings.Contains(c.Request.URL.Path, ":embedContent") || strings.Contains(c.Request.URL.Path, ":batchEmbedContents") {
|
|
|
+ request, err = GetAndValidateGeminiEmbeddingRequest(c)
|
|
|
+ } else {
|
|
|
+ request, err = GetAndValidateGeminiRequest(c)
|
|
|
+ }
|
|
|
case types.RelayFormatClaude:
|
|
|
request, err = GetAndValidateClaudeRequest(c)
|
|
|
case types.RelayFormatOpenAIResponses:
|
|
|
@@ -288,7 +292,6 @@ func GetAndValidateTextRequest(c *gin.Context, relayMode int) (*dto.GeneralOpenA
|
|
|
}
|
|
|
|
|
|
func GetAndValidateGeminiRequest(c *gin.Context) (*dto.GeminiChatRequest, error) {
|
|
|
-
|
|
|
request := &dto.GeminiChatRequest{}
|
|
|
err := common.UnmarshalBodyReusable(c, request)
|
|
|
if err != nil {
|
|
|
@@ -304,3 +307,12 @@ func GetAndValidateGeminiRequest(c *gin.Context) (*dto.GeminiChatRequest, error)
|
|
|
|
|
|
return request, nil
|
|
|
}
|
|
|
+
|
|
|
+func GetAndValidateGeminiEmbeddingRequest(c *gin.Context) (*dto.GeminiEmbeddingRequest, error) {
|
|
|
+ request := &dto.GeminiEmbeddingRequest{}
|
|
|
+ err := common.UnmarshalBodyReusable(c, request)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return request, nil
|
|
|
+}
|