rdisipio commited on
Commit
d0ff414
·
1 Parent(s): 8717674

preference button

Browse files
Files changed (1) hide show
  1. app.py +52 -4
app.py CHANGED
@@ -216,7 +216,14 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
216
  # Results container
217
  results_html = gr.HTML()
218
 
219
- # Preference buttons container
 
 
 
 
 
 
 
220
  preference_status = gr.Markdown()
221
 
222
  # Privacy footer
@@ -234,7 +241,11 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
234
  error_msg: gr.Markdown(value=f"⚠️ {error}", visible=True),
235
  input_section: gr.Column(visible=True),
236
  results_section: gr.Column(visible=False),
237
- results_state: []
 
 
 
 
238
  }
239
 
240
  # Build results HTML
@@ -253,15 +264,30 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
253
  </div>
254
  """
255
 
 
 
 
 
 
 
 
 
 
256
  return {
257
  error_msg: gr.Markdown(visible=False),
258
  input_section: gr.Column(visible=False),
259
  results_section: gr.Column(visible=True),
260
  question_display: gr.Markdown(value=question_info),
261
  results_html: gr.HTML(value=results_cards),
262
- results_state: results
 
263
  }
264
 
 
 
 
 
 
265
  def go_back():
266
  """Return to input screen"""
267
  return {
@@ -274,13 +300,35 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
274
  compare_btn.click(
275
  fn=show_results,
276
  inputs=[question_input, output_length] + model_checkboxes,
277
- outputs=[error_msg, input_section, results_section, question_display, results_html, results_state]
 
278
  )
279
 
280
  back_btn.click(
281
  fn=go_back,
282
  outputs=[input_section, results_section, error_msg]
283
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
 
285
  if __name__ == "__main__":
286
  demo.launch(css=custom_css)
 
216
  # Results container
217
  results_html = gr.HTML()
218
 
219
+ # Preference buttons - create up to 4 buttons (for max 4 models)
220
+ with gr.Column() as preference_buttons_section:
221
+ pref_btn_1 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
222
+ pref_btn_2 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
223
+ pref_btn_3 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
224
+ pref_btn_4 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
225
+
226
+ # Preference status
227
  preference_status = gr.Markdown()
228
 
229
  # Privacy footer
 
241
  error_msg: gr.Markdown(value=f"⚠️ {error}", visible=True),
242
  input_section: gr.Column(visible=True),
243
  results_section: gr.Column(visible=False),
244
+ results_state: [],
245
+ pref_btn_1: gr.Button(visible=False),
246
+ pref_btn_2: gr.Button(visible=False),
247
+ pref_btn_3: gr.Button(visible=False),
248
+ pref_btn_4: gr.Button(visible=False)
249
  }
250
 
251
  # Build results HTML
 
264
  </div>
265
  """
266
 
267
+ # Show buttons for each result
268
+ num_results = len(results)
269
+ btn_updates = {
270
+ pref_btn_1: gr.Button(value=f"This one works for me - {results[0]['model']}", visible=num_results >= 1) if num_results >= 1 else gr.Button(visible=False),
271
+ pref_btn_2: gr.Button(value=f"This one works for me - {results[1]['model']}", visible=num_results >= 2) if num_results >= 2 else gr.Button(visible=False),
272
+ pref_btn_3: gr.Button(value=f"This one works for me - {results[2]['model']}", visible=num_results >= 3) if num_results >= 3 else gr.Button(visible=False),
273
+ pref_btn_4: gr.Button(value=f"This one works for me - {results[3]['model']}", visible=num_results >= 4) if num_results >= 4 else gr.Button(visible=False),
274
+ }
275
+
276
  return {
277
  error_msg: gr.Markdown(visible=False),
278
  input_section: gr.Column(visible=False),
279
  results_section: gr.Column(visible=True),
280
  question_display: gr.Markdown(value=question_info),
281
  results_html: gr.HTML(value=results_cards),
282
+ results_state: results,
283
+ **btn_updates
284
  }
285
 
286
+ def record_preference(model_index):
287
+ """Record user preference for a specific model"""
288
+ # TODO: Implement preference recording logic
289
+ return f"✓ Preference recorded for model {model_index + 1}"
290
+
291
  def go_back():
292
  """Return to input screen"""
293
  return {
 
300
  compare_btn.click(
301
  fn=show_results,
302
  inputs=[question_input, output_length] + model_checkboxes,
303
+ outputs=[error_msg, input_section, results_section, question_display, results_html, results_state,
304
+ pref_btn_1, pref_btn_2, pref_btn_3, pref_btn_4]
305
  )
306
 
307
  back_btn.click(
308
  fn=go_back,
309
  outputs=[input_section, results_section, error_msg]
310
  )
311
+
312
+ # Preference button handlers
313
+ pref_btn_1.click(
314
+ fn=lambda: record_preference(0),
315
+ outputs=[preference_status]
316
+ )
317
+
318
+ pref_btn_2.click(
319
+ fn=lambda: record_preference(1),
320
+ outputs=[preference_status]
321
+ )
322
+
323
+ pref_btn_3.click(
324
+ fn=lambda: record_preference(2),
325
+ outputs=[preference_status]
326
+ )
327
+
328
+ pref_btn_4.click(
329
+ fn=lambda: record_preference(3),
330
+ outputs=[preference_status]
331
+ )
332
 
333
  if __name__ == "__main__":
334
  demo.launch(css=custom_css)