// should we really have default prompts in here? // I think they should probably be defined at the applicative software layer (ie. in the client) export function addWordsIfNotPartOfThePrompt(prompt: string = "", words: string[] = []): string { const promptWords = prompt.split(",").map(w => w.trim().toLocaleLowerCase()) return [ prompt, // we add our keywords, unless they are already part of the prompt ...words.filter(w => !promptWords.includes(w.toLocaleLowerCase())) ].join(", ") } export function getPositivePrompt(prompt: string, triggerWord = "") { return addWordsIfNotPartOfThePrompt(prompt, [ triggerWord, "crisp", "sharp", "beautiful", "4K", "hd" ]) } export function getNegativePrompt(prompt: string) { return addWordsIfNotPartOfThePrompt(prompt, [ "cropped", // "underexposed", // <-- can be a desired style // "overexposed", // <-- can be a desired style "logo", "censored", "watermark", "watermarked", "extra digit", "fewer digits", "bad fingers", "bad quality", "worst quality", "low quality", "low resolution", "glitch", // <-- keep or not? could be a desired style? "deformed", "mutated", "ugly", "disfigured", "3D render", // <-- keep or not? could be a desired style? "signature" ]) }