import OpenAI from 'openai';
import { OPENAI_API_KEY } from '$env/static/private';

const openai = new OpenAI({
  apiKey: OPENAI_API_KEY,
});

function processChatGptResult(resultString: string) {
  // Split the string by newline
  const lines: string[] = resultString.split('\n');

  // Remove enumeration at the beginning of each line
  const processedLines: string[] = lines.map(line => line.replace(/^\s*[\d.-]+\s*/, ''));

  return processedLines.filter(line => line.length > 0);
}

export async function chat(prompt: string, { isList, temperature }: { isList?: boolean, temperature?: number } = {}) {

  const chatCompletion = await openai.chat.completions.create({
    model: "gpt-4",
    temperature: temperature ?? 0.9,
    messages: [
      {
        "role": "system",
        "content": prompt,
      },
    ],
  });

  const res = chatCompletion.choices[0].message.content;

  if (res && isList) return processChatGptResult(res);

  return res;
}

export function image(prompt: string) {
  return openai.images.generate({ model: "dall-e-3", prompt });
}
