generated from tailored/app-template
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
export * from './core/index.ts';
|
|
import { BaseChat } from './core/chat.ts';
|
|
|
|
import { Ollama } from './chat-adapter/ollama.ts';
|
|
import { SiliconFlow } from './chat-adapter/siliconflow.ts';
|
|
import { Custom } from './chat-adapter/custom.ts';
|
|
import { Volces } from './chat-adapter/volces.ts';
|
|
import { DeepSeek } from './chat-adapter/deepseek.ts';
|
|
import { ModelScope } from './chat-adapter/model-scope.ts';
|
|
import { ChatMessage } from './core/type.ts';
|
|
|
|
export const OllamaProvider = Ollama;
|
|
export const SiliconFlowProvider = SiliconFlow;
|
|
export const CustomProvider = Custom;
|
|
export const VolcesProvider = Volces;
|
|
export const DeepSeekProvider = DeepSeek;
|
|
export const ModelScopeProvider = ModelScope;
|
|
|
|
export const ProviderMap = {
|
|
Ollama: OllamaProvider,
|
|
SiliconFlow: SiliconFlowProvider,
|
|
Custom: CustomProvider,
|
|
Volces: VolcesProvider,
|
|
DeepSeek: DeepSeekProvider,
|
|
ModelScope: ModelScopeProvider,
|
|
BaseChat: BaseChat,
|
|
};
|
|
|
|
type ProviderManagerConfig = {
|
|
provider: string;
|
|
model: string;
|
|
apiKey: string;
|
|
baseURL?: string;
|
|
};
|
|
export class ProviderManager {
|
|
provider: BaseChat;
|
|
constructor(config: ProviderManagerConfig) {
|
|
const { provider, model, apiKey, baseURL } = config;
|
|
const Provider = ProviderMap[provider] as typeof BaseChat;
|
|
if (!Provider) {
|
|
throw new Error(`Provider ${provider} not found`);
|
|
}
|
|
const providerConfig = {
|
|
model,
|
|
apiKey,
|
|
baseURL,
|
|
};
|
|
if (!providerConfig.baseURL) {
|
|
delete providerConfig.baseURL;
|
|
}
|
|
this.provider = new Provider(providerConfig);
|
|
}
|
|
static async createProvider(config: ProviderManagerConfig) {
|
|
if (!config.baseURL) {
|
|
delete config.baseURL;
|
|
}
|
|
const pm = new ProviderManager(config);
|
|
return pm.provider;
|
|
}
|
|
async chat(messages: ChatMessage[]) {
|
|
return this.provider.chat(messages);
|
|
}
|
|
}
|