background image

 

Νικόλαος Λυμπιτάκης, Κατασκευή ενός 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, η οποία