المتطلبات#
نود 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");
قبل الإنتاج#
قيّد التزامن وإعادة المحاولة، وتحقق من المخرجات، وتعامل مع الأخطاء قبل تعريض سير العمل للمستخدمين.