File size: 2,194 Bytes
e3bbd74
 
 
 
 
 
 
0fd1cb5
 
e3bbd74
0fd1cb5
 
 
 
 
 
e3bbd74
 
f3700d5
e3bbd74
f3700d5
 
0fd1cb5
e3bbd74
0fd1cb5
 
0123bc0
e3bbd74
0fd1cb5
e3bbd74
 
0fd1cb5
 
 
 
 
 
 
e3bbd74
0fd1cb5
 
 
 
36b54c8
0fd1cb5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
05dd597
0fd1cb5
 
 
 
e3bbd74
0fd1cb5
 
 
 
 
 
 
 
 
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
import streamlit as st
import os
from utils import *
import uuid



def main():
    st.title("Custom Chatbot")

    if 'OPENAI_API_KEY' not in st.session_state:
        st.session_state["OPENAI_API_KEY"]=''
    if "unique_id" not in st.session_state:
        st.session_state["unique_id"]=''
    if "bot_ready_flag" not in st.session_state:
        st.session_state["bot_ready_flag"]=''


    # st.sidebar.title("πŸ˜ŽπŸ—οΈ")

    # st.session_state["OPENAI_API_KEY"]=st.sidebar.text_input("Enter your API key?", type="password")
    # os.environ["OPENAI_API_KEY"] = st.session_state["OPENAI_API_KEY"]
    

    st.session_state["unique_id"] = uuid.uuid4().hex
    unique_id = st.session_state["unique_id"]
    os.environ["NAMESPACE"] = unique_id

    files = st.sidebar.file_uploader("Upload your file", type="pdf",accept_multiple_files=True)


    push_doc = st.sidebar.button("Push for bot to learn")
    if push_doc:
        st.session_state["bot_ready_flag"] = False
        # create doc out of provided pdf
        docs = create_docs(files,unique_id)
        global tiny_docs
        tiny_docs = split_docs(docs, chunk_size=500, chunk_overlap=40)

        # creating embeddings
        embedding = get_embeddings()

        with st.spinner("Wait! ChatBot is Learning βœ‹πŸ»"):
            push_to_pinecone(tiny_docs, embedding, os.environ.get("NAMESPACE"))
            st.session_state["bot_ready_flag"] = True



    st.subheader("Search Document..πŸ€–")

    global query
    query = st.text_area("Enter query here.. πŸ‘‡πŸ»", key='question')

    submit = st.button("Get Answer")

    if submit and st.session_state["bot_ready_flag"]==True:
        if query:
            # text embedding
            embedding = get_embeddings()

            # get similar docs
            with st.spinner("Generating Response"):
                response = get_answer(query, embedding, k=2)

                st.write(response)
            st.success("How was that?")
            
        
        else:
            st.error("You gotta be kidding me.. I really wish I could read your mind")
    elif submit:
        st.error("Provide the document first")
    


if __name__ == "__main__":
    main()