У цьому посібнику ви навчитеся, як скинути чат з OpenAI API без необхідності перезапуску сервера. Часто виникають ситуації, коли ви просто хочете забути попередню історію чату й почати спочатку. Це, зокрема, стосується ID чату, оскільки воно дозволяє скинути історію чату на сервері. Наступний посібник покаже вам, як реалізувати цю функцію.
Найважливіші відомості
- Для скидання чату ви можете згенерувати нове ID чату.
- ID чату створюється при перезавантаженні сторінки та передається на сервер.
- Сервер порівнює нове ID чату з поточним та скидає історію чату, якщо вони відрізняються.
Інструкція крок за кроком
Спершу у вас вже є працююче додаток чату, але є невелика проблема: ви не можете скинути історію чату. Для цього нам потрібно ввести ID, яке генерується кожного разу при перезавантаженні сторінки.
Це нове ID чату потрібно передати на ваш сервер. Коли сервер отримує нове ID, він може скинути історію чату. Це відбувається за допомогою простого порівняння: якщо нове ID чату відрізняється від поточного ID чату, список повідомлень скидається.
Щоб це реалізувати, вам потрібно впевнитися, що клієнт може згенерувати випадкове ID. Ви передаєте ID з параметром пошуку ID. Тож давайте глянемо на файл index.jsx вашого компонента React.
Ось у цьому файлі ви вже передали необхідне повідомлення (MSG). Тепер ви можете також передавати ID. Це можна зробити ефективно за допомогою шаблонних рядків, щоб легше вставляти змінні.
Тож перетворіть код на шаблонний рядок та вставте змінні відповідно. Ось як це може виглядати: MSG, це ваше поле введення, а ID дорівнює вашому новому ID.
Тепер вам потрібно подумати над тим, як генерувати ID. Простим способом є використання дати. Ви можете легко визначити константу, яка використовує поточний час в мілісекундах з 1970 року. Для цього ви можете використовувати Date.now() і перетворити цей час у рядок.
Тепер ми завжди надсилаємо нове ID під час перезавантаження сторінки. Це має працювати, як планувалося. Давайте перевіримо це і надішлемо повідомлення, щоб переконатися, що дані правильно надсилаються на сервер.
Якщо ви надішлете повідомлення «how are you», ви побачите на сервері, що там два повідомлення: одне від користувача і одне від асистента.
Але якщо ви надішлете інше питання, наприклад, «why does it not have feelings», історія повинна бути відновлена відповідно. Там повинні бути лише поточне питання та його відповідь.
Це означає, що коли ми перевіряємо ID, не повинно бути конфліктів, наприклад, коли нове ID чату співпадає з поточним ID чату, логіка повинна бути спрощена для правильної роботи.
Щоб переконатися, що все працює, проведіть тест ще раз. Перезавантажте сторінку та надішліть повідомлення знову. Тепер повинно бути збережено чотири повідомлення у масиві.
Масив показує загальну кількість повідомлень, які були відправлені, що означає, що історію було правильно скинуто. Однак це відбувається лише при перезавантаженні сторінки. Альтернативно, ви можете також реалізувати кнопку, яка спрацьовує скидання чату, але наші потреби спочатку варто обмежитися лише перезавантаженням сторінки.
Проте зауважте, що поле введення не очищається автоматично після надсилання повідомлення. Також повна історія чатів поки не доступна, що означає, що ви можете бачити лише останнє запитання та відповідь. Це також буде вирішено у майбутніх підручниках.
Підсумок
У цьому посібнику ви дізналися, як ви можете реалізувати функцію скидання історії чату у вашому додатку для чату. Шляхом введення нового ідентифікатора чату при перезавантаженні сторінки історію успішно скинули. Є ще кілька вдосконалень, які ми реалізуємо у наступних етапах, такі як очищення поля введення та повний перегляд історії чату.
Часто запитувані питання
Як я можу скинути чат?Чатова історія скидається при перезавантаженні сторінки.
Як генерується новий ідентифікатор?Новий ідентифікатор генерується на основі поточного часу у мілісекундах.
Чи можна скинути чат без перезавантаження сторінки?Так, ви можете також реалізувати кнопку, яка скине чат.
Що станеться, якщо ідентифікатори однакові?Якщо новий ідентифікатор співпадає з поточним, історія не буде скинута.
Чи потрібно вручну очистити поле введення?Так, в даний момент поле введення не очищається автоматично після надсилання повідомлення.