Νικόλαος Λυμπιτάκης, Κατασκευή ενός RAG Chatbot για
Ξενοδοχειακή Υποστήριξη
49
if results:
return results[0].metadata['answer']
else:
return “I couldn't find an answer to that question in our
FAQ.”
else:
return "I'm sorry, I couldn't access the FAQ information right
now."
Εικόνα 19 : Kώδικας του tool “get_faq_answer” από το chatbot_logic.py
Πέραν της διαχείρισης των συχνών ερωτήσεων, αναπτύχθηκαν επιπλέον εργαλεία
που επεκτείνουν τις δυνατότητες πληροφόρησης του συστήματος:
Η συνάρτηση get_review_summary() επιτρέπει στον πράκτορα να αναλύει την
εμπειρία προηγούμενων επισκεπτών. Αντί να επιστρέφει μεμονωμένες κριτικές, το
εργαλείο ανακτά τα πιο σχετικά αποσπάσματα από τη διανυσματική βάση κριτικών βάσει
της θεματολογίας που εισάγει ο χρήστης (π.χ. καθαριότητα, εστίαση). Με αυτόν τον τρόπο,
ο πράκτορας μπορεί να διαμορφώσει μια αντικειμενική σύνοψη της ποιότητας των
υπηρεσιών.
Για την παροχή πληροφοριών σχετικά με την τοποθεσία του ξενοδοχείου,
υλοποιήθηκε η συνάρτηση find_points_of_interest(). Το εργαλείο αυτό αναζητά στη
διανυσματική βάση δεδομένων POI (Points of Interest) αξιοθέατα, τοπικές επιχειρήσεις κτλ.
που ταιριάζουν με το ερώτημα του χρήστη. Τα αποτελέσματα περιλαμβάνουν την
ονομασία, τη διεύθυνση και την κατηγορία του σημείου, ενισχύοντας τον ρόλο του chatbot
ως ολοκληρωμένου τουριστικού οδηγού.
Η διαχείριση των δυναμικών δεδομένων που αφορούν τη διαμονή πραγματοποιείται
μέσω των συναρτήσεων get_available_rooms() και get_room_info(). Τα εργαλεία αυτά
αλληλεπιδρούν απευθείας με τη σχεσιακή βάση δεδομένων SQLite, εκτελώντας δομημένα
ερωτήματα SQL. Η πρώτη συνάρτηση ελέγχει σε πραγματικό χρόνο τη διαθεσιμότητα των
δωματίων ανά τύπο, ενώ η δεύτερη ανακτά τις ισχύουσες τιμές διανυκτέρευσης. Η χρήση
σχεσιακής βάσης για αυτά τα δεδομένα κρίθηκε απαραίτητη, καθώς οι πληροφορίες αυτές
μεταβάλλονται συχνά και απαιτούν απόλυτη ακρίβεια, την οποία δεν μπορεί να εγγυηθεί
μια διανυσματική βάση.
Για την υλοποίηση αυτών των εργαλείων επιλέχθηκε η χρήση
προκαθορισμένων ερωτημάτων SQL αντί της δυναμικής παραγωγής κώδικα SQL από το
γλωσσικό μοντέλο. Η απόφαση αυτή βασίστηκε σε δύο κύριους πυλώνες: