Skip to content

Commit fa5131c

Browse files
authored
Merge pull request #1476 from narengogi/chore/nano-banana-improvements
improvements for nano banana
2 parents 1e4891d + dfbc75a commit fa5131c

5 files changed

Lines changed: 50 additions & 6 deletions

File tree

src/providers/google-vertex-ai/chatComplete.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,10 @@ export const VertexLlamaChatCompleteConfig: ProviderConfig = {
599599
param: 'stream',
600600
default: false,
601601
},
602+
image_config: {
603+
param: 'generationConfig',
604+
transform: (params: Params) => transformGenerationConfig(params),
605+
},
602606
};
603607

604608
export const GoogleChatCompleteStreamChunkTransform: (

src/providers/google-vertex-ai/transformGenerationConfig.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import { Params } from '../../types/requestBody';
21
import {
32
recursivelyDeleteUnsupportedParameters,
43
transformGeminiToolParameters,
54
} from './utils';
65
import { GoogleEmbedParams } from './embed';
7-
import { EmbedInstancesData } from './types';
6+
import { EmbedInstancesData, PortkeyGeminiParams } from './types';
87

98
export const openaiReasoningEffortToVertexThinkingLevel = (
109
reasoningEffort: string
@@ -19,7 +18,7 @@ export const openaiReasoningEffortToVertexThinkingLevel = (
1918
/**
2019
* @see https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini#request_body
2120
*/
22-
export function transformGenerationConfig(params: Params) {
21+
export function transformGenerationConfig(params: PortkeyGeminiParams) {
2322
const generationConfig: Record<string, any> = {};
2423
if (params['temperature'] != null && params['temperature'] != undefined) {
2524
generationConfig['temperature'] = params['temperature'];
@@ -86,7 +85,16 @@ export function transformGenerationConfig(params: Params) {
8685
};
8786
}
8887
}
89-
88+
if (params.image_config) {
89+
generationConfig['imageConfig'] = {
90+
...(params.image_config.aspect_ratio && {
91+
aspectRatio: params.image_config.aspect_ratio,
92+
}),
93+
...(params.image_config.image_size && {
94+
imageSize: params.image_config.image_size,
95+
}),
96+
};
97+
}
9098
return generationConfig;
9199
}
92100

src/providers/google-vertex-ai/types.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Params } from '../../types/requestBody';
12
import { ChatCompletionResponse, GroundingMetadata } from '../types';
23

34
export interface GoogleErrorResponse {
@@ -276,3 +277,9 @@ export enum VERTEX_MODALITY {
276277
IMAGE = 'IMAGE',
277278
AUDIO = 'AUDIO',
278279
}
280+
export interface PortkeyGeminiParams extends Params {
281+
image_config?: {
282+
aspect_ratio: string; // '16:9', '4:3', '1:1'
283+
image_size: string; // '2K', '4K', '8K'
284+
};
285+
}

src/providers/google/chatComplete.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,12 @@ import {
3232
generateInvalidProviderResponseError,
3333
transformFinishReason,
3434
} from '../utils';
35-
import { GOOGLE_GENERATE_CONTENT_FINISH_REASON } from './types';
35+
import {
36+
GOOGLE_GENERATE_CONTENT_FINISH_REASON,
37+
PortkeyGeminiParams,
38+
} from './types';
3639

37-
const transformGenerationConfig = (params: Params) => {
40+
const transformGenerationConfig = (params: PortkeyGeminiParams) => {
3841
const generationConfig: Record<string, any> = {};
3942
if (params['temperature'] != null && params['temperature'] != undefined) {
4043
generationConfig['temperature'] = params['temperature'];
@@ -100,6 +103,16 @@ const transformGenerationConfig = (params: Params) => {
100103
};
101104
}
102105
}
106+
if (params.image_config) {
107+
generationConfig['imageConfig'] = {
108+
...(params.image_config.aspect_ratio && {
109+
aspectRatio: params.image_config.aspect_ratio,
110+
}),
111+
...(params.image_config.image_size && {
112+
imageSize: params.image_config.image_size,
113+
}),
114+
};
115+
}
103116
return generationConfig;
104117
};
105118

@@ -464,6 +477,10 @@ export const GoogleChatCompleteConfig: ProviderConfig = {
464477
param: 'generationConfig',
465478
transform: (params: Params) => transformGenerationConfig(params),
466479
},
480+
image_config: {
481+
param: 'generationConfig',
482+
transform: (params: Params) => transformGenerationConfig(params),
483+
},
467484
};
468485

469486
export interface GoogleErrorResponse {

src/providers/google/types.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { Params } from '../../types/requestBody';
2+
13
export enum GOOGLE_GENERATE_CONTENT_FINISH_REASON {
24
FINISH_REASON_UNSPECIFIED = 'FINISH_REASON_UNSPECIFIED',
35
STOP = 'STOP',
@@ -12,3 +14,9 @@ export enum GOOGLE_GENERATE_CONTENT_FINISH_REASON {
1214
MALFORMED_FUNCTION_CALL = 'MALFORMED_FUNCTION_CALL',
1315
IMAGE_SAFETY = 'IMAGE_SAFETY',
1416
}
17+
export interface PortkeyGeminiParams extends Params {
18+
image_config?: {
19+
aspect_ratio: string; // '16:9', '4:3', '1:1'
20+
image_size: string; // '2K', '4K', '8K'
21+
};
22+
}

0 commit comments

Comments
 (0)