In deze handleiding leer je hoe je een chat met de OpenAI API kunt resetten zonder de server opnieuw te hoeven opstarten. Er zijn vaak situaties waarin je gewoon de vorige chatgeschiedenis wilt vergeten en opnieuw wilt beginnen. Hierbij speelt een chat-ID een belangrijke rol, omdat het mogelijk maakt om de geschiedenis op de server te resetten. De volgende handleiding zal je laten zien hoe je deze functie implementeert.
Belangrijkste inzichten
- Om de chat te resetten, kun je een nieuwe chat-ID genereren.
- De chat-ID wordt aangemaakt bij het herladen van de pagina en naar de server gestuurd.
- De server vergelijkt de nieuwe chat-ID met de huidige en reset de chatgeschiedenis als ze verschillend zijn.
Stap-voor-stap-handleiding
Je hebt al een werkende chat-applicatie, maar er is een klein probleem: je kunt de chatgeschiedenis nog niet resetten. Om dit mogelijk te maken, moeten we een ID introduceren die bij elk herladen van de pagina wordt gegenereerd.
Deze nieuwe chat-ID moet vervolgens aan je server worden doorgegeven. Als de server een nieuwe ID ontvangt, kan hij de chatgeschiedenis resetten. Dit gebeurt via een eenvoudige vergelijking: als de nieuwe chat-ID niet overeenkomt met de huidige chat-ID, wordt de lijst met berichten gereset.
Om dit te implementeren, moet je ervoor zorgen dat de client in staat is om een willekeurige ID te genereren. Je zult de ID doorgeven met de zoekparameter ID. Laten we dus eens kijken naar het bestand index.jsx van je React-component.
Je hebt al de benodigde boodschap (MSG) doorgegeven in dit bestand. Nu kun je ook de ID doorgeven. Dit kun je effectief doen met behulp van een sjabloonreeks, zodat het invoegen van variabelen eenvoudiger wordt.
Zet de code dus om in een sjabloonreeks en voeg de variabelen op passende wijze toe. Het zou er zo uit kunnen zien: MSG, dat is je invoerveld, en de ID is gelijk aan je nieuwe ID.
Nu moet je nadenken over het genereren van de ID. Een eenvoudige methode is om de datum te gebruiken. Je kunt eenvoudig een constante definiëren die de huidige tijd in milliseconden sinds 1970 gebruikt. Je kunt Date.now() gebruiken en deze tijd vervolgens omzetten naar een string.
Nu sturen we bij het herladen van de pagina altijd een nieuwe ID mee. Dat zou zoals gewenst moeten werken. Laten we het geheel testen en een bericht sturen om te zien of de gegevens correct naar de server worden verzonden.
Als je het bericht "how are you" verstuurt, zie je op de server dat er twee berichten zijn: één van de gebruiker en één van de assistent.
Als je echter een andere vraag stelt, zoals "waarom heeft het geen gevoelens", moet de geschiedenis dienovereenkomstig worden gereset. Alleen de huidige vraag en het antwoord daarop zouden daar moeten staan.
Dit betekent dat wanneer we de IDs controleren - er mag geen conflict zijn, bijvoorbeeld dat de nieuwe chat-ID gelijk is aan de huidige chat-ID - de logica zo moet worden vereenvoudigd dat dit soepel verloopt.
Om ervoor te zorgen dat het werkt, voer je de test opnieuw uit. Laad de pagina opnieuw en stuur het bericht nogmaals. Nu zouden er vier berichten in de array moeten worden opgeslagen.
De array toont het totale aantal verzonden berichten, wat betekent dat we de geschiedenis correct hebben gereset. Dit gebeurt echter alleen als je de pagina opnieuw laadt. Alternatief kun je ook een knop implementeren die het resetten van de chat activeert, maar voor onze doeleinden is het opnieuw laden van de pagina voorlopig voldoende.
Houd er echter rekening mee dat het invoerveld niet automatisch wordt gewist na het verzenden van een bericht. Ook de volledige chatgeschiedenis is tot nu toe niet zichtbaar, wat betekent dat je altijd alleen de laatste vraag en antwoord ziet. We zullen hier in toekomstige tutorials ook op ingaan.
Samenvatting
In deze handleiding heb je geleerd hoe je de functie voor het resetten van de chatgeschiedenis in je chatapplicatie kunt implementeren. Door bij het herladen van de pagina een nieuwe chat-ID in te voeren, kon de geschiedenis succesvol worden gereset. Er zijn nog enkele verbeteringen die we in de volgende stappen zullen doorvoeren, zoals het wissen van het invoerveld en het volledig tonen van de chatgeschiedenis.
Veelgestelde vragen
Hoe kan ik de chat resetten?Door de pagina opnieuw te laden, wordt de chatgeschiedenis gereset.
Hoe wordt de nieuwe ID gegenereerd?De nieuwe ID wordt gegenereerd uit de huidige tijd in milliseconden.
Kan ik de chat ook resetten zonder de pagina opnieuw te laden?Ja, je kunt ook een knop implementeren die de chat reset.
Wat gebeurt er als de ID's gelijk zijn?Als de nieuwe ID gelijk is aan de huidige ID, wordt de geschiedenis niet gereset.
Moet ik het invoerveld handmatig wissen?Ja, momenteel wordt het invoerveld niet automatisch gewist na het verzenden van een bericht.