background image

 

 

36 

 

#check if the question is related to the current knowledge topic 
def check_topic(message): 

    try: 

# inform the llm about the rules that must be followed. 

        llm_run  =  ['ollama',  'run',  'llama3:latest',  f"Is  the  following  question  or 

ability clearly and directly related only to {knowledge_topic}?Answer with yes if it is relevant 
else dont use it in your answer or no if not relevant. If message is asking you to count, do it 
only if knowledge_topic is Mathematics. {message}"] 
#subprocess is used to connect an exe running on cmd with a py file 

        output 

subprocess.check_output(llm_run, 

encoding='utf-8', 

stdin=subprocess.DEVNULL) 

        print("Output is",message,output ) 

#The llm is asked to answer yes or no, to determine if users question is relevant to the current 

topic 
#With the use of strip case-sensitivity was observed. Lower fixed that 

        return "yes" in output.lower()    
    # exception for stdout stderr error occurred and print the error 

    except subprocess.CalledProcessError as e: 
        print("Error running LLM :", e) 
        return "Error running LLM" 

 

Στη  συνάρτηση  take_a_response  γίνεται  έλεγχος,  ώστε  να  διαπιστωθεί  αν  το 

περιεχόμενο  του  μηνύματος  που  έστειλε  ο  χρήστης  είναι  σχετικό  με  τη  θεματική  που  έχει 

οριστεί. Σε περίπτωση που σχετίζονται το LLM στέλνει την απάντησή του, αλλιώς απαντάει 

με ένα προκαθορισμένο μήνυμα, το οποίο ενημερώνει τον χρήστη, σχετικά με ποιο αντικείμενο 

μπορεί να πραγματοποιηθεί η συζήτηση. 

 

    

if check_topic(message): 

        #take a response from llm using the function running it 
        response = run_the_llm(message) 
    else: 

#setting a default response if question of user is not related to the current knowledge topic 

        response = f"I can only answer questions related to {knowledge_topic}." 
    print("response:", response) 
  # return the llms response as a json file to be received by user 

    return jsonify({'response': response}) 

 

Έπειτα  μέσω  του  app.route  λαμβάνεται  η  post  εντολή  της  συνάρτησης 

set_knowlege_topic του chat.py. Η μεταβλητή knowledge_topic ορίζεται ως global και μέσω 

του  λεξικού  data  γίνεται  πρόσβαση  στο  αρχείο  json.  Στη  συνέχεια  το  knowledge_topic 

ταυτίζεται με τη θεματική/topic που ορίστηκε στη αρχή.