UNPKG

@nomyx/assistant

Version:

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

66 lines (60 loc) 2.13 kB
import { ILogger, AIProviderConfig } from '../types'; import { AIProviderFactory } from '../ai/AIProviderFactory'; export class ProviderInitializer { constructor(private logger: ILogger) {} initializeProvider(providerName?: string): AIProviderConfig { const providerType = providerName || process.env.AI_PROVIDER || 'openai'; let config: AIProviderConfig; 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; } }