diff --git a/relay/channel/gemini/adaptor.go b/relay/channel/gemini/adaptor.go index b522ca1b..845b0439 100644 --- a/relay/channel/gemini/adaptor.go +++ b/relay/channel/gemini/adaptor.go @@ -56,8 +56,15 @@ func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommon.RelayInf } func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommon.RelayInfo, request dto.ImageRequest) (any, error) { - if !strings.HasPrefix(info.UpstreamModelName, "imagen") { - return nil, errors.New("not supported model for image generation") + if strings.HasPrefix(info.UpstreamModelName, "gemini-3-pro-image") { + chatRequest := dto.GeneralOpenAIRequest{ + Model: request.Model, + Messages: []dto.Message{ + {Role: "user", Content: request.Prompt}, + }, + N: int(request.N), + } + return a.ConvertOpenAIRequest(c, info, &chatRequest) } // convert size to aspect ratio but allow user to specify aspect ratio diff --git a/setting/model_setting/gemini.go b/setting/model_setting/gemini.go index 55f721e9..2731dcba 100644 --- a/setting/model_setting/gemini.go +++ b/setting/model_setting/gemini.go @@ -26,6 +26,10 @@ var defaultGeminiSettings = GeminiSettings{ SupportedImagineModels: []string{ "gemini-2.0-flash-exp-image-generation", "gemini-2.0-flash-exp", + "gemini-3-pro-image-preview", + "gemini-2.5-flash-image", + "nano-banana", + "nano-banana-pro", }, ThinkingAdapterEnabled: false, ThinkingAdapterBudgetTokensPercentage: 0.6,