const { OpenAI } = require('openai'); const { GoogleGenerativeAI } = require('@google/generative-ai'); require('dotenv').config({ path: require('path').resolve(__dirname, '../.env') }); const groq = new OpenAI({ baseURL: "https://api.groq.com/openai/v1", apiKey: process.env.GROQ_API_KEY || "dummy", }); const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY || "dummy"); // Define advisors (Updated to user preference) const MODELS = [ 'openai/gpt-oss-120b', 'llama-3.3-70b-versatile', 'qwen/qwen3-32b', 'gemini-2.5-flash' ]; async function callGroq(model, systemPrompt, userMessage) { try { const response = await groq.chat.completions.create({ model: model, messages: [ { role: "system", content: systemPrompt }, { role: "user", content: userMessage } ], temperature: 0.7, max_tokens: 250, }); return response.choices[0].message.content; } catch (error) { console.error(`Error calling Groq for model ${model}:`, error.message); return `[Model ${model} offline or encountered an error. Error: ${error.message}]`; } } async function callGeminiDebater(modelString, systemPrompt, userMessage) { try { const model = genAI.getGenerativeModel({ model: modelString, generationConfig: { temperature: 0.7 }}); const result = await model.generateContent(`${systemPrompt}\n\n${userMessage}`); return result.response.text(); } catch (error) { console.error(`Error calling Gemini Debater ${modelString}:`, error.message); return `[Model ${modelString} offline or encountered an error. Error: ${error.message}]`; } } async function callArchitect(systemPrompt, transcript) { if (!process.env.GEMINI_API_KEY || process.env.GEMINI_API_KEY === "dummy") { return "[System Error: No valid Gemini API Key found in .env. Please add it to see the Architect's verdict.]"; } try { const model = genAI.getGenerativeModel({ model: "gemma-4-31b-it", generationConfig: { temperature: 0.5 }}); const result = await model.generateContent(`${systemPrompt}\n\nTranscript of Debate:\n${transcript}`); return result.response.text(); } catch (error) { console.error("Error calling Architect:", error.message); return `[Architect encountered an error. Error: ${error.message}]`; } } module.exports = { MODELS, callGroq, callGeminiDebater, callArchitect };