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.

98 lines (76 loc) 2.45 kB
// 可扩展的支持配置接口 export interface SupportedConfig { extensions?: Record<string, any>; models: Record<string, string[]>; workflows: string[]; } // 基础支持配置 const baseConfig: SupportedConfig = { extensions: {}, models: { flux: ['flux-dev', 'flux-schnell', 'flux-kontext', 'flux-krea'], sd: ['sd15', 'sdxl', 'sd35'], }, workflows: ['flux-dev', 'flux-schnell', 'flux-kontext', 'flux-krea', 'simple-sd', 'sd35'], }; // 动态配置合并函数 function mergeConfig(base: SupportedConfig, custom?: Partial<SupportedConfig>): SupportedConfig { if (!custom) return base; return { // 去重 extensions: { ...base.extensions, ...custom.extensions, }, models: { ...base.models, ...custom.models, }, workflows: [...base.workflows, ...(custom.workflows || [])].filter( (workflow, index, array) => array.indexOf(workflow) === index, ), }; } // 可扩展的 fixture 对象 export const supportedFixture = { // 扩展工具函数 addCustomModels: (modelType: string, models: string[]) => { baseConfig.models[modelType] = [...(baseConfig.models[modelType] || []), ...models].filter( (model, index, array) => array.indexOf(model) === index, ); }, addCustomWorkflows: (workflows: string[]) => { baseConfig.workflows = [...baseConfig.workflows, ...workflows].filter( (workflow, index, array) => array.indexOf(workflow) === index, ); }, // 获取当前配置(支持自定义扩展) getConfig: (customConfig?: Partial<SupportedConfig>): SupportedConfig => { return mergeConfig(baseConfig, customConfig); }, // 验证帮助函数 isSupported: (model: string, customConfig?: Partial<SupportedConfig>) => { const config = mergeConfig(baseConfig, customConfig); const allModels = Object.values(config.models).flat(); return allModels.includes(model); }, // 向后兼容的属性(保持现有测试不受影响) models: baseConfig.models, // 重置为基础配置(用于测试隔离) reset: () => { baseConfig.models = { flux: ['flux-dev', 'flux-schnell', 'flux-kontext', 'flux-krea'], sd: ['sd15', 'sdxl', 'sd35'], }; baseConfig.workflows = [ 'flux-dev', 'flux-schnell', 'flux-kontext', 'flux-krea', 'simple-sd', 'sd35', ]; baseConfig.extensions = {}; }, workflows: baseConfig.workflows, };