Šiame vadove sužinosite, kaip iš naujo nustatyti pokalbio nustatymus naudojant "OpenAI API", kad nereikėtų iš naujo paleisti serverio. Dažnai pasitaiko situacijų, kai tiesiog norite pamiršti ankstesnę pokalbių istoriją ir pradėti viską iš naujo. Pokalbio ID čia atlieka pagrindinį vaidmenį, nes jis leidžia iš naujo nustatyti istoriją serveryje. Toliau pateiktoje pamokoje sužinosite, kaip įgyvendinti šią funkciją.
Svarbiausios išvados
- Norėdami iš naujo nustatyti pokalbio istoriją, galite sugeneruoti naują pokalbio ID.
- Pokalbio ID sukuriamas, kai puslapis perkraunamas ir perkeliamas į serverį.
- Serveris palygina naująjį pokalbio ID su dabartiniu ir iš naujo nustato pokalbių istoriją, jei jie skiriasi.
Žingsnis po žingsnio
Pirma, jau turite veikiančią pokalbių programą, tačiau yra nedidelė problema: kol kas negalite iš naujo nustatyti pokalbių istorijos. Kad tai būtų įmanoma, reikia įvesti ID, kuris generuojamas kiekvieną kartą perkraunant puslapį.
Tuomet šį naująjį pokalbio ID reikia perduoti serveriui. Kai serveris gauna naują ID, jis gali iš naujo nustatyti pokalbių istoriją. Tai atliekama atliekant paprastą palyginimą: jei naujasis pokalbio ID nesutampa su dabartiniu pokalbio ID, pranešimų sąrašas iš naujo nustatomas.
Norėdami tai įgyvendinti, turite įsitikinti, kad klientas gali generuoti atsitiktinį ID. ID perduosite su paieškos parametru ID. Taigi pažvelkime į jūsų "React" komponento index.jsx failą.
Štai šiame faile jau perdavėte reikiamą pranešimą (MSG). Dabar taip pat galite perduoti ID. Tai galite padaryti efektyviai naudodami šablono eilutę, kad būtų lengviau įterpti kintamuosius.
Taigi paverskite kodą šablono eilute ir atitinkamai įterpkite kintamuosius. Ji galėtų atrodyti taip: MSG, tai yra jūsų įvesties laukas, o ID sutampa su jūsų naujuoju ID.
Dabar reikia pagalvoti, kaip sugeneruoti ID. Paprastas būdas yra naudoti datą. Galite paprasčiausiai apibrėžti konstantą, kuri naudoja dabartinį laiką milisekundėmis nuo 1970 m. Galite naudoti funkciją Date.now() ir konvertuoti šį laiką į eilutę.
Dabar, perkraunant puslapį, visada siunčiame naują ID. Tai turėtų veikti taip, kaip norima. Išbandykime ir išsiųskime pranešimą, kad pamatytume, ar duomenys į serverį siunčiami teisingai.
Jei išsiųsite žinutę "kaip sekasi", serveryje pamatysite, kad yra dvi žinutės: viena iš naudotojo, kita iš padėjėjo.
Tačiau jei išsiųsite kitą klausimą, pavyzdžiui, "kodėl jis neturi jausmų", istorija turėtų būti atitinkamai atstatyta. Joje turėtų būti tik dabartinis klausimas ir atsakymas į jį.
Tai reiškia, kad kai tikriname ID - neturi būti jokio konflikto, pavyzdžiui, kad naujasis pokalbio ID sutampa su dabartiniu pokalbio ID - logika turėtų būti supaprastinta, kad tai vyktų švariai.
Norėdami įsitikinti, kad tai veikia, dar kartą paleiskite testą. Perkraukite puslapį ir dar kartą išsiųskite žinutę. Dabar masyve turėtų būti saugomi keturi pranešimai.
Masyve rodomas bendras išsiųstų žinučių skaičius, vadinasi, istoriją atkūrėme teisingai. Tačiau tai įvyksta tik iš naujo įkėlus puslapį. Taip pat galite įdiegti mygtuką, kuris įjungtų pokalbio istorijos atstatymą, tačiau mūsų tikslams kol kas pakanka puslapio perkrovimo.
Tačiau atkreipkite dėmesį, kad išsiuntus žinutę įvesties laukas nėra automatiškai išvalomas. Visa pokalbių istorija taip pat kol kas nematoma, o tai reiškia, kad visada matysite tik paskutinį klausimą ir atsakymą. Šią problemą taip pat aptarsime būsimuose vadovėliuose.
Apibendrinimas
Šiame vadove sužinojote, kaip savo pokalbių programoje įdiegti pokalbių istorijos atstatymo funkciją. Įvedus naują pokalbio ID, kai puslapis perkraunamas iš naujo, istoriją galima sėkmingai iš naujo nustatyti. Dar yra keletas patobulinimų, kuriuos įgyvendinsime kituose žingsniuose, pavyzdžiui, įvesties lauko išvalymas ir visos pokalbių istorijos rodymas.
Dažniausiai užduodami klausimai
Kaip iš naujo nustatyti pokalbiųistoriją? Perkrovus puslapį, pokalbių istorija bus iš naujo nustatyta.
Kaip generuojamas naujas ID?Naujas ID generuojamas pagal dabartinį laiką milisekundėmis.
Ar galiu iš naujo nustatyti pokalbio istoriją neperkraudamas puslapio?Taip, taip, taip pat galite įdiegti mygtuką, kuris iš naujo nustato pokalbio istoriją.
Kas atsitiks, jei ID sutampa?Jei naujasis ID sutampa su dabartiniu ID, istorija nebus iš naujo nustatyta.
Ar įvesties lauką reikia išvalyti rankiniu būdu?Taip, šiuo metu išsiuntus žinutę įvesties laukas automatiškai neišvalomas.