Skip to content

Commit 4dde116

Browse files
🔧 chore(providers): 优化 AI 服务商配置和错误处理
- 修复 Gemini AI 枚举值命名 - 统一 Gemini 服务商显示名称 - 优化 OpenAI 模型获取逻辑【性能】 - 移除基础命令中的配置校验【重构】 - 修复文件末尾换行符问题【格式】
1 parent 911ed64 commit 4dde116

File tree

5 files changed

+31
-10
lines changed

5 files changed

+31
-10
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -313,4 +313,4 @@
313313
]
314314
}
315315
}
316-
}
316+
}

src/ai/AIProviderFactory.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export class AIProviderFactory {
5656
case AIProvider.DOUBAO:
5757
provider = new DoubaoProvider();
5858
break;
59-
case AIProvider.Gemini:
59+
case AIProvider.GEMINI:
6060
provider = new GeminiAIProvider();
6161
break;
6262
default:

src/ai/providers/BaseOpenAIProvider.ts

+24-3
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,30 @@ export abstract class BaseOpenAIProvider implements AIProvider {
122122
}
123123
}
124124

125-
async getModels(): Promise<AIModel[]> {
126-
return Promise.resolve(this.config.models);
125+
async getModels(): Promise<AIModel[] | any[]> {
126+
try {
127+
const response = await this.openai.models.list();
128+
return response.data.map((model: any) => {
129+
console.log("model", model);
130+
return {
131+
id: model.id,
132+
name: model.id,
133+
maxTokens: {
134+
input: model.context_window || 4096,
135+
output: Math.floor((model.context_window || 4096) / 2),
136+
},
137+
provider: this.provider,
138+
};
139+
});
140+
} catch (error) {
141+
console.warn("Failed to fetch models:", error);
142+
return this.config.models;
143+
}
144+
}
145+
146+
async refreshModels(): Promise<string[]> {
147+
const models = await this.getModels();
148+
return models.map((m) => m.id);
127149
}
128150

129151
getName(): string {
@@ -135,5 +157,4 @@ export abstract class BaseOpenAIProvider implements AIProvider {
135157
}
136158

137159
abstract isAvailable(): Promise<boolean>;
138-
abstract refreshModels(): Promise<string[]>;
139160
}

src/ai/providers/GeminiAIProvider.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export class GeminiAIProvider extends BaseOpenAIProvider {
5454
apiKey: configManager.getConfig("PROVIDERS_GEMINI_APIKEY"),
5555
baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/",
5656
providerId: "gemini",
57-
providerName: "Gemini AI",
57+
providerName: "Gemini",
5858
models: geminiModels,
5959
defaultModel: "gemini-1",
6060
});

src/commands/BaseCommand.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ export abstract class BaseCommand {
1111
}
1212

1313
protected async validateConfig(): Promise<boolean> {
14-
if (!(await ConfigurationManager.getInstance().validateConfiguration())) {
15-
await NotificationHandler.error("command.execution.failed");
16-
return false;
17-
}
14+
// if (!(await ConfigurationManager.getInstance().validateConfiguration())) {
15+
// await NotificationHandler.error("command.execution.failed");
16+
// return false;
17+
// }
1818
return true;
1919
}
2020

0 commit comments

Comments
 (0)