چت همهٔ آن چیزی است که میان کاربران شما و مدل قرار میگیرد. یک NuiChatSession با تابع respond بسازید تا <nui-chat> بقیهٔ کار را انجام دهد: پاسخ را بهصورت Markdown استریم میکند، تا وقتی خواننده به بالا اسکرول نکرده همراهش در صفحه پایین میرود و تا رسیدن پاسخ، دکمهٔ ارسال را به دکمهٔ توقف تبدیل میکند.
respond متن، یک promise، یک async function* یا یک Observable برمیگرداند؛ پس با هر API سازگار است. پاسخ علاوه بر متن میتواند استدلال مدل، فراخوانیهای ابزار (که قالبهای خودتان رسمشان میکنند) و منابع استفادهشده را هم در خود داشته باشد. nuiEventStream رویدادهای server-sent را میخواند که بیشتر APIهای مدل استریم میکنند.
هیچ چیز از دست نمیرود: پاسخی که دوباره تولید شود یا پرسشی که ویرایش شود، به نسخهای تازه کنار نسخهٔ قبلی تبدیل میشود و گفتگو همهٔ شاخهها را نگه میدارد. صفحهخوانها هر پاسخ را پس از کامل شدن میخوانند، نه کلمهبهکلمه.
یک دستیار
پیشنهادها گفتگو را شروع میکنند. پاسخها بهصورت Markdown استریم میشوند؛ متوقفشان کنید، دوباره تولیدشان کنید، امتیاز دهید یا پرسشتان را ویرایش کنید. attach فایلهای انتخابشده، چسباندهشده یا رهاشده را میپذیرد.
استدلال، ابزارها و منابع
دلتاها استدلال مدل، فراخوانیهای ابزار و منابع را به پاسخ اضافه میکنند. nuiChatTool ابزار آبوهوا را به شکل کارت رسم میکند؛ ابزارهای دیگر با ورودی و خروجیشان جمعشده نمایش داده میشوند.
استریم از سرور
nuiEventStream یک استریم رویداد به سبک OpenAI را میخواند و NuiChatError پیام خود را نشان میدهد. all() گفتگو را با همهٔ نسخههایش ذخیره میکند.