Νικόλαος Λυμπιτάκης, Κατασκευή ενός RAG Chatbot για
Ξενοδοχειακή Υποστήριξη
60
if st.session_state.lang != selected_lang:
st.session_state.lang = selected_lang
# Επαναφορά µηνύµατος καλωσορίσµατος στη νέα γλώσσα
st.session_state.messages = [{"role": "bot", "message":
UI_TRANSLATIONS[selected_lang]["welcome_message"], "turn_id": 0}]
# Επαναφορά µνήµης για νέα συνοµιλία
st.session_state.memory = ConversationBufferWindowMemory(k=5,
memory_key="chat_history", input_key="input")
st.rerun()
Εικόνα 29 : Kώδικας από app.py
4.5.5 Ροή Συνομιλίας και Feedback
Η απεικόνιση της συνομιλίας γίνεται μέσω επανάληψης στη λίστα
st.session_state.messages (εικόνα 30). Για κάθε μήνυμα, χρησιμοποιείται το
st.chat_message για να δημιουργηθεί το αντίστοιχο “balloon” συνομιλίας. Επιπλέον,
ενσωματώθηκε μηχανισμός αξιολόγησης (feedback) απευθείας μέσα στη διεπαφή
συνομιλίας, επιτρέποντας στον χρήστη να αξιολογήσει την απάντηση του bot.
# --- ΕΜΦΑΝΙΣΗ CHAT HISTORY ---
for msg in st.session_state.messages:
with st.chat_message(msg["role"]):
st.markdown(msg["message"])
# Κουµπιά για το feedback
if msg["role"] == "bot" and msg["turn_id"] > 0:
turn_id = msg["turn_id"]
col1, col2 = st.columns(2)
with col1:
if st.button(ui["feedback_good"],
key=f"good_{turn_id}"):
save_feedback(turn_id, 'good')
# ...
Εικόνα 30 : Kώδικας από app.py
4.6 Σύνοψη 4
ου
Κεφαλαίου
Συνοψίζοντας, στο τέταρτο κεφάλαιο, παρουσιάστηκε αναλυτικά η τεχνική
υλοποίηση του συστήματος, βασισμένη σε μια αρχιτεκτονική τριών επιπέδων που
εξασφαλίζει
επεκτασιμότητα
και
αποδοτικότητα. Περιγράφηκε
η
διαδικασία
προετοιμασίας και επεξεργασίας των δεδομένων για τη δημιουργία των διανυσματικών
βάσεων με τη χρήση FAISS, καθώς και ο σχεδιασμός της σχεσιακής βάσης SQLite για τη
διαχείριση των κρατήσεων και του ιστορικού. Αναλύθηκε διεξοδικά η λογική του ReAct
Agent μέσω του framework LangChain και η ενσωμάτωση του μοντέλου DeepSeek,
εστιάζοντας στη δημιουργία εξειδικευμένων εργαλείων ανάκτησης και στη διαχείριση
μνήμης. Τέλος, παρουσιάστηκε η ανάπτυξη της διεπαφής χρήστη με το Streamlit, η οποία