import { HfInference } from "@huggingface/inference" import { getValidNumber } from "./getValidNumber.mts"; import { generateSeed } from "./generateSeed.mts"; const hf = new HfInference(process.env.VC_HF_API_TOKEN) export async function generateImage(options: { positivePrompt: string; negativePrompt: string; seed?: number; width?: number; height?: number; nbSteps?: number; }) { const positivePrompt = options?.positivePrompt || "" if (!positivePrompt) { throw new Error("missing prompt") } const negativePrompt = options?.negativePrompt || "" const seed = getValidNumber(options?.seed, 0, 2147483647, generateSeed()) const width = getValidNumber(options?.width, 256, 1024, 512) const height = getValidNumber(options?.height, 256, 1024, 512) const nbSteps = getValidNumber(options?.nbSteps, 5, 50, 25) const blob = await hf.textToImage({ inputs: [ positivePrompt, "bautiful", "award winning", "intricate details", "high resolution" ].filter(word => word) .join(", "), model: "stabilityai/stable-diffusion-2-1", parameters: { negative_prompt: [ negativePrompt, "blurry", // "artificial", // "cropped", "low quality", "ugly" ].filter(word => word) .join(", ") } }) const buffer = Buffer.from(await blob.arrayBuffer()) return buffer }