rdisipio commited on
Commit
b895ad7
·
1 Parent(s): e68c34b

preference button

Browse files
Files changed (1) hide show
  1. app.py +46 -24
app.py CHANGED
@@ -251,16 +251,24 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
251
  # Results with integrated buttons
252
  with gr.Column() as results_container:
253
  result_card_1 = gr.Markdown(visible=False, elem_classes="model-card")
254
- pref_btn_1 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
 
 
255
 
256
  result_card_2 = gr.Markdown(visible=False, elem_classes="model-card")
257
- pref_btn_2 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
 
 
258
 
259
  result_card_3 = gr.Markdown(visible=False, elem_classes="model-card")
260
- pref_btn_3 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
 
 
261
 
262
  result_card_4 = gr.Markdown(visible=False, elem_classes="model-card")
263
- pref_btn_4 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
 
 
264
 
265
  # Preference status
266
  preference_status = gr.Markdown()
@@ -283,12 +291,16 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
283
  results_state: [],
284
  result_card_1: gr.Markdown(visible=False),
285
  pref_btn_1: gr.Button(visible=False),
 
286
  result_card_2: gr.Markdown(visible=False),
287
  pref_btn_2: gr.Button(visible=False),
 
288
  result_card_3: gr.Markdown(visible=False),
289
  pref_btn_3: gr.Button(visible=False),
 
290
  result_card_4: gr.Markdown(visible=False),
291
- pref_btn_4: gr.Button(visible=False)
 
292
  }
293
 
294
  # Build results
@@ -299,6 +311,7 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
299
  # Create individual card HTML and button updates
300
  card_updates = {}
301
  btn_updates = {}
 
302
 
303
  for i in range(4):
304
  if i < num_results:
@@ -313,9 +326,11 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
313
  {response}"""
314
  card_updates[f"result_card_{i+1}"] = gr.Markdown(value=card_content, visible=True)
315
  btn_updates[f"pref_btn_{i+1}"] = gr.Button(value=f"This one works for me - {model}", visible=True)
 
316
  else:
317
  card_updates[f"result_card_{i+1}"] = gr.Markdown(visible=False)
318
  btn_updates[f"pref_btn_{i+1}"] = gr.Button(visible=False)
 
319
 
320
  return {
321
  error_msg: gr.Markdown(visible=False),
@@ -325,15 +340,19 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
325
  results_state: results,
326
  result_card_1: card_updates["result_card_1"],
327
  pref_btn_1: btn_updates["pref_btn_1"],
 
328
  result_card_2: card_updates["result_card_2"],
329
  pref_btn_2: btn_updates["pref_btn_2"],
 
330
  result_card_3: card_updates["result_card_3"],
331
  pref_btn_3: btn_updates["pref_btn_3"],
 
332
  result_card_4: card_updates["result_card_4"],
333
- pref_btn_4: btn_updates["pref_btn_4"]
 
334
  }
335
 
336
- def record_preference(model_index, question, output_length, results):
337
  """Record user preference for a specific model"""
338
  if not results or model_index >= len(results):
339
  return {
@@ -346,13 +365,14 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
346
  # Get selected model info
347
  selected_model = results[model_index]["model"]
348
 
349
- # Save preference using storage function with all results
350
- save_preference_to_storage(
351
- question=question,
352
- output_length=output_length,
353
- selected_model=selected_model,
354
- all_results=results
355
- )
 
356
 
357
  # Return to input screen with cleared question and unchecked models
358
  return {
@@ -376,8 +396,10 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
376
  fn=show_results,
377
  inputs=[question_input, output_length] + model_checkboxes,
378
  outputs=[error_msg, input_section, results_section, question_display, results_state,
379
- result_card_1, pref_btn_1, result_card_2, pref_btn_2,
380
- result_card_3, pref_btn_3, result_card_4, pref_btn_4]
 
 
381
  )
382
 
383
  back_btn.click(
@@ -387,26 +409,26 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
387
 
388
  # Preference button handlers
389
  pref_btn_1.click(
390
- fn=lambda q, ol, r: record_preference(0, q, ol, r),
391
- inputs=[question_input, output_length, results_state],
392
  outputs=[input_section, results_section, error_msg, question_input] + model_checkboxes
393
  )
394
 
395
  pref_btn_2.click(
396
- fn=lambda q, ol, r: record_preference(1, q, ol, r),
397
- inputs=[question_input, output_length, results_state],
398
  outputs=[input_section, results_section, error_msg, question_input] + model_checkboxes
399
  )
400
 
401
  pref_btn_3.click(
402
- fn=lambda q, ol, r: record_preference(2, q, ol, r),
403
- inputs=[question_input, output_length, results_state],
404
  outputs=[input_section, results_section, error_msg, question_input] + model_checkboxes
405
  )
406
 
407
  pref_btn_4.click(
408
- fn=lambda q, ol, r: record_preference(3, q, ol, r),
409
- inputs=[question_input, output_length, results_state],
410
  outputs=[input_section, results_section, error_msg, question_input] + model_checkboxes
411
  )
412
 
 
251
  # Results with integrated buttons
252
  with gr.Column() as results_container:
253
  result_card_1 = gr.Markdown(visible=False, elem_classes="model-card")
254
+ with gr.Row():
255
+ pref_btn_1 = gr.Button("This one works for me", elem_classes="preference-button", visible=False, scale=4)
256
+ dont_save_1 = gr.Checkbox(label="Don't save", value=False, visible=False, scale=1)
257
 
258
  result_card_2 = gr.Markdown(visible=False, elem_classes="model-card")
259
+ with gr.Row():
260
+ pref_btn_2 = gr.Button("This one works for me", elem_classes="preference-button", visible=False, scale=4)
261
+ dont_save_2 = gr.Checkbox(label="Don't save", value=False, visible=False, scale=1)
262
 
263
  result_card_3 = gr.Markdown(visible=False, elem_classes="model-card")
264
+ with gr.Row():
265
+ pref_btn_3 = gr.Button("This one works for me", elem_classes="preference-button", visible=False, scale=4)
266
+ dont_save_3 = gr.Checkbox(label="Don't save", value=False, visible=False, scale=1)
267
 
268
  result_card_4 = gr.Markdown(visible=False, elem_classes="model-card")
269
+ with gr.Row():
270
+ pref_btn_4 = gr.Button("This one works for me", elem_classes="preference-button", visible=False, scale=4)
271
+ dont_save_4 = gr.Checkbox(label="Don't save", value=False, visible=False, scale=1)
272
 
273
  # Preference status
274
  preference_status = gr.Markdown()
 
291
  results_state: [],
292
  result_card_1: gr.Markdown(visible=False),
293
  pref_btn_1: gr.Button(visible=False),
294
+ dont_save_1: gr.Checkbox(visible=False),
295
  result_card_2: gr.Markdown(visible=False),
296
  pref_btn_2: gr.Button(visible=False),
297
+ dont_save_2: gr.Checkbox(visible=False),
298
  result_card_3: gr.Markdown(visible=False),
299
  pref_btn_3: gr.Button(visible=False),
300
+ dont_save_3: gr.Checkbox(visible=False),
301
  result_card_4: gr.Markdown(visible=False),
302
+ pref_btn_4: gr.Button(visible=False),
303
+ dont_save_4: gr.Checkbox(visible=False)
304
  }
305
 
306
  # Build results
 
311
  # Create individual card HTML and button updates
312
  card_updates = {}
313
  btn_updates = {}
314
+ checkbox_updates = {}
315
 
316
  for i in range(4):
317
  if i < num_results:
 
326
  {response}"""
327
  card_updates[f"result_card_{i+1}"] = gr.Markdown(value=card_content, visible=True)
328
  btn_updates[f"pref_btn_{i+1}"] = gr.Button(value=f"This one works for me - {model}", visible=True)
329
+ checkbox_updates[f"dont_save_{i+1}"] = gr.Checkbox(visible=True, value=False)
330
  else:
331
  card_updates[f"result_card_{i+1}"] = gr.Markdown(visible=False)
332
  btn_updates[f"pref_btn_{i+1}"] = gr.Button(visible=False)
333
+ checkbox_updates[f"dont_save_{i+1}"] = gr.Checkbox(visible=False)
334
 
335
  return {
336
  error_msg: gr.Markdown(visible=False),
 
340
  results_state: results,
341
  result_card_1: card_updates["result_card_1"],
342
  pref_btn_1: btn_updates["pref_btn_1"],
343
+ dont_save_1: checkbox_updates["dont_save_1"],
344
  result_card_2: card_updates["result_card_2"],
345
  pref_btn_2: btn_updates["pref_btn_2"],
346
+ dont_save_2: checkbox_updates["dont_save_2"],
347
  result_card_3: card_updates["result_card_3"],
348
  pref_btn_3: btn_updates["pref_btn_3"],
349
+ dont_save_3: checkbox_updates["dont_save_3"],
350
  result_card_4: card_updates["result_card_4"],
351
+ pref_btn_4: btn_updates["pref_btn_4"],
352
+ dont_save_4: checkbox_updates["dont_save_4"]
353
  }
354
 
355
+ def record_preference(model_index, question, output_length, results, dont_save):
356
  """Record user preference for a specific model"""
357
  if not results or model_index >= len(results):
358
  return {
 
365
  # Get selected model info
366
  selected_model = results[model_index]["model"]
367
 
368
+ # Save preference using storage function with all results (only if dont_save is False)
369
+ if not dont_save:
370
+ save_preference_to_storage(
371
+ question=question,
372
+ output_length=output_length,
373
+ selected_model=selected_model,
374
+ all_results=results
375
+ )
376
 
377
  # Return to input screen with cleared question and unchecked models
378
  return {
 
396
  fn=show_results,
397
  inputs=[question_input, output_length] + model_checkboxes,
398
  outputs=[error_msg, input_section, results_section, question_display, results_state,
399
+ result_card_1, pref_btn_1, dont_save_1,
400
+ result_card_2, pref_btn_2, dont_save_2,
401
+ result_card_3, pref_btn_3, dont_save_3,
402
+ result_card_4, pref_btn_4, dont_save_4]
403
  )
404
 
405
  back_btn.click(
 
409
 
410
  # Preference button handlers
411
  pref_btn_1.click(
412
+ fn=lambda q, ol, r, ds: record_preference(0, q, ol, r, ds),
413
+ inputs=[question_input, output_length, results_state, dont_save_1],
414
  outputs=[input_section, results_section, error_msg, question_input] + model_checkboxes
415
  )
416
 
417
  pref_btn_2.click(
418
+ fn=lambda q, ol, r, ds: record_preference(1, q, ol, r, ds),
419
+ inputs=[question_input, output_length, results_state, dont_save_2],
420
  outputs=[input_section, results_section, error_msg, question_input] + model_checkboxes
421
  )
422
 
423
  pref_btn_3.click(
424
+ fn=lambda q, ol, r, ds: record_preference(2, q, ol, r, ds),
425
+ inputs=[question_input, output_length, results_state, dont_save_3],
426
  outputs=[input_section, results_section, error_msg, question_input] + model_checkboxes
427
  )
428
 
429
  pref_btn_4.click(
430
+ fn=lambda q, ol, r, ds: record_preference(3, q, ol, r, ds),
431
+ inputs=[question_input, output_length, results_state, dont_save_4],
432
  outputs=[input_section, results_section, error_msg, question_input] + model_checkboxes
433
  )
434