Skip to content

Commit 45f0a7f

Browse files
authored
feat(provider/google): add support for gemini-3.1-flash-image-preview (#12883)
## Background Google released `gemini-3.1-flash-image-preview`, a new Gemini image model: - https://blog.google/innovation-and-ai/technology/ai/nano-banana-2/ - https://ai.google.dev/gemini-api/docs/pricing#gemini-3.1-flash-image-preview ## Summary Adds `gemini-3.1-flash-image-preview` to the model ID type unions in google, google-vertex, and gateway packages (both language model and image model ID lists). Updates documentation capability tables for both providers. Adds two `ai-functions` examples: one using `generateImage`, one using `generateText` with multimodal output. ## Manual Verification Model ID additions are type-only changes. Examples can be verified by running: ```bash aif examples/ai-functions/src/generate-image/google/gemini-3-1-flash-image.ts aif examples/ai-functions/src/generate-text/google/gemini-3-1-flash-image-output.ts ``` ## Checklist - [ ] Tests have been added / updated (for bug fixes / features) - [x] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review) ## Future Work N/A ## Related Issues Fixes #12882
1 parent 4f4f5db commit 45f0a7f

File tree

10 files changed

+58
-11
lines changed

10 files changed

+58
-11
lines changed

.changeset/yellow-pugs-whisper.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@ai-sdk/google-vertex': patch
3+
'@ai-sdk/gateway': patch
4+
'@ai-sdk/google': patch
5+
---
6+
7+
feat(provider/google): add support for gemini-3.1-flash-image-preview

content/providers/01-ai-sdk-providers/15-google-generative-ai.mdx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,6 +1049,7 @@ The following Zod features are known to not work with Google Generative AI:
10491049
| Model | Image Input | Object Generation | Tool Usage | Tool Streaming | Google Search | URL Context |
10501050
| ------------------------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- |
10511051
| `gemini-3.1-pro-preview` | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
1052+
| `gemini-3.1-flash-image-preview` | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
10521053
| `gemini-3-pro-preview` | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
10531054
| `gemini-3-pro-image-preview` | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
10541055
| `gemini-3-flash-preview` | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
@@ -1277,10 +1278,11 @@ const { image } = await generateImage({
12771278

12781279
#### Gemini Image Model Capabilities
12791280

1280-
| Model | Image Generation | Image Editing | Aspect Ratios |
1281-
| ---------------------------- | ------------------- | ------------------- | --------------------------------------------------- |
1282-
| `gemini-2.5-flash-image` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
1283-
| `gemini-3-pro-image-preview` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
1281+
| Model | Image Generation | Image Editing | Aspect Ratios |
1282+
| -------------------------------- | ------------------- | ------------------- | --------------------------------------------------- |
1283+
| `gemini-2.5-flash-image` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
1284+
| `gemini-3-pro-image-preview` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
1285+
| `gemini-3.1-flash-image-preview` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
12841286

12851287
<Note>
12861288
`gemini-3-pro-image-preview` supports additional features including up to 14

content/providers/01-ai-sdk-providers/16-google-vertex.mdx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,10 +1093,11 @@ const { image } = await generateImage({
10931093

10941094
##### Gemini Image Model Capabilities
10951095

1096-
| Model | Image Generation | Image Editing | Aspect Ratios |
1097-
| ---------------------------- | ------------------- | ------------------- | --------------------------------------------------- |
1098-
| `gemini-3-pro-image-preview` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
1099-
| `gemini-2.5-flash-image` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
1096+
| Model | Image Generation | Image Editing | Aspect Ratios |
1097+
| -------------------------------- | ------------------- | ------------------- | --------------------------------------------------- |
1098+
| `gemini-3.1-flash-image-preview` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
1099+
| `gemini-3-pro-image-preview` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
1100+
| `gemini-2.5-flash-image` | <Check size={18} /> | <Check size={18} /> | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
11001101

11011102
<Note>
11021103
`gemini-3-pro-image-preview` supports additional features including up to 14
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { google } from '@ai-sdk/google';
2+
import { generateImage } from 'ai';
3+
import { run } from '../../lib/run';
4+
import { presentImages } from '../../lib/present-image';
5+
6+
run(async () => {
7+
const { images } = await generateImage({
8+
model: google.image('gemini-3.1-flash-image-preview'),
9+
prompt: 'A nano banana in a fancy restaurant',
10+
});
11+
12+
presentImages(images);
13+
});
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { google } from '@ai-sdk/google';
2+
import { generateText } from 'ai';
3+
import { presentImages } from '../../lib/present-image';
4+
import { run } from '../../lib/run';
5+
6+
run(async () => {
7+
const result = await generateText({
8+
model: google('gemini-3.1-flash-image-preview'),
9+
prompt: 'Generate an image of a comic cat',
10+
});
11+
12+
console.log(result.text);
13+
14+
for (const file of result.files) {
15+
if (file.mediaType.startsWith('image/')) {
16+
await presentImages([file]);
17+
}
18+
}
19+
});

packages/gateway/src/gateway-language-model-settings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export type GatewayModelId =
5757
| 'google/gemini-3-pro-image'
5858
| 'google/gemini-3-pro-preview'
5959
| 'google/gemini-3.1-pro-preview'
60+
| 'google/gemini-3.1-flash-image-preview'
6061
| 'inception/mercury-coder-small'
6162
| 'kwaipilot/kat-coder-pro-v1'
6263
| 'meituan/longcat-flash-chat'

packages/google-vertex/src/google-vertex-image-settings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ export type GoogleVertexImageModelId =
77
| 'imagen-4.0-fast-generate-001'
88
| 'gemini-2.5-flash-image'
99
| 'gemini-3-pro-image-preview'
10+
| 'gemini-3.1-flash-image-preview'
1011
| (string & {});

packages/google-vertex/src/google-vertex-options.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ export type GoogleVertexModelId =
2323
| 'gemini-2.0-flash-lite-preview-02-05'
2424
| 'gemini-2.5-flash-lite-preview-09-2025'
2525
| 'gemini-2.5-flash-preview-09-2025'
26-
| 'gemini-3.1-pro-preview'
2726
| 'gemini-3-pro-preview'
2827
| 'gemini-3-pro-image-preview'
2928
| 'gemini-3-flash-preview'
29+
| 'gemini-3.1-pro-preview'
30+
| 'gemini-3.1-flash-image-preview'
3031
// Experimental models
3132
| 'gemini-2.0-pro-exp-02-05'
3233
| 'gemini-2.0-flash-exp'

packages/google/src/google-generative-ai-image-settings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export type GoogleGenerativeAIImageModelId =
66
// Gemini image models (technically multimodal output language models, use :generateContent API)
77
| 'gemini-2.5-flash-image'
88
| 'gemini-3-pro-image-preview'
9+
| 'gemini-3.1-flash-image-preview'
910
| (string & {});
1011

1112
export interface GoogleGenerativeAIImageSettings {

packages/google/src/google-generative-ai-options.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,12 @@ export type GoogleGenerativeAIModelId =
3737
| 'gemini-2.5-flash-native-audio-preview-09-2025'
3838
| 'gemini-2.5-flash-native-audio-preview-12-2025'
3939
| 'gemini-2.5-computer-use-preview-10-2025'
40-
| 'gemini-3.1-pro-preview'
41-
| 'gemini-3.1-pro-preview-customtools'
4240
| 'gemini-3-pro-preview'
4341
| 'gemini-3-pro-image-preview'
4442
| 'gemini-3-flash-preview'
43+
| 'gemini-3.1-pro-preview'
44+
| 'gemini-3.1-pro-preview-customtools'
45+
| 'gemini-3.1-flash-image-preview'
4546
// latest version
4647
// https://ai.google.dev/gemini-api/docs/models#latest
4748
| 'gemini-pro-latest'

0 commit comments

Comments
 (0)