پاسخ جریانی
با stream: true پاسخ بهصورت جریانی (SSE) میآید و میتوانید همان لحظه آن را نمایش دهید.
درخواست
curl https://gethooshana.ir/v1/chat/completions \
-H "Authorization: Bearer YOUR_HOOSHANA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"hoshana-auto","stream":true,"messages":[{"role":"user","content":"سلام"}]}'
قالب پاسخ
سه رویداد پشت سر هم میآید:
- یک رویداد
data:باdeltaکه شامل متن پاسخ است - یک رویداد با
finish_reasonبرابرstopبههمراهusage - رویداد پایانی
data: [DONE]
خواندن جریان در جاوااسکریپت
const response = await fetch("https://gethooshana.ir/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_HOOSHANA_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "hoshana-auto",
stream: true,
messages: [{ role: "user", content: "سلام" }],
}),
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
for (const line of decoder.decode(value).split("\n")) {
if (!line.startsWith("data: ")) continue;
const payload = line.slice(6);
if (payload === "[DONE]") break;
const chunk = JSON.parse(payload);
process.stdout.write(chunk.choices[0].delta.content ?? "");
}
}
اگر جریان قطع شد
اگر ارتباط وسط کار قطع شود، رویداد [DONE] نمیرسد. در آن حالت درخواست را دوباره بفرستید؛ سهمیه درخواستهای ناموفق برگردانده نمیشود و ممکن است یک واحد دیگر مصرف شود.
محدودیتهای ورودی در صفحه API آمده است: حداکثر ۱۰۰ پیام و ۸۰۰۰ کاراکتر.