Skip to content

Commit d56b973

Browse files
authored
feat(model): 添加 Zhipu 模型支持 (#99)
- 在默认模型配置中新增 Zhipu 模型,包含相关 API 密钥和模型选项 - 更新 ModelManager 以支持加载 Zhipu 模型配置 - 扩展类型定义以包含 Zhipu 提供商 - 在 UI 组件中添加 Zhipu 模型的选项和判断逻辑
1 parent d54806a commit d56b973

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

packages/core/src/services/model/defaults.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const OPENAI_API_KEY = getEnvVar('VITE_OPENAI_API_KEY').trim();
3838
const GEMINI_API_KEY = getEnvVar('VITE_GEMINI_API_KEY').trim();
3939
const DEEPSEEK_API_KEY = getEnvVar('VITE_DEEPSEEK_API_KEY').trim();
4040
const SILICONFLOW_API_KEY = getEnvVar('VITE_SILICONFLOW_API_KEY').trim();
41+
const ZHIPU_API_KEY = getEnvVar('VITE_ZHIPU_API_KEY').trim();
4142
const CUSTOM_API_KEY = getEnvVar('VITE_CUSTOM_API_KEY').trim();
4243
const CUSTOM_API_BASE_URL = getEnvVar('VITE_CUSTOM_API_BASE_URL');
4344
const CUSTOM_API_MODEL = getEnvVar('VITE_CUSTOM_API_MODEL');
@@ -79,6 +80,15 @@ export const defaultModels: Record<string, ModelConfig> = {
7980
enabled: !!SILICONFLOW_API_KEY,
8081
provider: 'siliconflow'
8182
},
83+
zhipu: {
84+
name: 'Zhipu',
85+
baseURL: 'https://open.bigmodel.cn/api/paas/v4',
86+
models: ['glm-4-flash', 'glm-4', 'glm-3-turbo', 'glm-3'],
87+
defaultModel: 'glm-4-flash',
88+
apiKey: ZHIPU_API_KEY,
89+
enabled: !!ZHIPU_API_KEY,
90+
provider: 'zhipu'
91+
},
8292
custom: {
8393
name: 'Custom',
8494
baseURL: CUSTOM_API_BASE_URL,

packages/core/src/services/model/manager.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export class ModelManager implements IModelManager {
2121
// 1. 先从本地存储加载所有模型配置
2222
const storedData = localStorage.getItem('models');
2323
if (storedData) {
24+
console.log('加载模型配置:', storedData);
2425
this.models = JSON.parse(storedData);
2526
}
2627

packages/core/src/services/model/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export interface ModelConfig {
1515
/** 是否启用 */
1616
enabled: boolean;
1717
/** 提供商 */
18-
provider: 'deepseek' | 'gemini' | 'custom' | string;
18+
provider: 'deepseek' | 'gemini' | 'custom' | 'zhipu' | string;
1919
/** 是否使用Vercel代理 */
2020
useVercelProxy?: boolean;
2121
}

packages/core/src/types/global.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ interface Window {
44
GEMINI_API_KEY?: string;
55
DEEPSEEK_API_KEY?: string;
66
SILICONFLOW_API_KEY?: string;
7+
ZHIPU_API_KEY?: string;
78
CUSTOM_API_KEY?: string;
89
CUSTOM_API_BASE_URL?: string;
910
CUSTOM_API_MODEL?: string;

packages/ui/src/components/ModelManager.vue

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ const loadModels = () => {
360360
361361
// 判断是否为默认模型
362362
const isDefaultModel = (key) => {
363-
return ['openai', 'gemini', 'deepseek'].includes(key);
363+
return ['openai', 'gemini', 'deepseek', 'zhipu'].includes(key);
364364
};
365365
366366
// =============== 模型管理函数 ===============
@@ -541,6 +541,13 @@ const addDefaultModelOptions = (providerKey) => {
541541
{ label: 'deepseek-chat', value: 'deepseek-chat' },
542542
{ label: 'deepseek-coder', value: 'deepseek-coder' }
543543
];
544+
} else if (providerKey === 'zhipu') {
545+
modelOptions.value = [
546+
{ label: 'GLM-4-Flash', value: 'glm-4-flash' },
547+
{ label: 'GLM-4', value: 'glm-4' },
548+
{ label: 'GLM-3-Turbo', value: 'glm-3-turbo' },
549+
{ label: 'GLM-3', value: 'glm-3' }
550+
];
544551
} else {
545552
// For custom models, provide empty list
546553
modelOptions.value = [];

0 commit comments

Comments
 (0)