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

preference button

Browse files
Files changed (1) hide show
  1. app.py +46 -30
app.py CHANGED
@@ -213,14 +213,18 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
213
  # Display question info
214
  question_display = gr.Markdown()
215
 
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
@@ -242,45 +246,56 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
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
252
  question_info = f"**Your question:** {question} \n**Answer length:** {output_length}"
253
 
254
- results_cards = ""
255
- for result in results:
256
- model = result["model"]
257
- response = result["response"]
258
-
259
- results_cards += f"""
260
- <div class="model-card">
261
- <div class="model-title">{model}</div>
262
- <div class="answer-length">{output_length} answer</div>
263
- <div class="response-text">{response}</div>
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):
@@ -300,8 +315,9 @@ with gr.Blocks(title="Multi-Model LLM Comparison Tool") as demo:
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(
 
213
  # Display question info
214
  question_display = gr.Markdown()
215
 
216
+ # Results with integrated buttons
217
+ with gr.Column() as results_container:
218
+ result_card_1 = gr.HTML(visible=False)
 
 
219
  pref_btn_1 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
220
+
221
+ result_card_2 = gr.HTML(visible=False)
222
  pref_btn_2 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
223
+
224
+ result_card_3 = gr.HTML(visible=False)
225
  pref_btn_3 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
226
+
227
+ result_card_4 = gr.HTML(visible=False)
228
  pref_btn_4 = gr.Button("This one works for me", elem_classes="preference-button", visible=False)
229
 
230
  # Preference status
 
246
  input_section: gr.Column(visible=True),
247
  results_section: gr.Column(visible=False),
248
  results_state: [],
249
+ result_card_1: gr.HTML(visible=False),
250
  pref_btn_1: gr.Button(visible=False),
251
+ result_card_2: gr.HTML(visible=False),
252
  pref_btn_2: gr.Button(visible=False),
253
+ result_card_3: gr.HTML(visible=False),
254
  pref_btn_3: gr.Button(visible=False),
255
+ result_card_4: gr.HTML(visible=False),
256
  pref_btn_4: gr.Button(visible=False)
257
  }
258
 
259
+ # Build results
260
  question_info = f"**Your question:** {question} \n**Answer length:** {output_length}"
261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
  num_results = len(results)
263
+
264
+ # Create individual card HTML and button updates
265
+ card_updates = {}
266
+ btn_updates = {}
267
+
268
+ for i in range(4):
269
+ if i < num_results:
270
+ model = results[i]["model"]
271
+ response = results[i]["response"]
272
+ card_html = f"""
273
+ <div class="model-card">
274
+ <div class="model-title">{model}</div>
275
+ <div class="answer-length">{output_length} answer</div>
276
+ <div class="response-text">{response}</div>
277
+ </div>
278
+ """
279
+ card_updates[f"result_card_{i+1}"] = gr.HTML(value=card_html, visible=True)
280
+ btn_updates[f"pref_btn_{i+1}"] = gr.Button(value=f"This one works for me - {model}", visible=True)
281
+ else:
282
+ card_updates[f"result_card_{i+1}"] = gr.HTML(visible=False)
283
+ btn_updates[f"pref_btn_{i+1}"] = gr.Button(visible=False)
284
 
285
  return {
286
  error_msg: gr.Markdown(visible=False),
287
  input_section: gr.Column(visible=False),
288
  results_section: gr.Column(visible=True),
289
  question_display: gr.Markdown(value=question_info),
 
290
  results_state: results,
291
+ result_card_1: card_updates["result_card_1"],
292
+ pref_btn_1: btn_updates["pref_btn_1"],
293
+ result_card_2: card_updates["result_card_2"],
294
+ pref_btn_2: btn_updates["pref_btn_2"],
295
+ result_card_3: card_updates["result_card_3"],
296
+ pref_btn_3: btn_updates["pref_btn_3"],
297
+ result_card_4: card_updates["result_card_4"],
298
+ pref_btn_4: btn_updates["pref_btn_4"]
299
  }
300
 
301
  def record_preference(model_index):
 
315
  compare_btn.click(
316
  fn=show_results,
317
  inputs=[question_input, output_length] + model_checkboxes,
318
+ outputs=[error_msg, input_section, results_section, question_display, results_state,
319
+ result_card_1, pref_btn_1, result_card_2, pref_btn_2,
320
+ result_card_3, pref_btn_3, result_card_4, pref_btn_4]
321
  )
322
 
323
  back_btn.click(