import streamlit as st import random from helpers import query_you_com, query_tavily, query_perplexity, query_brave import time # Set Streamlit to wide mode st.set_page_config(layout="wide") # Define the function to process the question def ProcessQuestion(question): # Randomly select two out of the four functions functions = [query_you_com, query_tavily, query_perplexity, query_brave] selected_functions = random.sample(functions, 2) # Get answers from the selected functions answer_a = selected_functions[0](question) answer_b = selected_functions[1](question) return answer_a, answer_b, selected_functions # Initialize session state if not already done if "results_displayed" not in st.session_state: st.session_state["results_displayed"] = False if "answer_a" not in st.session_state: st.session_state["answer_a"] = "" if "answer_b" not in st.session_state: st.session_state["answer_b"] = "" if "question" not in st.session_state: st.session_state["question"] = "" if "source_a" not in st.session_state: st.session_state["source_a"] = "" if "source_b" not in st.session_state: st.session_state["source_b"] = "" if "winner" not in st.session_state: st.session_state["winner"] = "" # Streamlit app layout st.title("Search Engine Agent Comparison") # Text box for user input with character limit question = st.text_area( "Enter your question here (max 1000 characters):", max_chars=1000 ) # Submit button submit_button = st.button("Submit") if submit_button: if question: if len(question) <= 1000: # Process the question and get answers answer_a, answer_b, selected_functions = ProcessQuestion(question) # Save answers and state to session state st.session_state["answer_a"] = answer_a st.session_state["answer_b"] = answer_b st.session_state["question"] = question st.session_state["source_a"] = selected_functions[0].__name__ st.session_state["source_b"] = selected_functions[1].__name__ st.session_state["results_displayed"] = True st.session_state["winner"] = "" else: st.error( "Your question exceeds the 1,000 character limit. Please shorten your question." ) else: st.error("Please enter a question.") # Display results if available in session state if st.session_state["results_displayed"]: button_col1, button_col2, button_col3, button_col4 = st.columns(4) def display_feedback(message): st.markdown( f'