رفتن به محتوای اصلی
ساینوساینوساینو
قیمت‌گذاریمستنداتوضعیتدرباره ما
ورودشروع کنید
ساینوساینو

ایده‌های خوب
به یک اتصال عالی نیاز دارند.

نماد اعتماد الکترونیکی
دروازه پرداخت معتبر زرینپال
نشان اعتباری ایمالز

پلتفرم

قیمت‌گذاریخرید اعتبارمحیط آزمایشوضعیت سرویس

منابع

مستنداتوبلاگاخبارارتباط با ما

شرکت

درباره ساینوحریم خصوصیشرایط استفاده
© 2026 Cynoبرای ایده‌های فردا ساخته شده.
ساینو/وبلاگ/مهندسی
مهندسیمنتشر شده ۱ آبان ۱۴۰۵به‌روزرسانی ۱ آبان ۱۴۰۵۲ دقیقه مطالعه

پاسخ جریانی؛ از اولین توکن تا تجربه بهتر

جریان داده، سرعت کل پاسخ را بیشتر نمی‌کند؛ فقط کاربر زودتر بخشی از نتیجه را می‌بیند. برای اینکه این مزیت واقعاً به تجربه بهتر تبدیل شود، باید حالت‌های انتظار، قطع اتصال و لغو را هم طراحی کنید.

  • استریم
  • تجربه کاربری
  • خطا
نمودار رسیدن تدریجی بخش‌های پاسخاولین توکنانتظار → جریان دادهقطع ناگهانی
در این نوشته
  1. انتظار را قابل فهم کنید
  2. قطع جریان را پایان موفق ندانید
  3. لغو را تا سرور منتقل کنید
  4. جریان را قابل‌اعتماد رندر کنید

خلاصه کاربردی

  • پیش از اولین توکن، وضعیت واضحی نشان دهید.
  • پایان ناگهانی جریان را با خطای شبکه اشتباه نگیرید.
  • دکمه توقف باید درخواست را در سرور هم لغو کند.

انتظار را قابل فهم کنید

پیش از رسیدن اولین بخش پاسخ، وضعیت انتظار را نشان دهید. بعد از دریافت داده، متن را تدریجی نمایش دهید. جریان داده لزوماً سرعت تولید کل پاسخ را بیشتر نمی‌کند، اما کاربر زودتر بخشی از نتیجه را می‌بیند.

اولین توکن معمولاً دیرتر از بقیه می‌رسد؛ چون مدل باید ورودی را پردازش کند. اگر در این بازه هیچ بازخوردی نشان ندهید، کاربر فکر می‌کند چیزی خراب شده. یک نشانگر ساده که «در حال دریافت پاسخ» را نمایش دهد، کافی است.

قطع جریان را پایان موفق ندانید

اگر اتصال قطع شد، متن ناقص را مشخص کنید. پایان عادی و خطای شبکه باید وضعیت‌های متفاوتی داشته باشند. تلاش دوباره پس از نمایش بخشی از متن ممکن است خروجی تکراری بسازد؛ از کاربر بخواهید آگاهانه ادامه دهد یا دوباره تلاش کند.

  • پایان موفق: جریان با پیام پایانی سرویس بسته شده است.
  • قطع ناگهانی: اتصال بدون پیام پایانی بسته شده؛ متن ناقص است.
  • خطای سرویس: سرویس پیام خطا فرستاده؛ متن قبلی معتبر است اما ناقص.
ادامه دادن همیشه امن نیست

وقتی جریان نیمه‌کاره قطع می‌شود، ادامه دادن از طول فعلی متن ممکن است جمله را خراب کند. گاهی بهترین کار این است که کاربر بین «ادامه بده» و «از نو بساز» انتخاب کند.

لغو را تا سرور منتقل کنید

دکمه توقف باید درخواست فعال را لغو کند، نه اینکه فقط نمایش متن را متوقف کند. لغو در مرورگر به‌تنهایی تضمین نمی‌کند پردازش بالادست یا هزینه متوقف شده باشد؛ رفتار مسیر سرور را هم بررسی کنید.

لغو با AbortControllerjavascript
const controller = new AbortController();
const response = await fetch("/api/chat", {
  method: "POST",
  signal: controller.signal,
  body: JSON.stringify({ messages }),
});
// دکمه توقف:
controller.abort();

وقتی درخواستی لغو شد، حالت رابط را هم به‌روزرسانی کنید. متن دریافت‌شده را نگه دارید و بعد از آن برچسب «متوقف شد» بگذارید تا کاربر بداند پاسخ کامل نیست.

جریان را قابل‌اعتماد رندر کنید

قطعه‌های جریان ممکن است وسط یک کلمه یا حتی وسط یک بخش ساختاری برسند. تغییرات رابط را بر اساس متن کاملِ تا این لحظه بسازید، نه بر اساس هر قطعه جداگانه. این کار از پرش‌های بصری و رندر ناقص کد جلوگیری می‌کند.

برای پاسخ‌های طولانی، در طول جریان اسکرول خودکار را فقط وقتی فعال کنید که کاربر پایین صفحه است. اگر کاربر به بالای متن رفته تا بخشی را بخواند، اسکرول خودکار آن را از او می‌گیرد.

پرسش‌های متداول

آیا استریم هزینه را تغییر می‌دهد؟

برای یک مدل و مسیر با تعرفه یکسان، استریم به‌خودی‌خود به معنی تخفیف یا هزینه اضافه نیست؛ مصرف ثبت‌شده و قواعد صورتحساب تعیین‌کننده‌اند. قطع اتصال یا زدن دکمه توقف تضمین نمی‌کند پردازش بالادست و هزینه فوراً متوقف شود. مصرف نهایی را در گزارش سرویس بررسی کنید.

آیا باید همیشه از استریم استفاده کنم؟

برای پاسخ‌های کوتاه و پردازش دسته‌ای لازم نیست. برای پاسخ‌های طولانی و رابط تعاملی، استریم تجربه بهتری می‌دهد، به شرطی که حالت‌های قطع و لغو را پوشش داده باشید.

منابع و ادامه مطالعه

  • خطاها و تلاش مجدد
  • شروع سریع

راهنماهای مرتبط

همه راهنماها
نمودار تلاش‌های محدود با فاصله افزایشیتلاش ۱۵۰۰msتلاش ۲۱sتلاش ۳۲sتوقفمهلت کل عملیات۲۰ ثانیهحداکثر ۳ تلاش
مهندسی

وقتی درخواست خطا می‌دهد، چند بار تلاش کنیم؟

نمودار مسیر درخواست از برنامه به درگاه و انتخاب مدلبرنامهدرخواستدرگاهcyno.irمدل ارزانکار سادهمدل میانهمدل قویکار دشوار
راهنمای عملی

خرید API هوش مصنوعی با پرداخت تومانی؛ چک‌لیست قبل از خرید

همه راهنماها مقایسه تعرفه‌ها