- Complete knowledge base list and detail pages - Complete document upload component - Fix CORS config (add PUT/DELETE method support) - Fix file upload issues (disabled state and beforeUpload return value) - Add detailed debug logs (cleaned up) - Create Day 21-22 completion summary document
81 lines
2.0 KiB
TypeScript
81 lines
2.0 KiB
TypeScript
import { ILLMAdapter, ModelType } from './types.js';
|
||
import { DeepSeekAdapter } from './DeepSeekAdapter.js';
|
||
import { QwenAdapter } from './QwenAdapter.js';
|
||
|
||
/**
|
||
* LLM工厂类
|
||
* 根据模型类型创建相应的适配器实例
|
||
*/
|
||
export class LLMFactory {
|
||
private static adapters: Map<string, ILLMAdapter> = 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'];
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|