background image

 

 

49 

 

Η get_last_question χρησιμοποιείται για την ανάκτηση της τελευταίας ερώτησης που 

έκανε το LLM στο χρήστη πάνω σε κάποια συγκεκριμένη θεματική. Η τιμή του topic ορίζεται 

ως παράμετρος “?”, η οποία αντικαθίσταται από το περιεχόμενο του topic. 

Η μέθοδος cursor.fetchone() επιστρέφει tuple με τα πεδία id, question και answer στη σειρά αν 

βρεθεί εγγραφή (if result) και None σε κάθε πεδίο αν δεν βρεθεί καμία εγγραφή.

 

def get_last_question(topic): 

    with sqlite3.connect('topics.db') as conn: 
        cursor = conn.cursor() 
        #select the id, question and answer of the last added question for the current topic 

        cursor.execute(''' 
            SELECT id, question, answer 
            FROM questions 
            WHERE id = (SELECT MAX(id) FROM questions WHERE topic = ?) 

        ''', (topic,)) 
        result = cursor.fetchone() 
        if result: 

             #return the id, question, and answer 
            return result[0], result[1], result[2] 
        #return None,if no question is found 
        return None, None, None 

 

 

 

Η  update_user_question_count  χρησιμεύει  στο  συγχρονισμό  και  την  παρακολούθηση  των 

εναπομείναντων ερωτήσεων που αφορούν τον χρήστη σε συγκεκριμένη θεματική.  

Το reduce καθορίζει το αν θα μειωθεί ο αριθμός των ερωτήσεων. Όταν το reduce ισούται με 

True, τότε μειώνεται κατα μία μονάδα ο αριθμός των ερωτήσεων για τον συγκεκριμένο χρήστη 

και τη θεματική: SET num_questions = num_questions - 1. 

Σε  περίπτωση  που  ο  αριθμός  των  ερωτήσεων  πάει  να  γίνει  αρνητικός,  αυτό  διορθώνεται 

ορίζοντας αυτό τον αριθμό ίσο με το μηδέν: SET num_questions = 0. Έτσι εξασφαλίζεται ότι 

η τιμή του πεδίου num_questions δεν θα είναι μικρότερη από 0. 

Όταν το reduce είναι False, τότε είτε εισάγεται ή παραλείπεται η εγγραφή. Αν δεν υπάρχει ήδη 

εγγραφή για τον χρήστη και το θέμα, πραγματοποιείται με τις τιμές: INSERT OR IGNORE 

INTO  user_topics  (user_id,  topic,  num_questions,  initial_num_questions).  Αν  υπάρχει  ήδη 

εγγραφή για το user_id και το topic, η εισαγωγή θα παρακαμφθεί χωρίς την ύπαρξη σφάλματος, 

χάρη στη χρήση του INSERT OR IGNORE.