File size: 2,369 Bytes
6bc88c9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# --------------------------------------- CHATBOT------------------------------------------------

import streamlit as st

def cache_clear(x):
    if st.sidebar.button("Reset Chat History",use_container_width=True):
        x.clear()

#from recommendationSystem.chatbot.client_module.api import ask_question
from recommendationSystem.chatbot.server_modules.llm import get_llm_chain
from recommendationSystem.chatbot.server_modules.load_vector_store import use_vectorstore
from recommendationSystem.chatbot.server_modules.query_handler import query_chain


def chatbot():
    vectorstore = use_vectorstore()
    chain = get_llm_chain(vectorstore)
    url = "https://raw.githubusercontent.com/Zenith40/Recommendation-system/refs/heads/main/data/anime_data_7490.txt"

    if "messages" not in st.session_state:
            st.session_state.messages = []
            
    with st.sidebar:
        
        st.title("πŸ₯ RARE AT YOUR SERVICE ")
        st.write("RAG-based Anime Recommendation Engine")

        # Input and response
        user_input = st.chat_input(placeholder="Ask Anything")
        cache_clear(st.session_state.messages)
        
        if user_input:
            #response = ask_question(user_input)
            #if response.status_code == 200:
            response=query_chain(chain,user_input=user_input)
            #data = response.json()
            answer = response["response"]
            #sources = response.get("sources",[])
            #st.chat_message("assistant").markdown(answer)
            st.session_state.messages.insert(0,{"role": "assistant", "content": answer})
            st.session_state.messages.insert(0,{"role": "user", "content": user_input})
            st.markdown(f"πŸ“„ Source : [Anime_Data.txt](%s)" %url)
            #else:
                #st.error(f"Error: {response.text}")

            # Render existing chat history
            for msg in st.session_state.messages:
                st.chat_message(msg["role"]).markdown(msg["content"])
         

# History Downloader

def render_history_download():
    if st.session_state.get("message"):
        chat_text="\n\n".join([f"{m['role'].upper()}: {m['content']}" for m in st.session_state.messages])
        st.download_button("Download Chat History",chat_text,file_name="chat_history.txt",mime="text/plain")