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." ); } if(!openAIClient){ openAIClient = new OpenAI({apiKey: process.env.OPENAI_API_KEY}); } return openAIClient } 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};