Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/adapters/impl/gemini/GeminiClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,18 @@ const DEFAULT_TOOL_CALL_LIMIT: ToolCallLimitConfig = {

export type GeminiClientOptions = BaseClientOptions & {
toolCallLimit?: ToolCallLimitConfig
/** Optional. The API version to use.
* If unset, the default API version will be used.
*/
apiVersion?: string
}
export class GeminiClient extends AbstractClient {
private readonly apiVersion?: string

constructor(options: GeminiClientOptions | Partial<GeminiClientOptions>, context?: ChaiteContext) {
super(options, context)
this.name = 'gemini'
this.apiVersion = (options as Partial<GeminiClientOptions>)?.apiVersion
const providedLimit = (options as Partial<GeminiClientOptions>)?.toolCallLimit
const effectiveLimit = {
...DEFAULT_TOOL_CALL_LIMIT,
Expand All @@ -58,6 +65,7 @@ export class GeminiClient extends AbstractClient {
}
const ai = new GoogleGenAI({
apiKey,
apiVersion: this.apiVersion,
httpOptions: {
baseUrl: this.baseUrl,
headers: {
Expand Down Expand Up @@ -144,6 +152,7 @@ export class GeminiClient extends AbstractClient {
const model = options.model || 'text-embedding-004'
const ai = new GoogleGenAI({
apiKey,
apiVersion: this.apiVersion,
httpOptions: {
baseUrl: this.baseUrl,
headers: {
Expand Down
25 changes: 25 additions & 0 deletions src/adapters/impl/gemini/gemini.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,29 @@ describe('GeminiClient', () => {

expect(response.contents[0].type).toBe('text')
}, 60000);

test('GeminiClient accepts apiVersion configuration', () => {
const geminiClient = new GeminiClient({
apiKey: 'test-api-key',
baseUrl: 'https://test.example.com',
features: ['chat'],
historyManager: DefaultHistoryManager,
apiVersion: 'v1alpha'
})
// Verify the client is created successfully with apiVersion
expect(geminiClient).toBeDefined()
expect(geminiClient.name).toBe('gemini')
});

test('GeminiClient works without apiVersion (uses default)', () => {
const geminiClient = new GeminiClient({
apiKey: 'test-api-key',
baseUrl: 'https://test.example.com',
features: ['chat'],
historyManager: DefaultHistoryManager
})
// Verify the client is created successfully without apiVersion
expect(geminiClient).toBeDefined()
expect(geminiClient.name).toBe('gemini')
});
});