I denne vejledning vil du lære, hvordan du kan nulstille en chat med OpenAI API uden at skulle genstarte serveren. Ofte er der situationer, hvor du bare gerne vil glemme den nuværende chathistorik og starte forfra. En chat-ID spiller en central rolle, da den gør det muligt at nulstille historikken på serveren. Den følgende vejledning vil vise dig, hvordan du implementerer denne funktion.
Vigtigste erkendelser
- For at nulstille chatten kan du generere en ny chat-ID.
- Chat-ID'en genereres ved at genindlæse siden og sende den til serveren.
- Serveren sammenligner den nye chat-ID med den eksisterende og nulstiller chat historikken, hvis de er forskellige.
Trin-for-trin vejledning
Du har allerede en fungerende chatapplikation, men der er et lille problem: Du kan ikke nulstille chat historikken endnu. For at kunne gøre dette skal vi introducere en ID, som genereres hver gang siden genindlæses.
Du skal derefter sende denne nye chat-ID til din server. Når serveren modtager en ny ID, kan den nulstille chat historikken. Dette sker ved en enkel sammenligning: Hvis den nye chat-ID ikke matcher den nuværende chat-ID, nulstilles beskedlisten.
For at implementere dette skal du sikre dig, at klienten er i stand til at generere en tilfældig ID. Du vil sende ID'en med søgeparametret ID. Lad os se på din React-komponents index.jsx-fil.
Du har allerede sendt den nødvendige besked (MSG) i denne fil. Nu kan du også sende ID'en. Dette kan gøres effektivt ved hjælp af en skabelonstreng for at lette indlejringen af variable.
Omdan koden til en skabelonstreng og indsæt variablerne ordentligt. Sådan kan det se ud: MSG er din inputboks, og ID'en er din nye ID.
Nu skal du overveje genereringen af ID'en. En simpel metode er at bruge datoen. Du kan simpelthen definere en konstant, der bruger den nuværende tid i millisekunder siden 1970. Du kan bruge Date.now() til dette og derefter konvertere tiden til en streng.
Nu sender vi altid en ny ID ved genindlæsning af siden. Det bør fungere som ønsket. Lad os teste det og sende en besked for at se, om dataene overføres korrekt til serveren.
Når du sender beskeden "how are you", kan du på serveren se, at der er to beskeder: en fra brugeren og en fra assistenten.
Hvis du derimod sender endnu et spørgsmål, f.eks. "why does it not have feelings", bør historikken blive nulstillet. Kun det nuværende spørgsmål og dets svar skal være synlige.
Dette betyder, at når vi tjekker ID'erne - der ikke må være nogen konflikt, f.eks. at den nye chat-ID er den samme som den nuværende chat-ID - bør logikken forenkles, så det fungerer problemfrit.
For at være sikker på, at det virker, skal du køre testen igen. Genindlæs siden og send beskeden en gang til. Der skulle nu være fire beskeder gemt i arrayet.
Arrayet viser det samlede antal beskeder, der er sendt, hvilket indikerer, at historikken korrekt er blevet nulstillet. Dette sker dog kun, når du genindlæser siden. Alternativt kan du også implementere en knap, der udløser nulstillingen af chatten, men for vores formål er genindlæsning af siden tilstrækkeligt.
Vær dog opmærksom på, at inputfeltet ikke automatisk bliver tømt efter afsendelse af en besked. Desuden er den fulde chat-historik endnu ikke synlig, hvilket betyder, at du kun ser den seneste spørgsmål og svar. Dette vil også blive behandlet i fremtidige tutorials.
Oversigt
I denne vejledning har du lært, hvordan du kan implementere chatlog-nulstillingsfunktionen i din chatapplikation. Ved at introducere et nyt chat ID ved genindlæsning af siden blev historikken succesfuldt nulstillet. Der er stadig nogle forbedringer, som vi vil implementere i de næste trin, såsom at slette inputfeltet og vise hele chatloggen fuldstændigt.
Ofte stillede spørgsmål
Hvordan kan jeg nulstille chatten?Ved at genindlæse siden nulstilles chatloggen.
Hvordan genereres det nye ID?Det nye ID genereres ud fra det aktuelle tidspunkt i millisekunder.
Kan jeg også nulstille chatten uden at genindlæse siden?Ja, du kan også implementere en knap, der nulstiller chatten.
Hvad sker der, hvis ID'erne er ens?Hvis det nye ID er det samme som det aktuelle ID, nulstilles historikken ikke.
Skal jeg slette inputfeltet manuelt?Ja, for øjeblikket bliver inputfeltet ikke automatisk tømt efter afsendelse af en besked.