@nomyx/assistant
Version:
A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)
44 lines (43 loc) • 1.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AIProviderFactory = void 0;
class AIProviderFactory {
constructor(logger) {
this.logger = logger;
this.providerCache = new Map();
}
createProvider(config) {
const cacheKey = `${config.type}-${config.apiKey}`;
if (this.providerCache.has(cacheKey)) {
return this.providerCache.get(cacheKey);
}
let provider;
switch (config.type) {
case 'openai':
const { OpenAIProvider } = require('./providers/OpenAIProvider');
provider = new OpenAIProvider(config, this.logger);
break;
case 'anthropic':
const { AnthropicProvider } = require('./providers/AnthropicProvider');
provider = new AnthropicProvider(config, this.logger);
break;
case 'azure':
const { AzureProvider } = require('./providers/AzureProvider');
provider = new AzureProvider(config, this.logger);
break;
case 'vertex':
const { VertexProvider } = require('./providers/VertexProvider');
provider = new VertexProvider(config, this.logger);
break;
case 'openrouter':
const { OpenRouterProvider } = require('./providers/OpenRouterProvider');
provider = new OpenRouterProvider(config, this.logger);
break;
default:
throw new Error(`Unsupported AI provider type: ${config.type}`);
}
this.providerCache.set(cacheKey, provider);
return provider;
}
}
exports.AIProviderFactory = AIProviderFactory;