Skip to content

Commit d0bbd71

Browse files
committed
feat(image): 支持配置 Gemini 适配器的基础 URL
- 移除对 setDefaultBaseUrls 的依赖 - 在连接配置中添加可选的 baseURL 字段 - 支持通过 httpOptions.baseUrl 传递自定义基础 URL - 更新测试用例以验证新字段的可用性与类型定义 - 确保默认行为不受影响,保持向后兼容性 - 标准化基础 URL 处理逻辑,提升代码健壮性
1 parent 31cd6d0 commit d0bbd71

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

packages/core/src/services/image/adapters/gemini.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GoogleGenAI, setDefaultBaseUrls } from '@google/genai'
1+
import { GoogleGenAI } from '@google/genai'
22
import { AbstractImageProviderAdapter } from './abstract-adapter'
33
import type {
44
ImageProvider,
@@ -19,8 +19,11 @@ export class GeminiImageAdapter extends AbstractImageProviderAdapter {
1919
supportsDynamicModels: false,
2020
connectionSchema: {
2121
required: ['apiKey'],
22-
optional: [],
23-
fieldTypes: { apiKey: 'string' }
22+
optional: ['baseURL'],
23+
fieldTypes: {
24+
apiKey: 'string',
25+
baseURL: 'string'
26+
}
2427
}
2528
}
2629
}
@@ -79,14 +82,17 @@ export class GeminiImageAdapter extends AbstractImageProviderAdapter {
7982
}
8083

8184
protected async doGenerate(request: ImageRequest, config: ImageModelConfig): Promise<ImageResult> {
82-
// 使用官方 GoogleGenAI SDK,按需设置代理后的基础地址(geminiUrl)
83-
const finalBase = this.resolveBaseUrl(config, /*isStream*/ false)
84-
if (finalBase) {
85-
// 仅设置 geminiUrl,不设置 vertexUrl
86-
setDefaultBaseUrls({ geminiUrl: finalBase })
87-
}
88-
89-
const genAI = new GoogleGenAI({ apiKey: config.connectionConfig?.apiKey })
85+
const rawBaseUrl = config.connectionConfig?.baseURL?.trim() || ''
86+
const normalizedBaseUrl = rawBaseUrl ? this.normalizeBaseUrl(rawBaseUrl) : ''
87+
88+
const genAI = normalizedBaseUrl
89+
? new GoogleGenAI({
90+
apiKey: config.connectionConfig?.apiKey,
91+
httpOptions: {
92+
baseUrl: normalizedBaseUrl
93+
}
94+
})
95+
: new GoogleGenAI({ apiKey: config.connectionConfig?.apiKey })
9096

9197
// 构建请求内容
9298
let contents: any

packages/core/tests/unit/image/gemini-adapter.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ describe('GeminiImageAdapter', () => {
1919
expect(provider.defaultBaseURL).toBe('https://generativelanguage.googleapis.com')
2020
expect(provider.supportsDynamicModels).toBe(false)
2121
expect(provider.connectionSchema?.required).toContain('apiKey')
22+
expect(provider.connectionSchema?.optional).toContain('baseURL')
2223
})
2324
})
2425

@@ -129,6 +130,8 @@ describe('GeminiImageAdapter', () => {
129130
const provider = adapter.getProvider()
130131
expect(provider.connectionSchema?.required).toContain('apiKey')
131132
expect(provider.connectionSchema?.fieldTypes.apiKey).toBe('string')
133+
expect(provider.connectionSchema?.optional).toContain('baseURL')
134+
expect(provider.connectionSchema?.fieldTypes.baseURL).toBe('string')
132135
})
133136
})
134137

0 commit comments

Comments
 (0)