File size: 4,446 Bytes
bd2e0e7
 
 
1c101d7
 
bd2e0e7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1c101d7
bd2e0e7
 
 
 
 
2b3e43e
bd2e0e7
 
 
 
 
 
 
1c101d7
bd2e0e7
c95b10f
bd2e0e7
c95b10f
3514dd3
 
c95b10f
bd2e0e7
c95b10f
bd2e0e7
c95b10f
3514dd3
bd2e0e7
 
 
 
 
a00a7b7
 
bd2e0e7
c95b10f
 
 
 
 
bd2e0e7
 
 
 
 
6137438
 
2b3e43e
 
6137438
 
bd2e0e7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2b3e43e
 
 
bd2e0e7
 
 
 
 
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
import streamlit as st
from PIL import Image

from .constants import (QUERIES, PLAIN_GPT_ANS, GPT_WEB_RET_AUG_ANS, GPT_LOCAL_RET_AUG_ANS,
                        BUTTON_LOCAL_RET_AUG, BUTTON_WEB_RET_AUG)


def set_question():
    st.session_state['query'] = st.session_state['q_drop_down']


def set_q1():
    st.session_state['query'] = QUERIES[0]


def set_q2():
    st.session_state['query'] = QUERIES[1]


def set_q3():
    st.session_state['query'] = QUERIES[2]


def set_q4():
    st.session_state['query'] = QUERIES[3]


def set_q5():
    st.session_state['query'] = QUERIES[4]


def main_column():
    placeholder = st.empty()
    with placeholder:
        search_bar, button = st.columns([3, 1])
        with search_bar:
            _ = st.text_area(f" ", max_chars=200, key='query')

        with button:
            st.write(" ")
            st.write(" ")
            run_pressed = st.button("Run", key="run")

    st.write(" ")
    st.radio("Answer Type:", (BUTTON_LOCAL_RET_AUG, BUTTON_WEB_RET_AUG), key="query_type")

    st.markdown(f"<h5>{PLAIN_GPT_ANS}</h5>", unsafe_allow_html=True)
    placeholder_plain_gpt = st.empty()
    placeholder_plain_gpt.text_area(f" ", placeholder="The answer will appear here.", disabled=True,
                                    key=PLAIN_GPT_ANS, height=1, label_visibility='collapsed')
    if st.session_state.get("query_type", BUTTON_LOCAL_RET_AUG) == BUTTON_LOCAL_RET_AUG:
        st.markdown(f"<h5>{GPT_LOCAL_RET_AUG_ANS}</h5>", unsafe_allow_html=True)
    else:
        st.markdown(f"<h5>{GPT_WEB_RET_AUG_ANS}</h5>", unsafe_allow_html=True)
    placeholder_retrieval_augmented = st.empty()
    placeholder_retrieval_augmented.text_area(f" ", placeholder="The answer will appear here.", disabled=True,
                                              key=GPT_LOCAL_RET_AUG_ANS, height=1, label_visibility='collapsed')

    return run_pressed, placeholder_plain_gpt, placeholder_retrieval_augmented


def right_sidebar():
    st.write("")
    st.write("")
    st.markdown("<h5> Example questions </h5>", unsafe_allow_html=True)
    st.button(QUERIES[0], on_click=set_q1, use_container_width=True)
    st.button(QUERIES[1], on_click=set_q2, use_container_width=True)
    st.button(QUERIES[2], on_click=set_q3, use_container_width=True)
    st.button(QUERIES[3], on_click=set_q4, use_container_width=True)
    st.button(QUERIES[4], on_click=set_q5, use_container_width=True)


def left_sidebar():
    with st.sidebar:
        image = Image.open('logo/haystack-logo-colored.png')
        st.markdown("Thanks for coming to this :hugging_face: space. \n\n"
                    "This is an effort towards showcasing how you can use Haystack for Retrieval Augmented QA, "
                    "with local [FAISSDocumentStore](https://docs.haystack.deepset.ai/reference/document-store-api#faissdocumentstore)"
                    " or a [WebRetriever](https://docs.haystack.deepset.ai/docs/retriever#retrieval-from-the-web). \n\n"
                    "More information on how this was built and instructions along "
                    "with a repository will be published soon and updated here.")

        # st.markdown(
        #     "## How to use\n"
        #     "1. Enter your [OpenAI API key](https://platform.openai.com/account/api-keys) below\n"
        #     "2. Enter a Serper Dev API key\n"
        #     "3. Enjoy 🤗\n"
        # )

        # api_key_input = st.text_input(
        #     "OpenAI API Key",
        #     type="password",
        #     placeholder="Paste your OpenAI API key here (sk-...)",
        #     help="You can get your API key from https://platform.openai.com/account/api-keys.",
        #     value=st.session_state.get("OPENAI_API_KEY", ""),
        # )

        # if api_key_input:
        #     set_openai_api_key(api_key_input)

        st.markdown("---")
        st.markdown(
            "## How this works\n"
            "This app was built with [Haystack](https://haystack.deepset.ai) using the"
            " [PromptNode](https://docs.haystack.deepset.ai/docs/prompt_node), "
            "[Retriever](https://docs.haystack.deepset.ai/docs/retriever#embedding-retrieval-recommended),"
            "and [FAISSDocumentStore](https://docs.haystack.deepset.ai/reference/document-store-api#faissdocumentstore).\n\n"
            " You can find the source code in **Files and versions** tab."
        )

        st.markdown("---")
        st.image(image, width=250)