const { OpenAI } = require("openai"); require("dotenv").config({ path: require("os").homedir() + "/.config/fabric/.env", }); let openaiClient = null; // Function to initialize and get the OpenAI client function getOpenAIClient() { if (!process.env.OPENAI_API_KEY) { throw new Error( "The OPENAI_API_KEY environment variable is missing or empty." ); } return new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); } async function queryOpenAI(system, user, callback) { const openai = getOpenAIClient(); // Ensure the client is initialized here const messages = [ { role: "system", content: system }, { role: "user", content: user }, ]; try { const stream = await openai.chat.completions.create({ model: "gpt-4-1106-preview", // Adjust the model as necessary. messages: messages, temperature: 0.0, top_p: 1, frequency_penalty: 0.1, presence_penalty: 0.1, stream: true, }); for await (const chunk of stream) { const message = chunk.choices[0]?.delta?.content || ""; callback(message); // Process each chunk of data } } catch (error) { console.error("Error querying OpenAI:", error); callback("Error querying OpenAI. Please try again."); } } module.exports = { queryOpenAI };