import { ILLMAdapter, ModelType } from './types.js'; import { DeepSeekAdapter } from './DeepSeekAdapter.js'; import { QwenAdapter } from './QwenAdapter.js'; /** * LLM工厂类 * 根据模型类型创建相应的适配器实例 */ export class LLMFactory { private static adapters: Map = new Map(); /** * 获取LLM适配器实例(单例模式) * @param modelType 模型类型 * @returns LLM适配器实例 */ static getAdapter(modelType: ModelType): ILLMAdapter { // 如果已经创建过该适配器,直接返回 if (this.adapters.has(modelType)) { return this.adapters.get(modelType)!; } // 根据模型类型创建适配器 let adapter: ILLMAdapter; switch (modelType) { case 'deepseek-v3': adapter = new DeepSeekAdapter('deepseek-chat'); break; case 'qwen3-72b': adapter = new QwenAdapter('qwen-max'); // Qwen3-72B对应的模型名 break; case 'gemini-pro': // TODO: 实现Gemini适配器 throw new Error('Gemini adapter is not implemented yet'); default: throw new Error(`Unsupported model type: ${modelType}`); } // 缓存适配器实例 this.adapters.set(modelType, adapter); return adapter; } /** * 清除适配器缓存 * @param modelType 可选,指定清除某个模型的适配器,不传则清除所有 */ static clearCache(modelType?: ModelType): void { if (modelType) { this.adapters.delete(modelType); } else { this.adapters.clear(); } } /** * 检查模型是否支持 * @param modelType 模型类型 * @returns 是否支持 */ static isSupported(modelType: string): boolean { return ['deepseek-v3', 'qwen3-72b', 'gemini-pro'].includes(modelType); } /** * 获取所有支持的模型列表 * @returns 支持的模型列表 */ static getSupportedModels(): ModelType[] { return ['deepseek-v3', 'qwen3-72b', 'gemini-pro']; } }