@aituber-onair/core
Version:
Core library for AITuber OnAir providing voice synthesis and chat processing
61 lines • 2.21 kB
JavaScript
import { OpenAIChatServiceProvider } from './providers/openai/OpenAIChatServiceProvider';
import { GeminiChatServiceProvider } from './providers/gemini/GeminiChatServiceProvider';
import { ClaudeChatServiceProvider } from './providers/claude/ClaudeChatServiceProvider';
/**
* Chat service factory
* Manages and creates various AI providers
*/
export class ChatServiceFactory {
/**
* Register a new provider
* @param provider Provider instance
*/
static registerProvider(provider) {
this.providers.set(provider.getProviderName(), provider);
}
/**
* Create a chat service with the specified provider name and options
* @param providerName Provider name
* @param options Service options
* @returns Created ChatService instance
*/
static createChatService(providerName, options) {
const provider = this.providers.get(providerName);
if (!provider) {
throw new Error(`Unknown chat provider: ${providerName}`);
}
return provider.createChatService(options);
}
/**
* Get registered providers
* @returns Provider map
*/
static getProviders() {
return this.providers;
}
/**
* Get array of available provider names
* @returns Array of provider names
*/
static getAvailableProviders() {
return Array.from(this.providers.keys());
}
/**
* Get models supported by the specified provider
* @param providerName Provider name
* @returns Array of supported models, empty array if provider doesn't exist
*/
static getSupportedModels(providerName) {
const provider = this.providers.get(providerName);
return provider ? provider.getSupportedModels() : [];
}
}
/** Map of registered providers */
ChatServiceFactory.providers = new Map();
// Register OpenAI as a provider
ChatServiceFactory.registerProvider(new OpenAIChatServiceProvider());
// Register Gemini as a provider
ChatServiceFactory.registerProvider(new GeminiChatServiceProvider());
// Register Claude as a provider
ChatServiceFactory.registerProvider(new ClaudeChatServiceProvider());
//# sourceMappingURL=ChatServiceFactory.js.map