UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

66 lines (52 loc) 1.98 kB
import { DEFAULT_SYSTEM_AGENT_CONFIG } from '@/const/settings'; import { UserSystemAgentConfig } from '@/types/user/settings'; const protectedKeys = Object.keys(DEFAULT_SYSTEM_AGENT_CONFIG); export const parseSystemAgent = (envString: string = ''): Partial<UserSystemAgentConfig> => { if (!envString) return {}; const config: Partial<UserSystemAgentConfig> = {}; // 处理全角逗号和多余空格 let envValue = envString.replaceAll(',', ',').trim(); const pairs = envValue.split(','); // 用于存储默认设置,如果有 default=provider/model 的情况 let defaultSetting: { model: string; provider: string } | undefined; for (const pair of pairs) { const [key, value] = pair.split('=').map((s) => s.trim()); if (key && value) { const [provider, ...modelParts] = value.split('/'); const model = modelParts.join('/'); if (!provider || !model) { throw new Error('Missing model or provider value'); } // 如果是 default 键,保存默认设置 if (key === 'default') { defaultSetting = { model: model.trim(), provider: provider.trim(), }; continue; } if (protectedKeys.includes(key)) { config[key as keyof UserSystemAgentConfig] = { enabled: key === 'queryRewrite' ? true : undefined, model: model.trim(), provider: provider.trim(), } as any; } } else { throw new Error('Invalid environment variable format'); } } // 如果有默认设置,应用到所有未设置的系统智能体 if (defaultSetting) { for (const key of protectedKeys) { if (!config[key as keyof UserSystemAgentConfig]) { config[key as keyof UserSystemAgentConfig] = { enabled: key === 'queryRewrite' ? true : undefined, model: defaultSetting.model, provider: defaultSetting.provider, } as any; } } } return config; };