Skip to content

Conversation

@dcsunny
Copy link

@dcsunny dcsunny commented Dec 31, 2025

Summary

This PR adds comprehensive ImageConfig support to the Gemini model component, allowing users to configure image generation parameters.

Changes

  • ✅ Add ImageConfig field to Config struct for default configuration
  • ✅ Add imageConfig field to ChatModel struct for runtime storage
  • ✅ Initialize imageConfig in NewChatModel from Config
  • ✅ Add WithImageConfig option function in option.go
  • ✅ Update genInputAndConf to support both default and per-call ImageConfig

Implementation Details

This implementation follows the same pattern as ThinkingConfig, supporting both:

  1. Default configuration during model creation via Config.ImageConfig
  2. Dynamic override during Generate/Stream calls via WithImageConfig()

Usage Example

// Set default ImageConfig during model creation
model, _ := gemini.NewChatModel(ctx, &gemini.Config{
    Client: client,
    Model:  "gemini-2.0-flash-exp",
    ImageConfig: &genai.ImageConfig{
        // Image generation configuration
    },
})

// Override ImageConfig per call
model.Generate(ctx, messages, gemini.WithImageConfig(&genai.ImageConfig{
    // Custom configuration for this call
}))

Testing

-Code compiles successfully
-Implementation is consistent with existing patterns (ThinkingConfig, ResponseModalities)

   Add comprehensive ImageConfig support to the Gemini model component,
   allowing users to configure image generation parameters.

   Changes:
   - Add ImageConfig field to Config struct for default configuration
   - Add imageConfig field to ChatModel struct for runtime storage
   - Initialize imageConfig in NewChatModel from Config
   - Add WithImageConfig option function in option.go
   - Update genInputAndConf to support both default and per-call ImageConfig

   This implementation follows the same pattern as ThinkingConfig,
   supporting both default configuration during model creation and
   dynamic override during Generate/Stream calls.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant