|
import streamlit as st
|
|
import os
|
|
|
|
from embedding import load_embeddings
|
|
from vectorstore import load_or_build_vectorstore
|
|
from chain_setup import build_conversational_chain
|
|
|
|
def main():
|
|
st.title("💬 المحادثة التفاعلية - إدارة البيانات وحماية البيانات الشخصية")
|
|
|
|
|
|
st.markdown(
|
|
"""
|
|
<style>
|
|
.rtl {
|
|
direction: rtl;
|
|
text-align: right;
|
|
}
|
|
</style>
|
|
""",
|
|
unsafe_allow_html=True
|
|
)
|
|
|
|
|
|
local_file = "Policies001.pdf"
|
|
index_folder = "faiss_index"
|
|
|
|
|
|
embeddings = load_embeddings()
|
|
|
|
|
|
vectorstore = load_or_build_vectorstore(local_file, index_folder, embeddings)
|
|
|
|
|
|
qa_chain = build_conversational_chain(vectorstore)
|
|
|
|
|
|
if "messages" not in st.session_state:
|
|
st.session_state["messages"] = [
|
|
{"role": "assistant", "content": "👋 مرحبًا! اسألني أي شيء عن إدارة البيانات وحماية البيانات الشخصية!"}
|
|
]
|
|
|
|
|
|
for msg in st.session_state["messages"]:
|
|
with st.chat_message(msg["role"]):
|
|
st.markdown(f'<div class="rtl">{msg["content"]}</div>', unsafe_allow_html=True)
|
|
|
|
|
|
user_input = st.chat_input("اكتب سؤالك هنا")
|
|
|
|
if user_input:
|
|
|
|
st.session_state["messages"].append({"role": "user", "content": user_input})
|
|
with st.chat_message("user"):
|
|
st.markdown(f'<div class="rtl">{user_input}</div>', unsafe_allow_html=True)
|
|
|
|
|
|
response = qa_chain({"question": user_input})
|
|
answer = response["answer"]
|
|
|
|
|
|
st.session_state["messages"].append({"role": "assistant", "content": answer})
|
|
with st.chat_message("assistant"):
|
|
st.markdown(f'<div class="rtl">{answer}</div>', unsafe_allow_html=True)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|