@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
text/typescript
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;
}
}