Spaces:
Sleeping
Sleeping
File size: 2,636 Bytes
27c824e a098bc7 27c824e a098bc7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import streamlit as st
from rag import get_answer_with_rag
from rag import get_answer_with_rag, load_generative_model, load_reranker, load_embedding_model, load_mongo_collection
load_generative_model()
load_reranker()
load_embedding_model()
load_mongo_collection()
st.set_page_config(
page_title="PTIT RAG Chatbot",
page_icon="🤖",
layout="wide"
)
# --- GIAO DIỆN CHÍNH ---
st.title("🤖 PTIT RAG Chatbot")
st.caption("Trợ lý ảo thông minh về Học viện Bưu chính Viễn thông")
# Khởi tạo session state để lưu trữ lịch sử trò chuyện
if "messages" not in st.session_state:
st.session_state.messages = [
{"role": "assistant", "content": "Xin chào! Tôi có thể giúp gì cho bạn về các thông tin tại PTIT?"}
]
# --- SIDEBAR ---
with st.sidebar:
st.header("Tùy chọn")
if st.button("🗑️ Xóa cuộc trò chuyện", use_container_width=True):
st.session_state.messages = [
{"role": "assistant", "content": "Cuộc trò chuyện đã được xóa. Hãy bắt đầu lại nhé!"}
]
st.rerun()
st.markdown("---")
st.markdown("### Về ứng dụng")
st.info("Ứng dụng này sử dụng RAG để trả lời câu hỏi dựa trên tài liệu về PTIT.")
# Hiển thị lịch sử trò chuyện
for message in st.session_state.messages:
avatar = "🧑💻" if message["role"] == "user" else "🤖"
with st.chat_message(message["role"], avatar=avatar):
st.write(message["content"])
def submit_question(question: str):
st.session_state.messages.append({"role": "user", "content": question})
st.rerun()
# Khu vực nhập liệu của người dùng
if prompt := st.chat_input("Nhập câu hỏi của bạn..."):
# Thêm tin nhắn của người dùng vào session state và hiển thị ngay
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user", avatar="🧑💻"):
st.write(prompt)
with st.chat_message("assistant", avatar="🤖"):
with st.spinner("🤖 Tôi đang suy nghĩ, bạn chờ chút nhé..."):
try:
response = get_answer_with_rag(prompt)
st.markdown(response)
st.session_state.messages.append({"role": "assistant", "content": response})
except Exception as e:
error_message = "Rất tiếc, đã có lỗi xảy ra. Vui lòng thử lại sau!"
st.error(error_message)
st.session_state.messages.append({"role": "assistant", "content": error_message}) |