fix(Gemini Node): Allow Nano Banana model to be selected (#19080)

Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com>
This commit is contained in:
Jake Ranallo
2025-09-02 12:02:30 +02:00
committed by GitHub
parent a10a14bc79
commit 238fe84540
3 changed files with 22 additions and 3 deletions

View File

@@ -103,7 +103,7 @@ export async function execute(this: IExecuteFunctions, i: number): Promise<INode
}); });
return await Promise.all(promises); return await Promise.all(promises);
} else if (model.includes('imagen')) { } else if (model.includes('imagen') || model.includes('flash-image')) {
// Imagen models use a different endpoint and request/response structure // Imagen models use a different endpoint and request/response structure
const sampleCount = this.getNodeParameter('options.sampleCount', i, 1) as number; const sampleCount = this.getNodeParameter('options.sampleCount', i, 1) as number;
const body = { const body = {

View File

@@ -38,6 +38,9 @@ const mockResponse = {
{ {
name: 'models/gemini-2.5-flash-preview-native-audio-dialog', name: 'models/gemini-2.5-flash-preview-native-audio-dialog',
}, },
{
name: 'models/gemini-2.5-flash-image',
},
], ],
}; };
@@ -126,6 +129,11 @@ describe('GoogleGemini -> listSearch', () => {
name: 'models/imagen-3.0-generate-002', name: 'models/imagen-3.0-generate-002',
value: 'models/imagen-3.0-generate-002', value: 'models/imagen-3.0-generate-002',
}, },
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
name: 'models/gemini-2.5-flash-image (Nano Banana)',
value: 'models/gemini-2.5-flash-image',
},
], ],
}); });
}); });

View File

@@ -64,11 +64,22 @@ export async function imageGenerationModelSearch(
this: ILoadOptionsFunctions, this: ILoadOptionsFunctions,
filter?: string, filter?: string,
): Promise<INodeListSearchResult> { ): Promise<INodeListSearchResult> {
return await baseModelSearch.call( const results = await baseModelSearch.call(
this, this,
(model) => model.includes('imagen') || model.includes('image-generation'), (model) =>
model.includes('imagen') ||
model.includes('image-generation') ||
model.includes('flash-image'),
filter, filter,
); );
return {
results: results.results.map((r) =>
r.name.includes('gemini-2.5-flash-image')
? { name: `${r.name} (Nano Banana)`, value: r.value }
: r,
),
};
} }
export async function videoGenerationModelSearch( export async function videoGenerationModelSearch(