import streamlit as st import pandas as pd # Sample Data (Replace with your actual data loading) data = { 'query_v': { 'gemini': 'Cheap European city break in February.', 'llama': 'Affordable European trip in February.', }, 'query_p0': { 'gemini': 'European city break in February, less crowded destinations.', 'llama': 'February European city break, away from the crowds.', }, 'query_p1': { 'gemini': 'Best European cities for intense physical training and recovery with easy access to ice rinks?', 'llama': 'Top European cities for intense training and recovery with ice rinks?', }, } # Sample rating data (Replace this with your actual data) rating_data = { 'gemini': { 'query_v': {'relevance': 'Not Relevant', 'clarity': 'Not Clear'}, 'query_p0': {'relevance': 'Not Relevant', 'clarity': 'Not Clear', 'persona_alignment': 'N/A'}, 'query_p1': {'relevance': 'N/A', 'clarity': 'N/A', 'persona_alignment': 'N/A'}, }, 'llama': { 'query_v': {'relevance': 'Somewhat Relevant', 'clarity': 'Somewhat Clear'}, 'query_p0': {'relevance': 'Somewhat Relevant', 'clarity': 'Somewhat Clear', 'persona_alignment': 'Partially Aligned'}, 'query_p1': {'relevance': 'Not Relevant', 'clarity': 'Not Clear', 'persona_alignment': 'Not Aligned'}, } } df = pd.DataFrame.from_dict(data) # Function to display query, rating, and controls for one query def display_query_section(query_type, query_text_gemini, query_text_llama, relevance_gemini, clarity_gemini, relevance_llama, clarity_llama, persona_alignment_gemini=None, persona_alignment_llama=None): st.subheader(f"{query_type}") col1, col2 = st.columns(2) with col1: st.markdown("Gemini") st.write(query_text_gemini) st.markdown("Relevance") relevance_options = ['N/A', 'Not Relevant', 'Somewhat Relevant', 'Relevant', 'Unclear'] selected_relevance_gemini = st.radio("Relevance", options = relevance_options, key=f"relevance_{query_type}_gemini", index=relevance_options.index(relevance_gemini), horizontal=True) st.markdown("Clarity") clarity_options = ['N/A', 'Not Clear', 'Somewhat Clear', 'Very Clear'] selected_clarity_gemini = st.radio("Clarity", options = clarity_options, key=f"clarity_{query_type}_gemini", index=clarity_options.index(clarity_gemini), horizontal=True) if persona_alignment_gemini: st.markdown("Persona Alignment") persona_options = ['N/A', 'Not Aligned', 'Partially Aligned', 'Aligned', 'Unclear'] selected_persona_alignment_gemini = st.radio("Persona Alignment", options = persona_options, key=f"persona_{query_type}_gemini", index=persona_options.index(persona_alignment_gemini), horizontal=True) with col2: st.markdown("Llama") st.write(query_text_llama) st.markdown("Relevance") relevance_options_llama = ['N/A', 'Not Relevant', 'Somewhat Relevant', 'Relevant', 'Unclear'] selected_relevance_llama = st.radio("Relevance", options = relevance_options_llama, key=f"relevance_{query_type}_llama", index=relevance_options_llama.index(relevance_llama), horizontal=True) st.markdown("Clarity") clarity_options_llama = ['N/A', 'Not Clear', 'Somewhat Clear', 'Very Clear'] selected_clarity_llama = st.radio("Clarity", options = clarity_options_llama, key=f"clarity_{query_type}_llama", index=clarity_options_llama.index(clarity_llama), horizontal=True) if persona_alignment_llama: st.markdown("Persona Alignment") persona_options_llama = ['N/A', 'Not Aligned', 'Partially Aligned', 'Aligned', 'Unclear'] selected_persona_alignment_llama = st.radio("Persona Alignment", options = persona_options_llama, key=f"persona_{query_type}_llama", index=persona_options_llama.index(persona_alignment_llama), horizontal=True) # Main Streamlit App st.set_page_config(layout="wide") # Context Information st.title("Question 1 of 5") st.subheader("Config ID: c_p_0_pop_low_easy") st.markdown("### Context Information") with st.expander("Persona", expanded=True): st.write("A top-scoring player in the local league who is also eyeing a professional career in the NHL") with st.expander("Filters & Cities", expanded=True): st.write("Filters: {'popularity': 'low', 'month': 'February'}") st.write("Cities: ['Adana', 'Adiyaman', 'Agri', 'Arad', 'Arkhangelsk', 'Bacau', 'Baia Mare', 'Balikesir', 'Brest',\ 'Burgas', 'Canakkale', 'Craiova', 'Debrecen', 'Denizli', 'Diyarbakir', 'Elazig', 'Erzincan', 'Eskisehir',\ 'Gaziantep', 'lasi', 'Ioannina', 'Isparta', 'Jonkoping', 'Kahramanmaras', 'Kars', 'Kayseri', 'Konya', 'Kosice',\ 'Linkoping', 'Malatya', 'Miskolc', 'Mykolaiv', 'Nalchik', 'Nevsehir', 'Nis', 'Orebro', 'Orleans', 'Rivne',\ 'Rzeszow', 'Samsun', 'Sanliurfa', 'Sevilla', 'Siirt', 'Sivas', 'Syktyvkar', 'Targu-Mures', 'Tekirdag',\ 'Thessaloniki', 'Trabzon', 'Uzhhorod', 'Valladolid', 'Van', 'Vasteras', 'Vinnytsia', 'Vitoria-Gasteiz',\ 'Vladikavkaz', 'Zaporizhzhia', 'Zielona Gora', 'Batman', 'Erzurum']") # Display Query Sections display_query_section( query_type="Query_v", query_text_gemini=df.loc['gemini','query_v'], query_text_llama=df.loc['llama','query_v'], relevance_gemini=rating_data['gemini']['query_v']['relevance'], clarity_gemini=rating_data['gemini']['query_v']['clarity'], relevance_llama=rating_data['llama']['query_v']['relevance'], clarity_llama=rating_data['llama']['query_v']['clarity'], ) display_query_section( query_type="Query_p0", query_text_gemini=df.loc['gemini','query_p0'], query_text_llama=df.loc['llama','query_p0'], relevance_gemini=rating_data['gemini']['query_p0']['relevance'], clarity_gemini=rating_data['gemini']['query_p0']['clarity'], persona_alignment_gemini=rating_data['gemini']['query_p0']['persona_alignment'], relevance_llama=rating_data['llama']['query_p0']['relevance'], clarity_llama=rating_data['llama']['query_p0']['clarity'], persona_alignment_llama=rating_data['llama']['query_p0']['persona_alignment'], ) display_query_section( query_type="Query_p1", query_text_gemini=df.loc['gemini','query_p1'], query_text_llama=df.loc['llama','query_p1'], relevance_gemini=rating_data['gemini']['query_p1']['relevance'], clarity_gemini=rating_data['gemini']['query_p1']['clarity'], persona_alignment_gemini=rating_data['gemini']['query_p1']['persona_alignment'], relevance_llama=rating_data['llama']['query_p1']['relevance'], clarity_llama=rating_data['llama']['query_p1']['clarity'], persona_alignment_llama=rating_data['llama']['query_p1']['persona_alignment'], ) # Additional Comments st.markdown("Additional Comments (Optional):") st.text_area("", key="additional_comments") # Navigation Buttons col1, col2, col3 = st.columns([1,1,1]) with col1: st.button("Back") with col2: st.button("Next") with col3: st.button("Exit & Resume Later") # Bottom message st.markdown("Please provide a rating before proceeding.")