Spaces:
Running
Running
| import { env, pipeline } from "@huggingface/transformers"; | |
| import "./style.css"; | |
| const MODEL_ID = "Reza2kn/MiniCPM5-1B-ONNX-Web"; | |
| const output = document.querySelector("#output"); | |
| const run = document.querySelector("#run"); | |
| const prompt = document.querySelector("#prompt"); | |
| const maxTokens = document.querySelector("#maxTokens"); | |
| const temperature = document.querySelector("#temperature"); | |
| const backend = document.querySelector("#backend"); | |
| env.allowLocalModels = false; | |
| env.backends.onnx.wasm.numThreads = Math.min(4, navigator.hardwareConcurrency || 4); | |
| let generatorPromise = null; | |
| function setStatus(text) { | |
| output.textContent = text; | |
| } | |
| async function getGenerator() { | |
| if (!generatorPromise) { | |
| setStatus(`Loading ${MODEL_ID} with ${backend.value}...`); | |
| generatorPromise = pipeline("text-generation", MODEL_ID, { | |
| device: backend.value, | |
| dtype: "q4", | |
| }); | |
| } | |
| return generatorPromise; | |
| } | |
| backend.addEventListener("change", () => { | |
| generatorPromise = null; | |
| setStatus("Backend changed. Run again to reload."); | |
| }); | |
| run.addEventListener("click", async () => { | |
| run.disabled = true; | |
| try { | |
| const generator = await getGenerator(); | |
| setStatus("Generating..."); | |
| const result = await generator(prompt.value, { | |
| max_new_tokens: Number(maxTokens.value), | |
| temperature: Number(temperature.value), | |
| do_sample: Number(temperature.value) > 0, | |
| }); | |
| setStatus(result?.[0]?.generated_text ?? JSON.stringify(result, null, 2)); | |
| } catch (error) { | |
| setStatus(error.stack || error.message || String(error)); | |
| } finally { | |
| run.disabled = false; | |
| } | |
| }); | |
| setStatus("Ready. Upload the ONNX-Web artifact, then run."); | |