UPORABA GPT API ZA USTVARJANJE INTERAKTIVNEGA TUTORJA
Cilji
- Razumeti vlogo
conversation_id
za ohranjanje in identifikacijo pogovora. - Implementirati ustvarjanje novega pogovora ter uporabo obstoječega ID-ja.
- Testirati več sej in preveriti, kako se kontekst ohranja.
- Preberi ključne dele kode:
- Konstantna
CONVERSATION_ID
(vrh datoteke) — prednastavljen ID ali prazen niz. - Funkcija
get_conversation_id()
— ustvari nov pogovor, če ID ni določen, in nastavi globalnoCONVERSATION_ID
. - V
start_chat()
se pokličeconversation_id = get_conversation_id()
in naprejclient.responses.create(..., conversation=conversation_id, ...)
— tu se poveže sporočanje z določenim pogovorom.
- Konstantna
- Kratek eksperiment:
- a) Zaženi skripto z obstoječim
CONVERSATION_ID
in izvedi 2–3 vprašanja. Opazuj, da agent ohranja kontekst. - b) Nastavi
CONVERSATION_ID = ""
(prazno) in ponovno zaženi — preveri, da se v konzoli izpiše “[Ustvarjen nov ID pogovora]” in da se ustvari nov kontekst. - c) Kopiraj ustvarjeni ID in ponovno zaženi skripto z njim — potrditev, da se kontekst iz prejšnje seje nadaljuje.
- a) Zaženi skripto z obstoječim
- Razširitev (izbirno, kratko):
- Logiraj
conversation_id
+ čas + uporabnikova sporočila v lokalno datoteko za sledljivost. - Dodaj ukaz
"/new"
vstart_chat()
za ročno ustvarjanje novega pogovora (pokličiCONVERSATION_ID = ""
inget_conversation_id()
).
- Logiraj
Varnost in etika (kratko)
- Ne deli resničnih API ključev; uporabi okoljske spremenljivke (
OPENAI_API_KEY
). - Pri beleženju pogovorov upoštevaj zasebnost (anominizacija/odobritev, če so občutljivi podatki).
#!/usr/bin/env python3
import os
from openai import OpenAI
# 🔧 Nastavi svoj API ključ
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# 🔁 Če želiš ohraniti isti pogovor, vnesi tu ID, npr. "conv_abc123..."
CONVERSATION_ID = "conv_68f00d96a8d8819698235b1ec9ae16df08246b7a10722d12"
# 🧠 Navodila ai agenta
AI_AGENT_INSTRUCTIONS = """
Ti si AI pomočnik učitelju tehnike in tehnologije v osnovni šoli.
Tvoja naloga je pomagati pri pripravi učnih ur, pri iskanju idej za učne dejavnosti,
ter pri oblikovanju preprostih razlag za učence.
"""
def get_conversation_id():
"""Ustvari nov pogovor, če ID še ni določen."""
global CONVERSATION_ID
if not CONVERSATION_ID:
conv = client.conversations.create()
CONVERSATION_ID = conv.id
print(f"[Ustvarjen nov ID pogovora]: {CONVERSATION_ID}")
else:
print(f"[Uporablja se obstoječi ID pogovora]: {CONVERSATION_ID}")
return CONVERSATION_ID
def start_chat():
conversation_id = get_conversation_id()
print("\nZačni pogovor (vpiši 'exit' za izhod)\n")
while True:
user_input = input("👤 Ti: ").strip()
if user_input.lower() in ["exit", "quit"]:
print("🔚 Pogovor zaključen.")
break
response = client.responses.create(
model="gpt-5-nano",
conversation=conversation_id,
input=[
{"role": "system", "content": AI_AGENT_INSTRUCTIONS},
{"role": "user", "content": user_input},
],
tools=[
# {
# "type": "file_search",
# "vector_store_ids": ["vs_68f0014fe51c819184b6c36568f1ade0"],
# }
],
)
print(f"\n🧠 Asistent: {response.output_text}\n")
if __name__ == "__main__":
start_chat()