Skip to content
66 changes: 40 additions & 26 deletions src/main/presenter/configPresenter/modelDefaultSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,7 @@ export const defaultModelsSettings: DefaultModelSetting[] = [
},

// Gemini 系列模型
// ref: https://ai.google.dev/gemini-api/docs/models
{
id: 'gemini-2.5-pro',
name: 'Gemini 2.5 Pro',
Expand All @@ -357,74 +358,87 @@ export const defaultModelsSettings: DefaultModelSetting[] = [
match: ['google/gemini-2.5-flash-image-preview', 'gemini-2.5-flash-image-preview'],
vision: true,
functionCall: false,
reasoning: false
reasoning: false,
type: ModelType.ImageGeneration
},
{
id: 'models/gemini-2.5-flash',
name: 'Gemini 2.5 Flash',
id: 'models/gemini-2.5-flash-lite-preview-06-17',
name: 'Gemini 2.5 Flash-Lite Preview',
temperature: 0.7,
maxTokens: 65535,
contextLength: 1048576,
match: ['models/gemini-2.5-flash', 'gemini-2.5-flash'],
match: ['models/gemini-2.5-flash-lite-preview-06-17', 'gemini-2.5-flash-lite-preview'],
vision: true,
functionCall: true,
reasoning: true,
thinkingBudget: -1 // 动态思维
},
{
id: 'models/gemini-2.5-flash-lite-preview-06-17',
name: 'Gemini 2.5 Flash-Lite Preview',
id: 'models/gemini-2.5-flash-lite',
name: 'Gemini 2.5 Flash-Lite',
temperature: 0.7,
maxTokens: 65536,
maxTokens: 65535,
contextLength: 1048576,
match: ['models/gemini-2.5-flash-lite-preview-06-17', 'gemini-2.5-flash-lite-preview'],
match: ['models/gemini-2.5-flash-lite', 'gemini-2.5-flash-lite'],
vision: true,
functionCall: true,
reasoning: true,
thinkingBudget: 0 // 默认不思考
thinkingBudget: -1 // 动态思维
},
{
id: 'models/gemini-2.0-flash',
name: 'Gemini 2.0 Flash',
id: 'models/gemini-2.5-flash',
name: 'Gemini 2.5 Flash',
temperature: 0.7,
maxTokens: 8192,
maxTokens: 65535,
contextLength: 1048576,
match: ['models/gemini-2.0-flash', 'gemini-2.0-flash'],
match: ['models/gemini-2.5-flash', 'gemini-2.5-flash'],
vision: true,
functionCall: true,
reasoning: true
reasoning: true,
thinkingBudget: -1 // 动态思维
},
{
id: 'models/gemini-2.0-flash-preview-image-generation',
name: 'Gemini 2.0 Flash Preview Image Generation',
temperature: 0.7,
maxTokens: 8192,
contextLength: 32000,
match: [
'models/gemini-2.0-flash-preview-image-generation',
'gemini-2.0-flash-preview-image-generation'
],
vision: true,
functionCall: false,
reasoning: false,
type: ModelType.ImageGeneration
},
{
id: 'models/gemini-2.0-flash-lite',
name: 'Gemini 2.0 Flash Lite',
temperature: 0.7,
maxTokens: 8192,
maxTokens: 8191,
contextLength: 1048576,
match: ['models/gemini-2.0-flash-lite', 'gemini-2.0-flash-lite'],
vision: true,
functionCall: true,
reasoning: false
},
{
id: 'models/gemini-2.0-flash-preview-image-generation',
name: 'Gemini 2.0 Flash Preview Image Generation',
id: 'models/gemini-2.0-flash',
name: 'Gemini 2.0 Flash',
temperature: 0.7,
maxTokens: 8192,
contextLength: 32000,
match: [
'models/gemini-2.0-flash-preview-image-generation',
'gemini-2.0-flash-preview-image-generation'
],
maxTokens: 8191,
contextLength: 1048576,
match: ['models/gemini-2.0-flash', 'gemini-2.0-flash'],
vision: true,
functionCall: true,
reasoning: false,
type: ModelType.ImageGeneration
reasoning: true //Experimental
},
{
id: 'models/gemini-1.5-flash',
name: 'Gemini 1.5 Flash',
temperature: 0.7,
maxTokens: 8192,
maxTokens: 8191,
contextLength: 1048576,
match: ['models/gemini-1.5-flash', 'gemini-1.5-flash'],
vision: true,
Expand Down
63 changes: 38 additions & 25 deletions src/main/presenter/configPresenter/providerModelSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ export const providerModelSettings: Record<string, { models: ProviderModelSettin
id: 'gemini-2.5-pro',
name: 'Gemini 2.5 Pro',
temperature: 0.7,
maxTokens: 65536,
maxTokens: 65535,
contextLength: 1048576,
match: ['gemini-2.5-pro'],
vision: true,
Expand All @@ -190,72 +190,84 @@ export const providerModelSettings: Record<string, { models: ProviderModelSettin
match: ['google/gemini-2.5-flash-image-preview', 'gemini-2.5-flash-image-preview'],
vision: true,
functionCall: false,
reasoning: false
reasoning: false,
type: ModelType.ImageGeneration
},
{
id: 'models/gemini-2.5-flash-lite-preview-06-17',
name: 'Gemini 2.5 Flash-Lite Preview',
temperature: 0.7,
maxTokens: 64000,
contextLength: 1000000,
maxTokens: 65535,
contextLength: 1048576,
match: ['models/gemini-2.5-flash-lite-preview-06-17', 'gemini-2.5-flash-lite-preview'],
vision: true,
functionCall: true,
reasoning: true
},
{
id: 'models/gemini-2.5-flash-lite',
name: 'Gemini 2.5 Flash Lite',
temperature: 0.7,
maxTokens: 65535,
contextLength: 1048576,
match: ['models/gemini-2.5-flash-lite', 'gemini-2.5-flash-lite'],
vision: true,
functionCall: true,
reasoning: true
},
{
id: 'models/gemini-2.5-flash',
name: 'Gemini 2.5 Flash',
temperature: 0.7,
maxTokens: 65536,
maxTokens: 65535,
contextLength: 1048576,
match: ['models/gemini-2.5-flash', 'gemini-2.5-flash'],
vision: true,
functionCall: true,
reasoning: true
},
{
id: 'models/gemini-2.0-flash',
name: 'Gemini 2.0 Flash',
id: 'models/gemini-2.0-flash-preview-image-generation',
name: 'Gemini 2.0 Flash Preview Image Generation',
temperature: 0.7,
maxTokens: 8192,
contextLength: 1048576,
match: ['models/gemini-2.0-flash', 'gemini-2.0-flash'],
contextLength: 32000,
match: [
'models/gemini-2.0-flash-preview-image-generation',
'gemini-2.0-flash-preview-image-generation'
],
vision: true,
functionCall: true,
reasoning: true
functionCall: false,
reasoning: false,
type: ModelType.ImageGeneration
},
{
id: 'models/gemini-2.0-flash-lite',
name: 'Gemini 2.0 Flash Lite',
temperature: 0.7,
maxTokens: 8192,
maxTokens: 8191,
contextLength: 1048576,
match: ['models/gemini-2.0-flash-lite', 'gemini-2.0-flash-lite'],
vision: true,
functionCall: true,
reasoning: false
},
{
id: 'models/gemini-2.0-flash-preview-image-generation',
name: 'Gemini 2.0 Flash Preview Image Generation',
id: 'models/gemini-2.0-flash',
name: 'Gemini 2.0 Flash',
temperature: 0.7,
maxTokens: 8192,
contextLength: 32000,
match: [
'models/gemini-2.0-flash-preview-image-generation',
'gemini-2.0-flash-preview-image-generation'
],
maxTokens: 8191,
contextLength: 1048576,
match: ['models/gemini-2.0-flash', 'gemini-2.0-flash'],
vision: true,
functionCall: true,
reasoning: false,
type: ModelType.ImageGeneration
reasoning: true
},
{
id: 'models/gemini-1.5-flash',
name: 'Gemini 1.5 Flash',
temperature: 0.7,
maxTokens: 8192,
maxTokens: 8191,
contextLength: 1048576,
match: ['models/gemini-1.5-flash', 'gemini-1.5-flash'],
vision: true,
Expand All @@ -266,7 +278,7 @@ export const providerModelSettings: Record<string, { models: ProviderModelSettin
id: 'models/gemini-1.5-pro',
name: 'Gemini 1.5 Pro',
temperature: 0.7,
maxTokens: 8192,
maxTokens: 8191,
contextLength: 2097152,
match: ['models/gemini-1.5-pro', 'gemini-1.5-pro'],
vision: true,
Expand Down Expand Up @@ -2334,7 +2346,8 @@ export const providerModelSettings: Record<string, { models: ProviderModelSettin
match: ['google/gemini-2.5-flash-image-preview', 'gemini-2.5-flash-image-preview'],
vision: true,
functionCall: false,
reasoning: false
reasoning: false,
type: ModelType.ImageGeneration
},
{
id: 'deepseek-r1-0528:free',
Expand Down
60 changes: 36 additions & 24 deletions src/main/presenter/llmProviderPresenter/providers/geminiProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,80 +58,92 @@ export class GeminiProvider extends BaseLLMProvider {
providerId: 'gemini',
isCustom: false,
contextLength: 1048576,
maxTokens: 65536,
maxTokens: 65535,
vision: true,
functionCall: true,
reasoning: true
},
{
id: 'models/gemini-2.5-flash',
name: 'Gemini 2.5 Flash',
id: 'models/gemini-2.5-flash-lite-preview-06-17',
name: 'Gemini 2.5 Flash-Lite Preview',
group: 'default',
providerId: 'gemini',
isCustom: false,
contextLength: 1048576,
maxTokens: 65536,
maxTokens: 65535,
vision: true,
functionCall: true,
reasoning: true
},
{
id: 'models/gemini-2.5-flash-lite-preview-06-17',
name: 'Gemini 2.5 Flash-Lite Preview',
id: 'models/gemini-2.5-flash-lite',
name: 'Gemini 2.5 Flash-Lite',
group: 'default',
providerId: 'gemini',
isCustom: false,
contextLength: 1_000_000,
maxTokens: 64_000,
contextLength: 1048576,
maxTokens: 65535,
vision: true,
functionCall: true,
reasoning: true
},
{
id: 'models/gemini-2.0-flash',
name: 'Gemini 2.0 Flash',
id: 'models/gemini-2.5-flash',
name: 'Gemini 2.5 Flash',
group: 'default',
providerId: 'gemini',
isCustom: false,
contextLength: 1_048_576,
maxTokens: 8192,
contextLength: 1048576,
maxTokens: 65535,
vision: true,
functionCall: true,
reasoning: true
},
{
id: 'models/gemini-2.0-flash-preview-image-generation',
name: 'Gemini 2.0 Flash Preview Image Generation',
group: 'default',
providerId: 'gemini',
isCustom: false,
contextLength: 32000,
maxTokens: 8192,
vision: true,
functionCall: false,
reasoning: false,
type: ModelType.ImageGeneration
},
{
id: 'models/gemini-2.0-flash-lite',
name: 'Gemini 2.0 Flash Lite',
group: 'default',
providerId: 'gemini',
isCustom: false,
contextLength: 1_048_576,
maxTokens: 8192,
contextLength: 1048576,
maxTokens: 8191,
vision: true,
functionCall: true,
reasoning: false
},
{
id: 'models/gemini-2.0-flash-preview-image-generation',
name: 'Gemini 2.0 Flash Preview Image Generation',
id: 'models/gemini-2.0-flash',
name: 'Gemini 2.0 Flash',
group: 'default',
providerId: 'gemini',
isCustom: false,
contextLength: 32000,
maxTokens: 8192,
contextLength: 1048576,
maxTokens: 8191,
vision: true,
functionCall: true,
reasoning: false,
type: ModelType.ImageGeneration
reasoning: true
},
{
id: 'models/gemini-1.5-flash',
name: 'Gemini 1.5 Flash',
group: 'default',
providerId: 'gemini',
isCustom: false,
contextLength: 1_048_576,
maxTokens: 8192,
contextLength: 1048576,
maxTokens: 8191,
vision: true,
functionCall: true,
reasoning: false
Expand Down Expand Up @@ -866,7 +878,7 @@ export class GeminiProvider extends BaseLLMProvider {
console.log('modelConfig', modelConfig, modelId)

// 检查是否是图片生成模型
const isImageGenerationModel = modelId === 'models/gemini-2.0-flash-preview-image-generation'
const isImageGenerationModel = modelConfig?.type === ModelType.ImageGeneration

// 如果是图片生成模型,使用特殊处理
if (isImageGenerationModel) {
Expand Down Expand Up @@ -935,7 +947,7 @@ export class GeminiProvider extends BaseLLMProvider {
let isInThinkTag = false
let toolUseDetected = false
let usageMetadata: GenerateContentResponseUsageMetadata | undefined
let isNewThoughtFormatDetected = false
let isNewThoughtFormatDetected = modelConfig.reasoning === true

// 流处理循环
for await (const chunk of result) {
Expand Down
3 changes: 2 additions & 1 deletion src/main/presenter/mcpPresenter/toolManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,8 @@ export class ToolManager {
lowerToolName.includes('fetch') ||
lowerToolName.includes('search') ||
lowerToolName.includes('find') ||
lowerToolName.includes('query')
lowerToolName.includes('query') ||
lowerToolName.includes('tree')
) {
return 'read'
}
Expand Down
Loading