llm-chat/backend/config/llm.js

73 lines
2.0 KiB
JavaScript

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
};