File size: 4,053 Bytes
8705444
 
 
 
 
 
909f926
8705444
 
 
 
909f926
 
 
 
 
 
 
 
 
 
 
 
8705444
909f926
 
 
8705444
 
909f926
 
 
 
 
 
 
 
 
8705444
909f926
 
 
 
 
 
 
8705444
909f926
 
 
 
 
 
 
 
8705444
 
 
909f926
8705444
909f926
8705444
909f926
 
8705444
 
 
909f926
 
8705444
909f926
8705444
 
 
 
 
909f926
8705444
909f926
 
 
 
8705444
 
 
 
 
 
 
909f926
 
 
 
 
 
 
 
 
 
8705444
909f926
 
 
8705444
909f926
 
 
8705444
 
909f926
 
8705444
909f926
8705444
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import sys
sys.path.append("/home/ece/hdd/divyanshu/Bihar")

from model import get_llm, CustomLLM
from langchain import PromptTemplate
from langchain.chains.conversation.prompt import ENTITY_MEMORY_CONVERSATION_TEMPLATE, DEFAULT_TEMPLATE
from langchain.chains.conversation.memory import ConversationEntityMemory
from langchain.chains import ConversationChain
import streamlit as st



st.set_page_config(page_title='Bihar Now & Then', layout='wide')

if "generated" not in st.session_state:
    st.session_state["generated"] = []
if "past" not in st.session_state:
    st.session_state["past"] = []
if "input" not in st.session_state:
    st.session_state["input"] = ""
if "stored_session" not in st.session_state:
    st.session_state["stored_session"] = []


def get_text():

    input_text = st.text_input("You: ", st.session_state["input"], key="input",
                               placeholder="Ask me anything related to Bihar ...",
                               label_visibility='hidden')
    return input_text

def new_chat():
    """
    Clears session state and starts a new chat.
    """
    save = []
    for i in range(len(st.session_state['generated'])-1, -1, -1):
        save.append("User:" + st.session_state["past"][i])
        save.append("Bot:" + st.session_state["generated"][i])
    st.session_state["stored_session"].append(save)
    st.session_state["generated"] = []
    st.session_state["past"] = []
    st.session_state["input"] = ""
    st.session_state.entity_memory.entity_store = {}
    st.session_state.entity_memory.buffer.clear()


# Set up sidebar with various options
with st.sidebar.expander("🛠️ ", expanded=False):
    if st.checkbox("Preview memory store"):
        with st.expander("Memory-Store", expanded=False):
            st.session_state.entity_memory.store
    if st.checkbox("Preview memory buffer"):
        with st.expander("Bufffer-Store", expanded=False):
            st.session_state.entity_memory.buffer
    MODEL = st.selectbox(label='Model', options=["databricks/dolly-v2-3b"])
    K = st.number_input(' (#)Summary of prompts to consider',
                        min_value=3, max_value=1000)

st.subheader("Bihar Now Then")

model_name = "t5-large"
pinecone_index = "bert-large-uncased"
llm = "databricks/dolly-v2-3b"
llm_chain, docsearch= get_llm(model_name, pinecone_index, llm)

llm = CustomLLM()
# Create a ConversationEntityMemory object if not already created
if 'entity_memory' not in st.session_state:
    st.session_state.entity_memory = ConversationEntityMemory(llm=llm, k=K)

Conversation = ConversationChain(
    llm=llm,
    prompt=ENTITY_MEMORY_CONVERSATION_TEMPLATE,
    memory=st.session_state.entity_memory
)

st.sidebar.button("New Chat", on_click=new_chat, type='primary')

user_input = get_text()

if user_input:
    context = docsearch.similarity_search(user_input, k=3, metadata=False)
    content = ""
    for i in context:
        content = content + f"{i.__dict__['page_content']}"
    output = Conversation.run(entities=content, input=user_input)
    st.session_state.past.append(user_input)
    st.session_state.generated.append(output)

# Allow to download as well
download_str = []

with st.expander("Conversation", expanded=True):
    for i in range(len(st.session_state['generated'])-1, -1, -1):
        st.info(st.session_state["past"][i])
        st.success(st.session_state["generated"][i])
        download_str.append(st.session_state["past"][i])
        download_str.append(st.session_state["generated"][i])

    # Can throw error - requires fix
    download_str = '\n'.join(download_str)
    if download_str:
        st.download_button('Download', download_str)

# Display stored conversation sessions in the sidebar
for i, sublist in enumerate(st.session_state.stored_session):
    with st.sidebar.expander(label=f"Conversation-Session:{i}"):
        st.write(sublist)

# Allow the user to clear all stored conversation sessions
if st.session_state.stored_session:
    if st.sidebar.checkbox("Clear-all"):
        del st.session_state.stored_session