background image

 

 

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}.