Jelajahi Sumber

feat: enhance ConvertGeminiRequest to set default role and handle YouTube video MIME type

CaIon 7 bulan lalu
induk
melakukan
97d6f10f15
2 mengubah file dengan 18 tambahan dan 1 penghapusan
  1. 16 0
      relay/channel/gemini/adaptor.go
  2. 2 1
      relay/channel/vertex/adaptor.go

+ 16 - 0
relay/channel/gemini/adaptor.go

@@ -21,6 +21,22 @@ type Adaptor struct {
 }
 }
 
 
 func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycommon.RelayInfo, request *dto.GeminiChatRequest) (any, error) {
 func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycommon.RelayInfo, request *dto.GeminiChatRequest) (any, error) {
+	if len(request.Contents) > 0 {
+		for i, content := range request.Contents {
+			if i == 0 {
+				if request.Contents[0].Role == "" {
+					request.Contents[0].Role = "user"
+				}
+			}
+			for _, part := range content.Parts {
+				if part.FileData != nil {
+					if part.FileData.MimeType == "" && strings.Contains(part.FileData.FileUri, "www.youtube.com") {
+						part.FileData.MimeType = "video/webm"
+					}
+				}
+			}
+		}
+	}
 	return request, nil
 	return request, nil
 }
 }
 
 

+ 2 - 1
relay/channel/vertex/adaptor.go

@@ -45,7 +45,8 @@ type Adaptor struct {
 }
 }
 
 
 func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycommon.RelayInfo, request *dto.GeminiChatRequest) (any, error) {
 func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycommon.RelayInfo, request *dto.GeminiChatRequest) (any, error) {
-	return request, nil
+	geminiAdaptor := gemini.Adaptor{}
+	return geminiAdaptor.ConvertGeminiRequest(c, info, request)
 }
 }
 
 
 func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycommon.RelayInfo, request *dto.ClaudeRequest) (any, error) {
 func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycommon.RelayInfo, request *dto.ClaudeRequest) (any, error) {