Spaces:
Sleeping
Sleeping
import '@std/dotenv/load'; | |
import { createOpenAICompatible } from '@ai-sdk/openai-compatible'; | |
import { generateText, wrapLanguageModel } from 'ai'; | |
import { extractWeirdReasoningMiddleware } from './extract-weird-reasoning-middleware.ts'; | |
import { imagePromptGeneratorPrompt, systemPrompt } from './prompt.ts'; | |
const HF_ENDPOINT = Deno.env.get('TEST_URL') || 'https://api-inference.huggingface.co'; | |
type ImageGenerationParams = { | |
inputs: string; | |
parameters?: { | |
guidance_scale?: number; | |
negative_prompt?: string; | |
num_inference_steps?: number; | |
width?: number; | |
height?: number; | |
scheduler?: string; | |
seed?: number; | |
}; | |
}; | |
export const huggingface = createOpenAICompatible({ | |
baseURL: `${HF_ENDPOINT}/v1`, | |
name: 'huggingface', | |
}); | |
// export const model = wrapLanguageModel({ | |
// model: huggingface('deepseek-ai/DeepSeek-R1-Distill-Qwen-32B'), | |
// middleware: extractWeirdReasoningMiddleware({ tagName: 'think', onlyClosingTag: true }), | |
// }); | |
export const model = huggingface('meta-llama/Llama-3.2-11B-Vision-Instruct'); | |
export async function generatePrompt(prompt: string, systemPrompt: string) { | |
const { text } = await generateText({ | |
model, | |
system: systemPrompt, | |
prompt, | |
maxRetries: 3, | |
maxTokens: 1024, | |
}); | |
return text; | |
} | |
export async function generateImage(model: 'black-forest-labs/FLUX.1-dev' | 'black-forest-labs/FLUX.1-schnell' | 'stabilityai/stable-diffusion-3.5-large', params: ImageGenerationParams) { | |
const res = await fetch(`${HF_ENDPOINT}/models/${model}`, { | |
method: 'POST', | |
headers: { | |
'x-use-cache': 'false', | |
}, | |
body: JSON.stringify(params), | |
}); | |
if (!res.ok) throw new Error(`Failed to generate image ${res.statusText} ${res.status}`); | |
return await res.arrayBuffer(); | |
} | |
if (import.meta.main) { | |
const prompt = await generatePrompt(imagePromptGeneratorPrompt, systemPrompt); | |
console.log(prompt.replaceAll('\n', ' ')); | |
} | |