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"
{PLAIN_GPT_ANS}
", 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"
{GPT_LOCAL_RET_AUG_ANS}
", unsafe_allow_html=True) else: st.markdown(f"
{GPT_WEB_RET_AUG_ANS}
", 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("
Example questions
", 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)