Spaces:
Sleeping
Sleeping
import streamlit as st | |
import random | |
import pandas as pd | |
from datetime import datetime | |
# Load or initialize CSVs for logging interactions and survey responses | |
try: | |
interactions_df = pd.read_csv("interactions.csv") | |
except FileNotFoundError: | |
interactions_df = pd.DataFrame(columns=["timestamp", "participant_id", "chatbot_type", "interaction", "response"]) | |
try: | |
survey_df = pd.read_csv("survey_responses.csv") | |
except FileNotFoundError: | |
survey_df = pd.DataFrame(columns=["timestamp", "participant_id", "chatbot_type", "emotional_response", "feedback"]) | |
# Initialize session state for participant assignment and interactions | |
if "participant_id" not in st.session_state: | |
st.session_state.participant_id = str(random.randint(1000, 9999)) | |
if "chatbot_type" not in st.session_state: | |
st.session_state.chatbot_type = random.choice(["Positive", "Critical"]) | |
if "idea_count" not in st.session_state: | |
st.session_state.idea_count = 0 | |
# Display Welcome Message | |
st.title("Welcome to the Chatbot Study") | |
st.write(""" | |
Thank you for participating in our study. You will interact with a chatbot | |
and brainstorm ideas for a marketing campaign. Please press "Start" below to begin. | |
""") | |
if st.button("Start Study") or "start" in st.session_state: | |
st.session_state.start = True | |
# Chatbot Interaction Section | |
if "start" in st.session_state: | |
st.subheader("Chatbot Interaction") | |
# Display participant information and assigned chatbot type | |
st.write(f"Participant ID: {st.session_state.participant_id}") | |
st.write(f"Assigned Chatbot Type: {st.session_state.chatbot_type}") | |
# Pre-programmed responses for each chatbot type | |
if st.session_state.chatbot_type == "Positive": | |
responses = [ | |
"Great idea! I love where you’re going with this.", | |
"Awesome suggestion! Here’s another thought: what if we add a new twist?", | |
"You're on fire! That’s a really promising direction.", | |
"Keep up the creativity! This is really going somewhere.", | |
] | |
else: | |
responses = [ | |
"I don’t think that will work very well. Maybe try something different?", | |
"Are you sure about that idea? It seems a bit weak.", | |
"This doesn’t sound very innovative. Try another angle.", | |
"Not quite there yet. What else do you have in mind?", | |
] | |
# User input for submitting an idea | |
user_input = st.text_input("Enter your idea here:") | |
if st.button("Submit Idea"): | |
if st.session_state.idea_count < 10: | |
response = random.choice(responses) | |
st.write(f"Chatbot: {response}") | |
# Record the interaction | |
interaction_data = { | |
"timestamp": datetime.now(), | |
"participant_id": st.session_state.participant_id, | |
"chatbot_type": st.session_state.chatbot_type, | |
"interaction": user_input, | |
"response": response | |
} | |
interactions_df = interactions_df.append(interaction_data, ignore_index=True) | |
interactions_df.to_csv("interactions.csv", index=False) | |
# Increment idea count | |
st.session_state.idea_count += 1 | |
st.write(f"Ideas Submitted: {st.session_state.idea_count}/10") | |
else: | |
st.warning("You have reached the maximum of 10 ideas.") | |
# Option to end interaction and proceed to the survey | |
if st.button("Proceed to Survey"): | |
st.session_state.end_interaction = True | |
# Survey Page | |
if "end_interaction" in st.session_state: | |
st.subheader("Post-Interaction Survey") | |
emotional_response = st.radio( | |
"How did interacting with the chatbot make you feel?", | |
("Very Positive", "Positive", "Neutral", "Negative", "Very Negative") | |
) | |
feedback = st.text_area("Any feedback on the chatbot interaction?") | |
if st.button("Submit Survey"): | |
# Record survey data | |
survey_data = { | |
"timestamp": datetime.now(), | |
"participant_id": st.session_state.participant_id, | |
"chatbot_type": st.session_state.chatbot_type, | |
"emotional_response": emotional_response, | |
"feedback": feedback | |
} | |
survey_df = survey_df.append(survey_data, ignore_index=True) | |
survey_df.to_csv("survey_responses.csv", index=False) | |
st.write("Thank you for completing the study! Your responses have been recorded.") | |