import streamlit as st from backend_utils import (get_plain_pipeline, get_retrieval_augmented_pipeline, get_web_retrieval_augmented_pipeline, set_q1, set_q2, set_q3, set_q4, set_q5, QUERIES) st.set_page_config( page_title="Retrieval Augmentation with Haystack", ) st.markdown("

Reduce Hallucinations with Retrieval Augmentation

", unsafe_allow_html=True) st.markdown("Ask a question about the collapse of the Silicon Valley Bank (SVB).", unsafe_allow_html=True) # if not st.session_state.get('pipelines_loaded', False): # with st.spinner('Loading pipelines... \n This may take a few mins and might also fail if OpenAI API server is down.'): # p1, p2, p3 = app_init() # st.success('Pipelines are loaded', icon="✅") # st.session_state['pipelines_loaded'] = True placeholder = st.empty() with placeholder: search_bar, button = st.columns([3, 1]) with search_bar: username = st.text_area(f" ", max_chars=200, key='query') with button: st.write(" ") st.write(" ") run_pressed = st.button("Run") st.markdown("
Example questions
", unsafe_allow_html=True) st.write(" ") st.write(" ") c1, c2, c3, c4, c5 = st.columns(5) with c1: st.button(QUERIES[0], on_click=set_q1) with c2: st.button(QUERIES[1], on_click=set_q2) with c3: st.button(QUERIES[2], on_click=set_q3) with c4: st.button(QUERIES[3], on_click=set_q4) with c5: st.button(QUERIES[4], on_click=set_q5) st.write(" ") st.radio("Answer Type:", ("Retrieval Augmented (Static news dataset)", "Retrieval Augmented with Web Search"), key="query_type") # st.sidebar.selectbox( # "Example Questions:", # QUERIES, # key='q_drop_down', on_change=set_question) st.markdown("
Answer with GPT's Internal Knowledge
", unsafe_allow_html=True) placeholder_plain_gpt = st.empty() st.text(" ") st.text(" ") st.markdown(f"
Answer with {st.session_state['query_type']}
", unsafe_allow_html=True) placeholder_retrieval_augmented = st.empty() if st.session_state.get('query') and run_pressed: input = st.session_state['query'] with st.spinner('Loading pipelines... \n This may take a few mins and might also fail if OpenAI API server is down.'): p1 = get_plain_pipeline() with st.spinner('Fetching answers from GPT\'s internal knowledge... ' '\n This may take a few mins and might also fail if OpenAI API server is down.'): answers = p1.run(input) placeholder_plain_gpt.markdown(answers['results'][0]) if st.session_state.get("query_type", "Retrieval Augmented") == "Retrieval Augmented": with st.spinner( 'Loading Retrieval Augmented pipeline... \ n This may take a few mins and might also fail if OpenAI API server is down.'): p2 = get_retrieval_augmented_pipeline() with st.spinner('Fetching relevant documents from documented stores and calculating answers... ' '\n This may take a few mins and might also fail if OpenAI API server is down.'): answers_2 = p2.run(input) else: p3 = get_web_retrieval_augmented_pipeline() answers_2 = p3.run(input) placeholder_retrieval_augmented.markdown(answers_2['results'][0])