قابلیت استریم


رابط‌های متنی محاوره‌ای استریمی، مانند ChatGPT، طی ماه‌های اخیر محبوبیت زیادی داشته‌اند این بخش، مزایا و معایب رابط‌های کاربری استریمی و قطعه‌ای (blocking) را بررسی خواهد کرد.

مدل‌های زبانی بزرگ (LLMها)، از قدرت بسیار بالایی برخوردارند. با این حال، هنگام تولید خروجی‌های طولانی، ممکن است حتی نسبت به تاخیر رایجی که کاربران به آن عادت دارند، بسیار کندتر، عمل کنند. اگر قصد دارید که یک رابط کاربری سنتی و قطعه‌ای طراحی کنید، ممکن است کاربران شما ناچاراً، برای دریافت کل پاسخ تولید شده توسط LLM، تا ۴۰ ثانیه هم حتی منتظر بمانند و در این حین، به صفحه بارگذاری، خیره شوند. این موضوع، می‌تواند تجربه کاربری (UX) ضعیفی را رقم بزند؛ مخصوصاً در برنامه‌های محاوره‌ای مثل چت‌بات‌ها.

رابط‌های کاربری استریمی (Streaming UIها)، می‌توانند با نمایش تدریجی بخش به بخش پاسخ در حین تولید، تا حدودی این مشکل را کاهش دهند.

پاسخ قطعه‌ای چیست؟

پاسخ‌های قطعه‌ای، قبل از نمایش، منتظر می‌مانند تا تمام پاسخ در دسترس قرار بگیرد.

پاسخ استریمی چیست؟

پاسخ‌های استریمی (در جریان) می‌توانند بخش‌هایی از پاسخ را، به محض در دسترس قرار گرفتن، نمایش دهند.

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

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

با این حال، صرف‌نظر از سرعت مدل شما، AI SDK به‌گونه‌ای طراحی شده است که پیاده‌سازی رابط‌های استریمی را تا حد امکان ساده کند. شما می‌توانید مانند قطعه کد زیر و با استفاده از streamText، پاسخ‌های استریمی، تولید کنید:

کپی
import { streamText } from 'ai';
import { createOpenAI } from '@ai-sdk/openai';


const model = createOpenAI({
  baseURL: "<baseUrl>",
  apiKey: "<LIARA_API_KEY>",
});

const { textStream } = streamText({
  model: model('<model_name>'),
  prompt: 'Who is John Wick?',

});

for await (const textPart of textStream) {
  console.log(textPart);
}

در قطعه کد‌ فوق، به‌جای <baseUrl>، آدرس سرویس هوش مصنوعی خود را قرار دهید و به‌جای <LIARA_API_KEY>، کلید API خود را وارد کنید. همچنین، به‌جای <model_name>، نام یکی از مدل‌های خود را قرار دهید.