Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions components/model/gemini/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -678,6 +678,11 @@ func main() {
cm, err := gemini.NewChatModel(ctx, &gemini.Config{
Client: client,
Model: modelName,
// you can set the necessary parameters for image generation
ImageConfig: &genai.ImageConfig{
AspectRatio: "16:9",
ImageSize: "1K",
},
ResponseModalities: []gemini.GeminiResponseModality{
gemini.GeminiResponseModalityText,
gemini.GeminiResponseModalityImage,
Expand Down
5 changes: 5 additions & 0 deletions components/model/gemini/README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -678,6 +678,11 @@ func main() {
cm, err := gemini.NewChatModel(ctx, &gemini.Config{
Client: client,
Model: modelName,
// you can set the necessary parameters for image generation
ImageConfig: &genai.ImageConfig{
AspectRatio: "16:9",
ImageSize: "1K",
},
ResponseModalities: []gemini.GeminiResponseModality{
gemini.GeminiResponseModalityText,
gemini.GeminiResponseModalityImage,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ func main() {
cm, err := gemini.NewChatModel(ctx, &gemini.Config{
Client: client,
Model: modelName,
// you can set the necessary parameters for image generation
ImageConfig: &genai.ImageConfig{
AspectRatio: "16:9",
ImageSize: "1K",
},
ResponseModalities: []gemini.GeminiResponseModality{
gemini.GeminiResponseModalityText,
gemini.GeminiResponseModalityImage,
Expand Down
13 changes: 13 additions & 0 deletions components/model/gemini/gemini.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ func NewChatModel(_ context.Context, cfg *Config) (*ChatModel, error) {
enableGoogleMaps: cfg.EnableGoogleMaps,
safetySettings: cfg.SafetySettings,
thinkingConfig: cfg.ThinkingConfig,
imageConfig: cfg.ImageConfig,
responseModalities: cfg.ResponseModalities,
mediaResolution: cfg.MediaResolution,
cache: cfg.Cache,
Expand Down Expand Up @@ -130,6 +131,11 @@ type Config struct {

ThinkingConfig *genai.ThinkingConfig

// ImageConfig is the image generation configuration.
// Note: an error will be returned if this field is set for a model that does not support the configuration options.
// Optional.
ImageConfig *genai.ImageConfig

// ResponseModalities specifies the modalities the model can return.
// Optional.
ResponseModalities []GeminiResponseModality
Expand Down Expand Up @@ -170,6 +176,7 @@ type ChatModel struct {
enableGoogleMaps *genai.GoogleMaps
safetySettings []*genai.SafetySetting
thinkingConfig *genai.ThinkingConfig
imageConfig *genai.ImageConfig
responseModalities []GeminiResponseModality
mediaResolution genai.MediaResolution
cache *CacheConfig
Expand Down Expand Up @@ -455,6 +462,7 @@ func (cm *ChatModel) genInputAndConf(input []*schema.Message, opts ...model.Opti
TopK: cm.topK,
ResponseJSONSchema: cm.responseJSONSchema,
ResponseModalities: cm.responseModalities,
ImageConfig: cm.imageConfig,
}, opts...)
conf := &model.Config{}

Expand Down Expand Up @@ -570,13 +578,18 @@ func (cm *ChatModel) genInputAndConf(input []*schema.Message, opts ...model.Opti
m.ThinkingConfig = geminiOptions.ThinkingConfig
}

if geminiOptions.ImageConfig != nil {
m.ImageConfig = geminiOptions.ImageConfig
}

if len(geminiOptions.CachedContentName) > 0 {
m.CachedContent = geminiOptions.CachedContentName
// remove system instruction and tools when using cached content
m.SystemInstruction = nil
m.Tools = nil
m.ToolConfig = nil
}

return conf.Model, nInput, m, conf, nil
}

Expand Down
13 changes: 11 additions & 2 deletions components/model/gemini/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ type options struct {
ResponseJSONSchema *jsonschema.Schema
ThinkingConfig *genai.ThinkingConfig
ResponseModalities []GeminiResponseModality

CachedContentName string
ImageConfig *genai.ImageConfig
CachedContentName string
}

func WithTopK(k int32) model.Option {
Expand Down Expand Up @@ -63,3 +63,12 @@ func WithCachedContentName(name string) model.Option {
o.CachedContentName = name
})
}

// WithImageConfig sets the image generation configuration.
// Note: an error will be returned for a model that does not support the configuration options.
// Optional.
func WithImageConfig(cfg *genai.ImageConfig) model.Option {
return model.WrapImplSpecificOptFn(func(o *options) {
o.ImageConfig = cfg
})
}
Loading