Files
reason-flow/server/config/groq.js
T

84 lines
2.1 KiB
JavaScript
Raw Normal View History

2025-11-06 11:08:59 +01:00
const logger = require('../utils/logger');
const groqConfig = {
// API Configuration
apiKey: process.env.GROQ_API_KEY,
model: process.env.GROQ_MODEL || 'moonshotai/kimi-k2-instruct-0905',
baseURL: process.env.GROQ_BASE_URL || 'https://api.groq.com',
// Model-specific configurations
models: {
MODEL1: {
model: 'moonshotai/kimi-k2-instruct-0905',
temperature: 0.3,
maxTokens: 300,
topP: 0.9,
systemPrompt: `You are MODEL1, an expert engineering reasoning system. Your primary function is to analyze complex engineering problems and create detailed, step-by-step plans to solve them.`
},
QUERYMODEL: {
model: 'moonshotai/kimi-k2-instruct-0905',
temperature: 0.5,
maxTokens: 400,
topP: 0.9,
systemPrompt: `You are QUERYMODEL, an expert engineering execution system. Your primary function is to execute engineering plans using various tools and resources.`
}
},
// Rate limiting
rateLimit: {
requestsPerMinute: 60,
requestsPerHour: 1000,
burstLimit: 10
},
// Retry configuration
retry: {
maxRetries: 3,
retryDelay: 1000,
backoffMultiplier: 2
},
// Timeout configuration
timeout: {
request: 30000, // 30 seconds
connection: 10000 // 10 seconds
},
// Logging configuration
logging: {
logRequests: process.env.NODE_ENV === 'development',
logResponses: process.env.NODE_ENV === 'development',
logErrors: true
}
};
const validateConfig = () => {
const errors = [];
if (!groqConfig.apiKey) {
errors.push('GROQ_API_KEY is required');
}
if (!groqConfig.model) {
errors.push('GROQ_MODEL is required');
}
if (errors.length > 0) {
logger.error('Groq configuration errors:', errors);
throw new Error(`Groq configuration invalid: ${errors.join(', ')}`);
}
logger.info('Groq configuration validated successfully');
return true;
};
const getModelConfig = (modelType) => {
return groqConfig.models[modelType] || groqConfig.models.MODEL1;
};
module.exports = {
groqConfig,
validateConfig,
getModelConfig
};