UNPKG

@thecodingwhale/cv-processor

Version:

CV Processor to extract structured data from PDF resumes using TypeScript

92 lines (91 loc) 3.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAIConfig = getAIConfig; exports.getDefaultModelForProvider = getDefaultModelForProvider; /** * Get AI configuration based on provider type and model * @param providerType The type of AI provider to use * @param aiModel Optional specific model to use * @returns AI configuration object */ function getAIConfig(providerType, aiModel) { // Get API key from environment variables const apiKeyEnvVar = providerType === 'aws' ? 'AWS_ACCESS_KEY_ID' : `${providerType.toUpperCase()}_API_KEY`; const apiKey = process.env[apiKeyEnvVar]; if (!apiKey) { console.error(`Error: API key not found in environment variables (${apiKeyEnvVar})`); console.error('Please set it in your .env file or environment'); process.exit(1); } // Configure AI model let aiConfig = { apiKey, model: aiModel || getDefaultModelForProvider(providerType), }; // Add Azure OpenAI specific configuration if (providerType === 'azure') { const endpoint = process.env.AZURE_OPENAI_ENDPOINT; if (!endpoint) { console.error('Error: AZURE_OPENAI_ENDPOINT not found in environment variables'); console.error('Please set it in your .env file or environment'); process.exit(1); } const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME; // Set sensible defaults for Azure OpenAI config aiConfig = { ...aiConfig, endpoint, apiVersion: process.env.AZURE_OPENAI_API_VERSION || '2024-04-01-preview', deploymentName, }; // For deployments like o3-mini that don't support temperature if (deploymentName && (deploymentName.includes('mini') || deploymentName.includes('o3'))) { console.log(`Using model-specific configuration for ${deploymentName}`); delete aiConfig.temperature; } } // Add AWS Bedrock specific configuration else if (providerType === 'aws') { // AWS credentials can come from environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY // or from the ~/.aws/credentials file const region = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION; // Check for inference profile ARN if (process.env.AWS_BEDROCK_INFERENCE_PROFILE_ARN) { console.log(`Using AWS Bedrock inference profile: ${process.env.AWS_BEDROCK_INFERENCE_PROFILE_ARN}`); } else if (aiModel && aiModel.includes('nova')) { console.warn('Warning: Nova models may require an inference profile ARN'); console.warn('Set AWS_BEDROCK_INFERENCE_PROFILE_ARN environment variable'); } // Set sensible defaults for AWS Bedrock config aiConfig = { apiKey, // Pass through the API key we already retrieved model: aiModel || getDefaultModelForProvider(providerType), region: region || 'us-east-1', }; console.log(`Using AWS Bedrock with model: ${aiConfig.model}`); } return aiConfig; } /** * Get the default model name for a given AI provider */ function getDefaultModelForProvider(provider) { switch (provider) { case 'gemini': return 'gemini-1.5-pro'; case 'openai': return 'gpt-4o'; case 'azure': return 'gpt-4o'; // Or the deployment name will be used case 'grok': return 'grok-2-vision-1212'; case 'aws': return 'apac.amazon.nova-lite-v1:0'; // May need inference profile ARN default: return 'gemini-1.5-pro'; } }