const dotenv = require('dotenv'); // 加载环境变量 dotenv.config(); const llmConfig = { // API基础配置 baseURL: process.env.LLM_API_BASE_URL || 'https://api.openai.com/v1', apiKey: process.env.LLM_API_KEY || '', model: process.env.LLM_MODEL || 'gpt-3.5-turbo', // 请求配置 timeout: parseInt(process.env.LLM_TIMEOUT) || 30000, // 30秒超时 maxRetries: parseInt(process.env.LLM_MAX_RETRIES) || 3, retryDelay: parseInt(process.env.LLM_RETRY_DELAY) || 1000, // 1秒重试间隔 // 模型参数 defaultOptions: { temperature: parseFloat(process.env.LLM_TEMPERATURE) || 0.7, max_tokens: parseInt(process.env.LLM_MAX_TOKENS) || 2000, top_p: parseFloat(process.env.LLM_TOP_P) || 1, frequency_penalty: parseFloat(process.env.LLM_FREQUENCY_PENALTY) || 0, presence_penalty: parseFloat(process.env.LLM_PRESENCE_PENALTY) || 0, }, // 流式响应配置 stream: { enabled: process.env.LLM_STREAM_ENABLED === 'true', chunkSize: parseInt(process.env.LLM_STREAM_CHUNK_SIZE) || 1024 }, // 系统提示词 systemPrompt: process.env.LLM_SYSTEM_PROMPT || '你是一个有用、无害、诚实的AI助手。请用中文回答用户的问题。' }; // 验证必要的配置 function validateConfig() { const errors = []; if (!llmConfig.apiKey) { errors.push('LLM_API_KEY 环境变量未设置'); } if (!llmConfig.baseURL) { errors.push('LLM_API_BASE_URL 环境变量未设置'); } if (!llmConfig.model) { errors.push('LLM_MODEL 环境变量未设置'); } if (errors.length > 0) { console.warn('LLM配置警告:', errors.join(', ')); console.warn('请确保在 .env 文件中设置正确的环境变量'); } return errors.length === 0; } // 获取请求头 function getHeaders() { return { 'Authorization': `Bearer ${llmConfig.apiKey}`, 'Content-Type': 'application/json', 'User-Agent': 'LLM-Chat-Website/1.0.0' }; } module.exports = { llmConfig, validateConfig, getHeaders };