35
Οι θεματικές φορτώνονται από το json αρχείο και μετατρέπονται σε ένα λεξικό, ώστε
να μπορούν να χρησιμοποιηθούν μέσα στο py αρχείο. Έπειτα το λεξικό χρησιμοποιήθηκε και
στο api.py και στο chat.py. Με αυτό τον τρόπο το LLM, δηλαδή ο NPC, πλέον μπορούσε να
συζητάει αποκλειστικά για συγκεκριμένη θεματική.
# load the topics from the py by opening the topic.json file (file is assigned to variable f)
with open('topics.json') as f:
#read the json file and convert it into a dictionary
topics = json.load(f)["topics"]
# initialize the knowledge topic
knowledge_topic = topics[0]
Διαχείριση Θεματικών μέσω API
Το chat.py στέλνει στο API την επιλεγμένη θεματική μέσω της συνάρτησης
set_knowledge_topic.
#function to set the knowledge topic
def set_knowledge_topic(topic):
# the url to send the topic to api.py
url = "http://127.0.0.1:5010/get_knowledge_topic"
# take the current topic as data
data = {'topic': topic}
#use requests to send http requests in py, post to send the
data/users message on the server to get a response
response = requests.post(url, json=data)
# take the llms response
response_json = response.json()
# print the response in the terminal
print("Received knowledge topic from level:", topic)
print(f"Set topic response: {response_json}")
return response_json
api.py
Στο api.py, η συνάρτηση check_topic ελέγχει αν η ερώτηση του χρήστη σχετίζεται με
την τρέχουσα θεματική. Στην llm_run δίνεται μία εντολή μέσω prompt στο LLM, μέσω της
οποίας λαμβάνει οδηγίες σχετικά με το αντικείμενο γνώσης που θα κατέχει.
Αξίζει να σημειωθεί, ότι στην περίπτωση που ο χρήστης ζητούσε από το LLM να
μετρήσει, αυτό το έκανε ακόμη και αν η θεματική δεν ήταν το αντικείμενο των Μαθηματικών.
Συνεπώς, χρειάστηκε να δοθεί μία περαιτέρω εντολή μέσω prompt : If message is asking you
to count, do it only if knowledge_topic is Mathematics{message}.