Spaces:
Sleeping
Sleeping
Upload app.py
Browse files
app.py
CHANGED
|
@@ -197,7 +197,7 @@ forms_questions = {
|
|
| 197 |
],
|
| 198 |
"Algorithmic Aversion": [
|
| 199 |
# Trust in LLM
|
| 200 |
-
{"question": "I trust the answers provided by AI chatbots (e.g., ChatGPT
|
| 201 |
{"question": "I feel confident relying on an AI chatbot for important tasks.", "options": ["Strongly Disagree", "Disagree", "Neutral", " Agree", "Strongly Agree"]},
|
| 202 |
{"question": "I worry that AI chatbots might give me incorrect information.", "options": ["Strongly Disagree", "Disagree", "Neutral", " Agree", "Strongly Agree"]},
|
| 203 |
|
|
@@ -266,7 +266,7 @@ def create_interface():
|
|
| 266 |
|
| 267 |
# New Forms Section
|
| 268 |
with gr.Column(visible=False, elem_id="forms_section") as forms_section:
|
| 269 |
-
gr.Markdown("##
|
| 270 |
gr.Markdown("Please answer the following questions to complete the study.")
|
| 271 |
form_radios = []
|
| 272 |
for form_name, questions in forms_questions.items():
|
|
@@ -299,8 +299,8 @@ def create_interface():
|
|
| 299 |
if next_key is None:
|
| 300 |
return {
|
| 301 |
id_section: gr.update(visible=True),
|
| 302 |
-
main_interface: gr.update(visible=False),
|
| 303 |
forms_section: gr.update(visible=False),
|
|
|
|
| 304 |
completion_section: gr.update(visible=False),
|
| 305 |
id_message: gr.update(value="The study is full. Thank you for your interest.", visible=True)
|
| 306 |
}
|
|
@@ -313,47 +313,47 @@ def create_interface():
|
|
| 313 |
state.selected_indices = assignments[assignment_key]
|
| 314 |
data = load_latest_data(prolific_id)
|
| 315 |
if data:
|
| 316 |
-
if state.forms_completed:
|
| 317 |
return {
|
| 318 |
id_section: gr.update(visible=False),
|
|
|
|
| 319 |
main_interface: gr.update(visible=False),
|
| 320 |
-
|
| 321 |
-
completion_section: gr.update(visible=True),
|
| 322 |
id_message: gr.update(value="", visible=False)
|
| 323 |
}
|
| 324 |
-
elif state.current_idx
|
| 325 |
return {
|
| 326 |
id_section: gr.update(visible=False),
|
| 327 |
-
|
| 328 |
-
|
| 329 |
completion_section: gr.update(visible=False),
|
| 330 |
-
id_message: gr.update(value="", visible=False)
|
|
|
|
| 331 |
}
|
| 332 |
else:
|
| 333 |
return {
|
| 334 |
id_section: gr.update(visible=False),
|
| 335 |
-
main_interface: gr.update(visible=True),
|
| 336 |
forms_section: gr.update(visible=False),
|
| 337 |
-
|
| 338 |
-
|
| 339 |
-
|
| 340 |
}
|
| 341 |
else:
|
| 342 |
state.annotations = [None] * 28
|
| 343 |
state.current_idx = 0
|
|
|
|
|
|
|
| 344 |
return {
|
| 345 |
id_section: gr.update(visible=False),
|
| 346 |
-
|
| 347 |
-
|
| 348 |
completion_section: gr.update(visible=False),
|
| 349 |
-
id_message: gr.update(value="", visible=False)
|
| 350 |
-
**update_interface(0)
|
| 351 |
}
|
| 352 |
-
|
| 353 |
# Updated update_interface to use selected_indices
|
| 354 |
def update_interface(current_idx):
|
| 355 |
if current_idx >= 28:
|
| 356 |
-
current_idx =
|
| 357 |
actual_idx = state.selected_indices[current_idx]
|
| 358 |
current_data = response_pairs[actual_idx]
|
| 359 |
progress = f"**Progress:** {current_idx/28:.0%} ({min(current_idx, 28)}/28)"
|
|
@@ -380,7 +380,6 @@ def create_interface():
|
|
| 380 |
gr.Warning(error_msg)
|
| 381 |
return {
|
| 382 |
main_interface: gr.update(visible=True),
|
| 383 |
-
forms_section: gr.update(visible=False),
|
| 384 |
completion_section: gr.update(visible=False),
|
| 385 |
**update_interface(state.current_idx)
|
| 386 |
}
|
|
@@ -404,14 +403,12 @@ def create_interface():
|
|
| 404 |
if new_idx >= 28:
|
| 405 |
return {
|
| 406 |
main_interface: gr.update(visible=False),
|
| 407 |
-
|
| 408 |
-
|
| 409 |
-
**update_interface(39) # Keep last question state
|
| 410 |
}
|
| 411 |
else:
|
| 412 |
return {
|
| 413 |
main_interface: gr.update(visible=True),
|
| 414 |
-
forms_section: gr.update(visible=False),
|
| 415 |
completion_section: gr.update(visible=False),
|
| 416 |
**update_interface(new_idx)
|
| 417 |
}
|
|
@@ -430,44 +427,48 @@ def create_interface():
|
|
| 430 |
# New function to handle form submission
|
| 431 |
def handle_forms_submit(*form_inputs):
|
| 432 |
if any(input_val is None for input_val in form_inputs):
|
| 433 |
-
gr.Warning("Please answer all questions before
|
| 434 |
return {
|
| 435 |
forms_section: gr.update(visible=True),
|
|
|
|
| 436 |
completion_section: gr.update(visible=False)
|
| 437 |
}
|
| 438 |
state.form_responses = {}
|
| 439 |
idx = 0
|
| 440 |
for form_name, questions in forms_questions.items():
|
| 441 |
for q in questions:
|
| 442 |
-
key = f"{form_name}_{q['question']}"
|
| 443 |
state.form_responses[key] = form_inputs[idx]
|
| 444 |
idx += 1
|
| 445 |
state.forms_completed = True
|
| 446 |
save_annotations()
|
|
|
|
| 447 |
return {
|
| 448 |
forms_section: gr.update(visible=False),
|
| 449 |
-
|
|
|
|
|
|
|
| 450 |
}
|
| 451 |
|
| 452 |
# Event bindings
|
| 453 |
id_submit_btn.click(
|
| 454 |
handle_id_submit,
|
| 455 |
inputs=prolific_id,
|
| 456 |
-
outputs=[id_section,
|
| 457 |
response_a, response_b, progress_md, feedback, confidence, selection_radio]
|
| 458 |
)
|
| 459 |
|
| 460 |
prev_btn.click(
|
| 461 |
handle_navigation,
|
| 462 |
inputs=[gr.State("prev"), selection_radio, confidence, feedback],
|
| 463 |
-
outputs=[main_interface,
|
| 464 |
response_b, progress_md, feedback, confidence, selection_radio]
|
| 465 |
)
|
| 466 |
|
| 467 |
next_btn.click(
|
| 468 |
handle_navigation,
|
| 469 |
inputs=[gr.State("next"), selection_radio, confidence, feedback],
|
| 470 |
-
outputs=[main_interface,
|
| 471 |
response_b, progress_md, feedback, confidence, selection_radio]
|
| 472 |
)
|
| 473 |
|
|
@@ -481,7 +482,8 @@ def create_interface():
|
|
| 481 |
submit_forms_btn.click(
|
| 482 |
handle_forms_submit,
|
| 483 |
inputs=form_radios,
|
| 484 |
-
outputs=[forms_section, completion_section
|
|
|
|
| 485 |
)
|
| 486 |
|
| 487 |
return demo
|
|
|
|
| 197 |
],
|
| 198 |
"Algorithmic Aversion": [
|
| 199 |
# Trust in LLM
|
| 200 |
+
{"question": "I trust the answers provided by AI chatbots (e.g., ChatGPT) to be accurate.", "options": ["Strongly Disagree", "Disagree", "Neutral", "Agree", "Strongly Agree"]},
|
| 201 |
{"question": "I feel confident relying on an AI chatbot for important tasks.", "options": ["Strongly Disagree", "Disagree", "Neutral", " Agree", "Strongly Agree"]},
|
| 202 |
{"question": "I worry that AI chatbots might give me incorrect information.", "options": ["Strongly Disagree", "Disagree", "Neutral", " Agree", "Strongly Agree"]},
|
| 203 |
|
|
|
|
| 266 |
|
| 267 |
# New Forms Section
|
| 268 |
with gr.Column(visible=False, elem_id="forms_section") as forms_section:
|
| 269 |
+
gr.Markdown("## Pre-Test Questions")
|
| 270 |
gr.Markdown("Please answer the following questions to complete the study.")
|
| 271 |
form_radios = []
|
| 272 |
for form_name, questions in forms_questions.items():
|
|
|
|
| 299 |
if next_key is None:
|
| 300 |
return {
|
| 301 |
id_section: gr.update(visible=True),
|
|
|
|
| 302 |
forms_section: gr.update(visible=False),
|
| 303 |
+
main_interface: gr.update(visible=False),
|
| 304 |
completion_section: gr.update(visible=False),
|
| 305 |
id_message: gr.update(value="The study is full. Thank you for your interest.", visible=True)
|
| 306 |
}
|
|
|
|
| 313 |
state.selected_indices = assignments[assignment_key]
|
| 314 |
data = load_latest_data(prolific_id)
|
| 315 |
if data:
|
| 316 |
+
if not state.forms_completed:
|
| 317 |
return {
|
| 318 |
id_section: gr.update(visible=False),
|
| 319 |
+
forms_section: gr.update(visible=True),
|
| 320 |
main_interface: gr.update(visible=False),
|
| 321 |
+
completion_section: gr.update(visible=False),
|
|
|
|
| 322 |
id_message: gr.update(value="", visible=False)
|
| 323 |
}
|
| 324 |
+
elif state.current_idx < 28:
|
| 325 |
return {
|
| 326 |
id_section: gr.update(visible=False),
|
| 327 |
+
forms_section: gr.update(visible=False),
|
| 328 |
+
main_interface: gr.update(visible=True),
|
| 329 |
completion_section: gr.update(visible=False),
|
| 330 |
+
id_message: gr.update(value="", visible=False),
|
| 331 |
+
**update_interface(state.current_idx)
|
| 332 |
}
|
| 333 |
else:
|
| 334 |
return {
|
| 335 |
id_section: gr.update(visible=False),
|
|
|
|
| 336 |
forms_section: gr.update(visible=False),
|
| 337 |
+
main_interface: gr.update(visible=False),
|
| 338 |
+
completion_section: gr.update(visible=True),
|
| 339 |
+
id_message: gr.update(value="", visible=False)
|
| 340 |
}
|
| 341 |
else:
|
| 342 |
state.annotations = [None] * 28
|
| 343 |
state.current_idx = 0
|
| 344 |
+
state.forms_completed = False
|
| 345 |
+
state.form_responses = {}
|
| 346 |
return {
|
| 347 |
id_section: gr.update(visible=False),
|
| 348 |
+
forms_section: gr.update(visible=True),
|
| 349 |
+
main_interface: gr.update(visible=False),
|
| 350 |
completion_section: gr.update(visible=False),
|
| 351 |
+
id_message: gr.update(value="", visible=False)
|
|
|
|
| 352 |
}
|
|
|
|
| 353 |
# Updated update_interface to use selected_indices
|
| 354 |
def update_interface(current_idx):
|
| 355 |
if current_idx >= 28:
|
| 356 |
+
current_idx = 27
|
| 357 |
actual_idx = state.selected_indices[current_idx]
|
| 358 |
current_data = response_pairs[actual_idx]
|
| 359 |
progress = f"**Progress:** {current_idx/28:.0%} ({min(current_idx, 28)}/28)"
|
|
|
|
| 380 |
gr.Warning(error_msg)
|
| 381 |
return {
|
| 382 |
main_interface: gr.update(visible=True),
|
|
|
|
| 383 |
completion_section: gr.update(visible=False),
|
| 384 |
**update_interface(state.current_idx)
|
| 385 |
}
|
|
|
|
| 403 |
if new_idx >= 28:
|
| 404 |
return {
|
| 405 |
main_interface: gr.update(visible=False),
|
| 406 |
+
completion_section: gr.update(visible=True),
|
| 407 |
+
**update_interface(27)
|
|
|
|
| 408 |
}
|
| 409 |
else:
|
| 410 |
return {
|
| 411 |
main_interface: gr.update(visible=True),
|
|
|
|
| 412 |
completion_section: gr.update(visible=False),
|
| 413 |
**update_interface(new_idx)
|
| 414 |
}
|
|
|
|
| 427 |
# New function to handle form submission
|
| 428 |
def handle_forms_submit(*form_inputs):
|
| 429 |
if any(input_val is None for input_val in form_inputs):
|
| 430 |
+
gr.Warning("Please answer all questions before proceeding.")
|
| 431 |
return {
|
| 432 |
forms_section: gr.update(visible=True),
|
| 433 |
+
main_interface: gr.update(visible=False),
|
| 434 |
completion_section: gr.update(visible=False)
|
| 435 |
}
|
| 436 |
state.form_responses = {}
|
| 437 |
idx = 0
|
| 438 |
for form_name, questions in forms_questions.items():
|
| 439 |
for q in questions:
|
| 440 |
+
key = f"{form_name}_{q['question']}"
|
| 441 |
state.form_responses[key] = form_inputs[idx]
|
| 442 |
idx += 1
|
| 443 |
state.forms_completed = True
|
| 444 |
save_annotations()
|
| 445 |
+
state.current_idx = 0
|
| 446 |
return {
|
| 447 |
forms_section: gr.update(visible=False),
|
| 448 |
+
main_interface: gr.update(visible=True),
|
| 449 |
+
completion_section: gr.update(visible=False),
|
| 450 |
+
**update_interface(0)
|
| 451 |
}
|
| 452 |
|
| 453 |
# Event bindings
|
| 454 |
id_submit_btn.click(
|
| 455 |
handle_id_submit,
|
| 456 |
inputs=prolific_id,
|
| 457 |
+
outputs=[id_section, forms_section, main_interface, completion_section, id_message, prompt_box,
|
| 458 |
response_a, response_b, progress_md, feedback, confidence, selection_radio]
|
| 459 |
)
|
| 460 |
|
| 461 |
prev_btn.click(
|
| 462 |
handle_navigation,
|
| 463 |
inputs=[gr.State("prev"), selection_radio, confidence, feedback],
|
| 464 |
+
outputs=[main_interface, completion_section, prompt_box, response_a,
|
| 465 |
response_b, progress_md, feedback, confidence, selection_radio]
|
| 466 |
)
|
| 467 |
|
| 468 |
next_btn.click(
|
| 469 |
handle_navigation,
|
| 470 |
inputs=[gr.State("next"), selection_radio, confidence, feedback],
|
| 471 |
+
outputs=[main_interface, completion_section, prompt_box, response_a,
|
| 472 |
response_b, progress_md, feedback, confidence, selection_radio]
|
| 473 |
)
|
| 474 |
|
|
|
|
| 482 |
submit_forms_btn.click(
|
| 483 |
handle_forms_submit,
|
| 484 |
inputs=form_radios,
|
| 485 |
+
outputs=[forms_section, main_interface, completion_section, prompt_box, response_a,
|
| 486 |
+
response_b, progress_md, feedback, confidence, selection_radio]
|
| 487 |
)
|
| 488 |
|
| 489 |
return demo
|