File size: 3,544 Bytes
0d0b7a7
 
 
 
 
 
 
 
 
f6eff85
 
0d0b7a7
 
 
 
 
 
 
 
 
 
 
 
 
f6eff85
 
 
0d0b7a7
 
 
 
 
 
 
 
 
 
 
 
a752901
0d0b7a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
from utils import *
import constants

# Creating Session State Variable
if 'HuggingFace_API_Key' not in st.session_state:
    st.session_state['HuggingFace_API_Key'] = ''
if 'Pinecone_API_Key' not in st.session_state:
    st.session_state['Pinecone_API_Key'] = ''
# if 'website_sitemap' not in st.session_state:
#     st.session_state['website_sitemap'] = ''

#
st.title('πŸ€– AI Assistance For Website')

# ********SIDE BAR Funtionality started*******

# Sidebar to capture the API keys
st.sidebar.title("πŸ˜ŽπŸ—οΈ")
st.session_state['HuggingFace_API_Key'] = st.sidebar.text_input(
    "What's your HuggingFace API key?", type="password")
st.session_state['Pinecone_API_Key'] = st.sidebar.text_input(
    "What's your Pinecone API key?", type="password")

st.session_state['website_sitemap'] = st.sidebar.text_input(
    "What's your sitemap url?", type="default")

load_button = st.sidebar.button("Load data to Pinecone", key="load_button")

# If the bove button is clicked, pushing the data to Pinecone...
if load_button:
    # Proceed only if API keys are provided
    if st.session_state['HuggingFace_API_Key'] != "" and st.session_state['Pinecone_API_Key'] != "":

        # Fetch data from site
        site_data = get_website_data(constants.WEBSITE_URL)
        st.write("Data pull done...")

        # Split data into chunks
        chunks_data = split_data(st.session_state['website_sitemap'])
        st.write("Spliting data done...")

        # Creating embeddings instance
        embeddings = create_embeddings()
        st.write("Embeddings instance creation done...")

        # Push data to Pinecone
        push_to_pinecone(st.session_state['Pinecone_API_Key'], constants.PINECONE_ENVIRONMENT,
                         constants.PINECONE_INDEX, embeddings, chunks_data)
        st.write("Pushing data to Pinecone done...")

        st.sidebar.success("Data pushed to Pinecone successfully!")
    else:
        st.sidebar.error("Ooopssss!!! Please provide API keys.....")

# ********SIDE BAR Funtionality ended*******

# Captures User Inputs
prompt = st.text_input('How can I help you my friend ❓',
                       key="prompt")  # The box for the text prompt
document_count = st.slider(
    'No.Of links to return πŸ”— - (0 LOW || 5 HIGH)', 0, 5, 2, step=1)

submit = st.button("Search")


if submit:
    # Proceed only if API keys are provided
    if st.session_state['HuggingFace_API_Key'] != "" and st.session_state['Pinecone_API_Key'] != "":

        # Creating embeddings instance
        embeddings = create_embeddings()
        st.write("Embeddings instance creation done...")

        # Pull index data from Pinecone
        index = pull_from_pinecone(
            st.session_state['Pinecone_API_Key'], constants.PINECONE_ENVIRONMENT, constants.PINECONE_INDEX, embeddings)
        st.write("Pinecone index retrieval done...")

        # Fetch relavant documents from Pinecone index
        relavant_docs = get_similar_docs(index, prompt, document_count)
        st.write(relavant_docs)

        # Displaying search results
        st.success("Please find the search results :")
        # Displaying search results
        st.write("search results list....")
        for document in relavant_docs:

            st.write("πŸ‘‰**Result : " + str(relavant_docs.index(document)+1)+"**")
            st.write("**Info**: "+document.page_content)
            st.write("**Link**: " + document.metadata['source'])

    else:
        st.sidebar.error("Ooopssss!!! Please provide API keys.....")