generated from tailored/app-template
init demo
This commit is contained in:
59
src/provider/index.ts
Normal file
59
src/provider/index.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
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`);
|
||||
}
|
||||
this.provider = new Provider({
|
||||
model,
|
||||
apiKey,
|
||||
baseURL,
|
||||
});
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user