UPORABA GPT API ZA USTVARJANJE INTERAKTIVNEGA TUTORJA
Cilj učne ure:
Študenti se naučijo, kako vključiti zgodovino pogovora v GPT asistenta za izboljšanje konteksta odgovorov. Program bo prilagojen za sledenje zgodovini pogovorov in ohranjanje konteksta skozi iteracije.
1. Pregled in uvod (10 minut)
Kaj je novo?
- V tem programu se zgodovina pogovorov shrani v obliki seznama slovarjev.
- GPT asistent uporablja zadnjih 5 sporočil iz zgodovine za generiranje odgovorov.
- Uporaba
stream=True
omogoča sprotno generiranje in prikaz odgovorov.
Povezava s prejšnjo uro:
- Študenti so spoznali osnovno strukturo GPT klicev.
- Zdaj razširjamo funkcionalnost z vključitvijo zgodovine pogovora za bolj smiselne in koherentne odgovore.
2. Razlaga nadgrajene kode (15 minut)
Ključne izboljšave v kodi:
- Uvedba zgodovine pogovora:
- Zgodovina je seznam slovarjev, kjer vsak element predstavlja sporočilo.
- Primer začetne konfiguracije:
zgodovina_pogovora = [ { "role": "system", "content": "Ti si pomočnik za pomoč učitelju pri poučevanju tehnike in tehnologije" } ]
- Vloga
"system"
določa osnovni kontekst za asistenta.
- Dinamično dodajanje uporabniških sporočil:
- Ob vsakem vprašanju uporabnika se to doda v
zgodovina_pogovora
:zgodovina_pogovora.append({"role": "user", "content": vprasanje})
- Ob vsakem vprašanju uporabnika se to doda v
- Uporaba zadnjih 5 sporočil:
- Omejitev na zadnjih 5 sporočil zmanjšuje število tokenov in izboljša učinkovitost:
messages=zgodovina_pogovora[-5:]
- Omejitev na zadnjih 5 sporočil zmanjšuje število tokenov in izboljša učinkovitost:
- Streaming odgovorov:
- Omogoča sprotno pridobivanje delov odgovora, kar izboljša uporabniško izkušnjo:
for delcek_besedila in pogovor: print(delcek_besedila.choices[0].delta.content or "", end="")
- Omogoča sprotno pridobivanje delov odgovora, kar izboljša uporabniško izkušnjo:
- Obravnava napak:
- Uporaba
try-except
za obravnavo izjem, če API klic ne uspe:except Exception as e: print(f"Prišlo je do napake: {str(e)}")
- Uporaba
3. Praktična vaja (35 minut)
Naloge za študente:
- Preizkusite obstoječo funkcionalnost:
- Zaženite program in vnesite več vprašanj.
- Opazujte, kako GPT asistent uporablja zgodovino pogovora za oblikovanje odgovorov.
- Dodajte shranjevanje zgodovine v datoteko:
- Ustvarite funkcijo za zapis
zgodovina_pogovora
v JSON datoteko:import json def shrani_zgodovino(ime_datoteke="zgodovina.json"): with open(ime_datoteke, "w", encoding="utf-8") as datoteka: json.dump(zgodovina_pogovora, datoteka, indent=4, ensure_ascii=False)
- Ustvarite funkcijo za zapis
- Implementirajte nalaganje zgodovine iz datoteke:
- Ustvarite funkcijo za nalaganje shranjene zgodovine:
def nalozi_zgodovino(ime_datoteke="zgodovina.json"): try: with open(ime_datoteke, "r", encoding="utf-8") as datoteka: return json.load(datoteka) except FileNotFoundError: return []
- Ustvarite funkcijo za nalaganje shranjene zgodovine:
- Prilagodite kodo za nadaljevanje pogovora:
- Na začetku programa preverite, ali obstaja shranjena zgodovina, in jo naložite:
zgodovina_pogovora = nalozi_zgodovino()
- Na začetku programa preverite, ali obstaja shranjena zgodovina, in jo naložite:
- Preverjanje vpliva zgodovine na odgovore:
- Poskusite spremeniti število sporočil, ki jih GPT uporablja iz zgodovine (npr. zadnjih 3 sporočil namesto 5).
4. Razširitve (10 minut)
Ideje za nadaljnje raziskovanje:
- Dodajanje uporabniških identitet:
- Prilagodite
system
vlogo glede na uporabnika (npr. učitelj, učenec).
- Prilagodite
- Vizualizacija zgodovine pogovora:
- Prikaz zgodovine pogovora v terminalu pred vsakim novim vprašanjem.
- Analiza pogovora:
- Dodajte funkcijo, ki analizira, ali je GPT asistent uspešno ohranil kontekst.
5. Povzetek in diskusija (10 minut)
Ključna vprašanja za študente:
- Kako zgodovina pogovora vpliva na odgovore GPT asistenta?
- Kako bi izboljšali tok informacij, da bi bil asistent bolj učinkovit?
- Katere dodatne funkcionalnosti bi želeli vključiti?
Rezultat:
Študenti bodo nadgradili svojega GPT asistenta, da bo uporabljal zgodovino pogovorov za bolj kontekstualne odgovore. Prav tako bodo razumeli, kako delati z datotekami za shranjevanje in nalaganje podatkov.