В това ръководство ще научите как да рестартирате чат с OpenAI API, без да трябва да рестартирате сървъра. Често се случват ситуации, в които искате просто да забравите предходния чат и да започнете отначало. В тези случаи Chat-ID играе централна роля, защото позволява да се нулира историята на чата от сървъра. Следващото учебно ръководство ще ви покаже как да имплементирате тази функционалност.
Най-важни изводи
- За да нулирате чата, може да генерирате нов Chat-ID.
- Chat-ID се създава при презареждане на страницата и се подава на сървъра.
- Сървърът сравнява новия Chat-ID с текущия и нулира историята на чата, ако са различни.
Стъпка по стъпка
Първоначално вече имате работещо приложение за чат, но има една малка проблем: все още не можете да нулирате историята на чата. За да го направим възможно, трябва да въведем идентификационен номер, който се генерира всяко ново зареждане на страницата.
След това трябва да предадете този нов Chat-ID на вашия сървър. Когато сървърът получи нов идентификационен номер, той може да нулира историята на чата. Това става чрез просто сравнение: ако новият Chat-ID не съответства на текущия Chat-ID, списъкът със съобщенията се нулира.
За да го имплементирате, трябва да се уверите, че клиентът е способен да генерира случаен идентификационен номер. Ще предадете идентификационния номер чрез параметър ID за търсене. Затова нека погледнем във файлът index.jsx на React компонентата си.
Тук в този файл вече сте предали необходимото съобщение (MSG). Сега може също така да предадете и идентификационния номер. Това може да стане ефективно чрез шаблонни низове, което прави по-лесно вмъкването на променливи.
Затова преобразете кода в шаблонен низ и подменете променливите съответно. Това може да изглежда по следния начин: MSG, това е вашето поле за въвеждане, а идентификационния номер е равен на вашия нов идентификационен номер.
Сега трябва да мислите за генерирането на идентификационния номер. Едно просто решение е да използвате датата. Просто може да дефинирате константа, която използва текущото време в милисекунди от 1970 година. Можете да използвате Date.now() и след това да преобразите това време в низ.
Сега при презареждане на страницата винаги ще изпращаме нов идентификационен номер. Това трябва да работи както е желано. Нека го тестваме и да изпратим съобщение, за да видим дали данните се предават правилно на сървъра.
Когато изпратите съобщението "how are you", ще видите на сървъра, че има две съобщения: едното е на потребителя, а другото е на асистента.
Ако изпратите друг въпрос като "защо няма чувства", историята трябва да бъде нулирана съответно. Само текущият въпрос и неговият отговор трябва да бъдат там.
Това означава, че когато проверите идентификационните номера - не трябва да има конфликти, например новият Chat-ID да е същият като текущият Chat-ID - логиката трябва да бъде съпоставена така, че да се изпълни правилно.
За да се уверите, че това работи, повторете теста. Презаредете страницата и изпратете още едно съобщение. Сега трябва да има четири съобщения запазени в масива.
Масивът показва общия брой изпратени съобщения, което означава, че историята е нулирана успешно. Това се случва обаче само когато презаредите страницата. Можете също да добавите бутон, който да извиква нулирането на чата, но за нашите цели, презареждането на страницата е достатъчно.
Въпреки това имайте предвид, че полето за въвеждане не се изчиства автоматично след изпращане на съобщение. Също така, пълната история на чата все още не е видима, което означава, че винаги виждате само последния въпрос и отговор. Това също ще разгледаме в бъдещи ръководства.
Резюме
В това ръководство научихте как да реализирате функцията за нулиране на чат историята във вашето чат приложение. Чрез въвеждане на нов идентификатор на чата при презареждане на страницата, историята беше успешно нулирана. В бъдещите стъпки ще извършим някои подобрения, като изчистване на полето за въвеждане и пълното показване на чат историята.
Често задавани въпроси
Как мога да нулирам чата?Като презаредите страницата, чат историята ще бъде нулирана.
Как се генерира новият идентификатор?Новият идентификатор се генерира от текущото време в милисекунди.
Мога ли да нулирам чата без презареждане на страницата?Да, можете също да реализирате бутон, който да нулира чата.
Какво се случва, ако идентификационните номера са еднакви?Ако новият идентификатор е същият като текущия, историята няма да бъде нулирана.
Дали трябва да изтрия полето за въвеждане ръчно?Да, в момента полето за въвеждане не се изчиства автоматично след изпращане на съобщение.