weightsapi.ВИСНОВОККонсоль
Навігація
Потокова передача в браузер

Потокова передача в браузер

Node-сервер того самого походження зберігає ключ API та пересилає SSE.

Вимоги#

Node 22 або новіше. Встановіть WEIGHTSAPI_API_KEY на ваш власний ключ. Доступ до ШІ вимагає входу, одного підтвердженого поповнення на суму не менше 100 доларів США, авторизованого ключа API та достатнього доступного кредиту для запиту. Кожне наступне поповнення також має мінімум 100 доларів США; менші залишки залишаються придатними, якщо вони покривають запит. Кредит вимагає перевірки транзакції. Перевірте статус сервісу щодо доступності моделей перед надсиланням трафіку.

Запуск рецепта#

// Node 22+. Save as server.mjs, set WEIGHTSAPI_API_KEY, then node server.mjs.
import http from "node:http";
const base = process.env.WEIGHTSAPI_BASE_URL || "https://weightsapi.com/v1";
http.createServer(async (req, res) => {
  if (req.url !== "/stream") {
    res.setHeader("Content-Type", "text/html");
    return res.end('<button id="run">Run</button><pre id="out"></pre><script>run.onclick=async()=>{out.textContent="";const r=await fetch("/stream");const reader=r.body.getReader();const decoder=new TextDecoder();for(;;){const {value,done}=await reader.read();if(done)break;out.textContent+=decoder.decode(value,{stream:true});}}<\/script>');
  }
  try {
    const upstream = await fetch(base+"/chat/completions", {method:"POST",
      headers:{"Content-Type":"application/json",Authorization:"Bearer "+process.env.WEIGHTSAPI_API_KEY},
      body:JSON.stringify({model:"Qwen/Qwen3-32B",messages:[{role:"user",content:"Explain SSE."}],stream:true,max_tokens:256})});
    res.writeHead(upstream.status, {"Content-Type":upstream.headers.get("content-type")||"text/plain","Cache-Control":"no-store"});
    for await (const chunk of upstream.body) res.write(chunk);
    res.end();
  } catch {res.writeHead(502);res.end("Upstream unavailable");}
}).listen(8080,"127.0.0.1");

Перед запуском у виробництво#

Обмежте паралельність і повторні спроби, перевіряйте вихідні дані та обробляйте помилки, перш ніж показувати робочий процес користувачам.