UNPKG

@nomyx/assistant

Version:

A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)

65 lines (64 loc) 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProviderInitializer = void 0; class ProviderInitializer { constructor(logger) { this.logger = logger; } initializeProvider(providerName) { const providerType = providerName || process.env.AI_PROVIDER || 'openai'; let config; switch (providerType.toLowerCase()) { case 'openai': config = { type: providerType, apiKey: process.env.OPENAI_API_KEY || '', model: process.env.OPENAI_API_MODEL || 'gpt-4' }; break; case 'anthropic': config = { type: providerType, apiKey: process.env.ANTHROPIC_API_KEY || '', model: process.env.ANTHROPIC_MODEL || '' }; break; case 'google': config = { type: providerType, apiKey: process.env.GOOGLE_API_KEY || '', model: process.env.GOOGLE_GEMINI_MODEL || '' }; break; case 'openrouter': config = { type: providerType, apiKey: process.env.OPENROUTER_API_KEY || '', model: process.env.OPENROUTER_MODEL || '', httpReferer: process.env.OPENROUTER_HTTP_REFERER, xTitle: process.env.OPENROUTER_X_TITLE }; break; case 'azure': config = { type: providerType, apiKey: process.env.AZURE_OPENAI_API_KEY || '', endpoint: process.env.AZURE_OPENAI_ENDPOINT || '', deployment: process.env.AZURE_OPENAI_DEPLOYMENT_NAME || '', subscriptionId: process.env.AZURE_SUBSCRIPTION_ID || '' }; break; default: throw new Error(`Unsupported AI provider: ${providerType}`); } if (!config.apiKey) { throw new Error(`API key not found for provider: ${providerType}`); } if (providerType !== 'azure' && !config.model) { throw new Error(`Model not specified for provider: ${providerType}`); } this.logger.info(`Initialized provider config for ${providerType}`); return config; } } exports.ProviderInitializer = ProviderInitializer;