File size: 3,941 Bytes
448ed98 5bcad58 448ed98 5bcad58 448ed98 5bcad58 448ed98 5bcad58 448ed98 5bcad58 448ed98 5bcad58 448ed98 5bcad58 |
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 114 115 116 117 |
import streamlit as st
import pandas as pd
from io import StringIO
from qstn.survey_manager import SurveyCreator
from qstn.prompt_builder import LLMPrompt
st.set_page_config(layout="wide")
st.title("Questionnaire")
# Demo section showing expected CSV format
with st.expander("📋 View Example CSV Format", expanded=False):
demo_col1, demo_col2 = st.columns(2)
with demo_col1:
st.subheader("Questionnaire CSV Format")
st.write("**Required columns:** `questionnaire_item_id`, `question_content`, `question_stem`")
# Create example dataframe
example_questionnaire = pd.DataFrame({
'questionnaire_item_id': [1, 2, 3],
'question_content': ['Coffee', 'Pizza', 'Ice cream'],
'question_stem': [
'How do you feel about?',
'How do you feel about?',
'How do you feel about?'
]
})
st.write(example_questionnaire)
with demo_col2:
st.subheader("Population CSV Format")
st.write("**Required columns:** `questionnaire_name`, `system_prompt`, `questionnaire_instruction`")
# Create example dataframe
example_population = pd.DataFrame({
'questionnaire_name': ['Student', 'Teacher'],
'system_prompt': ['You are a student.', 'You are a teacher.'],
'questionnaire_instruction': [
'Please answer the following questions.',
'Please answer the following questions.'
]
})
st.write(example_population)
st.divider()
col1, col2 = st.columns(2)
# def save_dataframe(uploaded_file):
# try:
# df = pd.read_csv(uploaded_file)
# # Store the DataFrame in session state
# st.session_state.df = df
# except Exception as e:
# st.error(f"Error reading the file: {e}")
# return df
# Default example dataframes
default_questionnaire = pd.DataFrame({
'questionnaire_item_id': [1, 2, 3],
'question_content': ['Coffee', 'Pizza', 'Ice cream'],
'question_stem': [
'How do you feel about?',
'How do you feel about?',
'How do you feel about?'
]
})
default_population = pd.DataFrame({
'questionnaire_name': ['Student', 'Teacher'],
'system_prompt': ['You are a student.', 'You are a teacher.'],
'questionnaire_instruction': [
'Please answer the following questions.',
'Please answer the following questions.'
]
})
df_population = None
df_questionnaire = None
using_defaults = False
with col1:
uploaded_questionnaire = st.file_uploader("Select a questionnaire to start with")
if uploaded_questionnaire is not None:
df_questionnaire = pd.read_csv(uploaded_questionnaire)
st.write(df_questionnaire)
else:
# Use default if no file uploaded
df_questionnaire = default_questionnaire
using_defaults = True
st.info("ℹ️ Using example questionnaire. Upload a file to use your own data.")
st.write(df_questionnaire)
with col2:
uploaded_population = st.file_uploader("Select a population to start with")
if uploaded_population is not None:
df_population = pd.read_csv(uploaded_population)
st.write(df_population)
else:
# Use default if no file uploaded
df_population = default_population
using_defaults = True
st.info("ℹ️ Using example population. Upload a file to use your own data.")
st.write(df_population)
# Button is always enabled now (using defaults if no files uploaded)
disabled = False
st.divider()
if st.button("Confirm and Prepare Questionnaire", type="primary", disabled=disabled, use_container_width=True):
questionnaires: list[LLMPrompt] = SurveyCreator.from_dataframe(df_population, df_questionnaire)
st.session_state.questionnaires = questionnaires
st.switch_page("pages/01_Option_Prompt.py")
|