diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-01 12:51:04 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-01 12:51:04 +0300 |
| commit | a574e5290261f9ea2cc39fd0a9a2ba756fc1f67a (patch) | |
| tree | f8ac396d322c2356b43d2ed9ead0898eb9fff7ec /internal | |
| parent | a61af67138c42762f905b75c4c660167e04bbd7b (diff) | |
z4: anchor genai dependency
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/image/nanobanana.go | 32 | ||||
| -rw-r--r-- | internal/image/nanobanana_test.go | 26 |
2 files changed, 58 insertions, 0 deletions
diff --git a/internal/image/nanobanana.go b/internal/image/nanobanana.go new file mode 100644 index 0000000..f65833f --- /dev/null +++ b/internal/image/nanobanana.go @@ -0,0 +1,32 @@ +package image + +import "google.golang.org/genai" + +const ( + // DefaultNanoBananaModel is the model name planned for Nano Banana image generation. + DefaultNanoBananaModel = "gemini-3.1-flash-image-preview" + + // DefaultNanoBananaTextModel is the text model planned for prompt and translation work. + DefaultNanoBananaTextModel = "gemini-2.5-flash" +) + +// NanoBananaConfig holds the settings needed to build a Gemini-backed image generator. +type NanoBananaConfig struct { + APIKey string + Model string + TextModel string +} + +// NewNanoBananaConfig returns a normalized Nano Banana configuration. +func NewNanoBananaConfig(apiKey string) *NanoBananaConfig { + return &NanoBananaConfig{ + APIKey: apiKey, + Model: DefaultNanoBananaModel, + TextModel: DefaultNanoBananaTextModel, + } +} + +// ClientConfig returns the Google GenAI client config for this provider. +func (c *NanoBananaConfig) ClientConfig() *genai.ClientConfig { + return &genai.ClientConfig{APIKey: c.APIKey} +} diff --git a/internal/image/nanobanana_test.go b/internal/image/nanobanana_test.go new file mode 100644 index 0000000..bde91a1 --- /dev/null +++ b/internal/image/nanobanana_test.go @@ -0,0 +1,26 @@ +package image + +import "testing" + +func TestNewNanoBananaConfig(t *testing.T) { + t.Parallel() + + cfg := NewNanoBananaConfig("test-key") + if cfg.APIKey != "test-key" { + t.Fatalf("expected API key to be preserved, got %q", cfg.APIKey) + } + if cfg.Model != DefaultNanoBananaModel { + t.Fatalf("expected default model %q, got %q", DefaultNanoBananaModel, cfg.Model) + } + if cfg.TextModel != DefaultNanoBananaTextModel { + t.Fatalf("expected default text model %q, got %q", DefaultNanoBananaTextModel, cfg.TextModel) + } + + clientCfg := cfg.ClientConfig() + if clientCfg == nil { + t.Fatal("expected client config") + } + if clientCfg.APIKey != "test-key" { + t.Fatalf("expected client config API key to be preserved, got %q", clientCfg.APIKey) + } +} |
