اگر در حال ساخت یک اپلیکیشن محلی با هوش مصنوعی هستید، نباید کاربرتان ۸ ثانیه به یک صفحه سفید خیره شود تا ناگهان کوهی از متن ظاهر شود. یک رابط کاربری استریمشده، مدل زبانی محلی شما را از یک API کند به یک دستیار طبیعی تبدیل میکند.
بسیاری از برنامهنویسان بهطور پیشفرض از یک فراخوان ساده fetch استفاده میکنند که باعث ایجاد تجربهای تکاندهنده و قطعشده برای کاربر میشود. طبق گزارش dev.to در ۱۸ آوریل ۲۰۲۶، استفاده از رویدادهای ارسالی سرور (SSE) — که شبیه به یک پخش رادیویی یکطرفه از سرور به کاربر است — این مشکل را حل میکند. SSE از HTTP ساده استفاده میکند و برخلاف WebSocket، نیازی به دستاندازی (Handshake) پیچیده ندارد.
همانطور که در تحلیل قبلی ما دربارهی بهینهسازی رابط کاربری برای مدلهای زبانی اشاره کردیم، کاهش زمان پاسخ اولیه (TTFT) کلید رضایت کاربر است. در این پیادهسازی از Next.js 15 App Router و ابزار Ollama برای اجرای مدل qwen2.5:7b استفاده شده است. در این ساختار، مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن جواب میدهد — باید در سه لایه مدیریت شود: یک هندلر در مسیر سرور، یک هوک در سمت کلاینت و یک لایه رابط کاربری.
بر اساس مستندات فنی این روش، رعایت نکات زیر حیاتی است:
- فعال کردن پرچم
stream: trueدر درخواست Ollama برای ارسال توکن به توکن. - افزودن هدر
X-Accel-Buffering: noبرای جلوگیری از بافر شدن پاسخ توسط Nginx یا CDNها. - کل منطق کدنویسی در قالب حدود ۱۵۰ خط TypeScript قرار میگیرد.
این تغییر، نگاه ما به هوش مصنوعی محلی را عوض میکند. حس کاربر از «آیا برنامه هنگ کرده؟» به «مدل دارد فکر میکند» تغییر مییابد. برای یک توسعهدهنده، این یعنی استقرار مدلهای محلی در سطح تولید (Production) بدون نیاز به زیرساختهای سنگین WebSocket، اکنون یک واقعیت است.
گام بعدی شما
- برای انتقال این کد به محیط تولید، لایههای احراز هویت و تاریخچه گفتگو را اضافه کنید.
- حتماً از
AbortControllerاستفاده کنید تا در صورت خروج کاربر از صفحه، استریم متوقف شود. - مدلهای کوچکتر را برای کاهش هزینه استنتاج در محیطهای لبه آزمایش کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو