sergiopaniego HF Staff commited on
Commit
6e145af
·
verified ·
1 Parent(s): 44c04c7

Parse markdown responses (#4)

Browse files

- Added markdown rendering and improving UI (2b408f3cc7285795f4e06f971e6257a2280042cd)

Files changed (3) hide show
  1. app.py +20 -9
  2. requirements.txt +1 -0
  3. utils.py +9 -8
app.py CHANGED
@@ -33,39 +33,50 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
33
  current_html = gr.State(value="")
34
 
35
  def load_initial(model, category):
 
36
  html = display_model_responses_html(evaluation_data, responses, model, start_index=0, batch_size=5, category=category)
37
- return html, 5, html
 
 
38
 
39
  def load_more(model, index, html_so_far, category):
 
 
40
  new_html = display_model_responses_html(evaluation_data, responses, model, start_index=index, batch_size=5, category=category)
41
  updated_html = html_so_far + new_html
42
- return updated_html, index + 5, updated_html
 
 
 
 
 
43
 
 
 
44
  selected_model.change(
45
  load_initial,
46
  inputs=[selected_model, model_category],
47
- outputs=[model_output, current_index, current_html]
48
  )
49
  model_category.change(
50
  load_initial,
51
  inputs=[selected_model, model_category],
52
- outputs=[model_output, current_index, current_html]
53
  )
54
 
55
  demo.load(
56
  load_initial,
57
  inputs=[selected_model, model_category],
58
- outputs=[model_output, current_index, current_html]
59
  )
60
-
61
-
62
- more_button = gr.Button("Load more")
63
  more_button.click(
64
  load_more,
65
  inputs=[selected_model, current_index, current_html, model_category],
66
- outputs=[model_output, current_index, current_html]
67
  )
68
 
 
69
  with gr.Column(visible=False) as example_mode:
70
  category = gr.Dropdown(
71
  choices=list(set(ex["category"] for ex in evaluation_data)),
 
33
  current_html = gr.State(value="")
34
 
35
  def load_initial(model, category):
36
+ filtered_data = [ex for ex in evaluation_data if ex["category"] == category]
37
  html = display_model_responses_html(evaluation_data, responses, model, start_index=0, batch_size=5, category=category)
38
+ has_more = 5 < len(filtered_data)
39
+ return html, 5, html, gr.update(visible=has_more)
40
+
41
 
42
  def load_more(model, index, html_so_far, category):
43
+ filtered_data = [ex for ex in evaluation_data if ex["category"] == category]
44
+
45
  new_html = display_model_responses_html(evaluation_data, responses, model, start_index=index, batch_size=5, category=category)
46
  updated_html = html_so_far + new_html
47
+
48
+ new_index = index + 5
49
+ has_more = new_index < len(filtered_data)
50
+
51
+ return updated_html, new_index, updated_html, gr.update(visible=has_more)
52
+
53
 
54
+ more_button = gr.Button("Load more")
55
+
56
  selected_model.change(
57
  load_initial,
58
  inputs=[selected_model, model_category],
59
+ outputs=[model_output, current_index, current_html, more_button]
60
  )
61
  model_category.change(
62
  load_initial,
63
  inputs=[selected_model, model_category],
64
+ outputs=[model_output, current_index, current_html, more_button]
65
  )
66
 
67
  demo.load(
68
  load_initial,
69
  inputs=[selected_model, model_category],
70
+ outputs=[model_output, current_index, current_html, more_button]
71
  )
72
+
 
 
73
  more_button.click(
74
  load_more,
75
  inputs=[selected_model, current_index, current_html, model_category],
76
+ outputs=[model_output, current_index, current_html, more_button]
77
  )
78
 
79
+
80
  with gr.Column(visible=False) as example_mode:
81
  category = gr.Dropdown(
82
  choices=list(set(ex["category"] for ex in evaluation_data)),
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ markdown
utils.py CHANGED
@@ -1,5 +1,6 @@
1
  import base64
2
  import time
 
3
 
4
  from io import BytesIO
5
 
@@ -13,7 +14,6 @@ def get_examples_by_category(evaluation_data, category):
13
  return [ex["id"] for ex in evaluation_data if ex["category"] == category]
14
 
15
  def display_model_responses_html(evaluation_data, responses, model, start_index=0, batch_size=5, category=None):
16
- start_time = time.time()
17
  html = ""
18
 
19
  if category is not None:
@@ -24,10 +24,10 @@ def display_model_responses_html(evaluation_data, responses, model, start_index=
24
  for ex in filtered_data[start_index:start_index + batch_size]:
25
  image_thumbnail = ex["image_thumbnail"]
26
  image_full_url = ex["image_full_url"]
27
- img_id = ex["id"]
28
  prompt = ex["prompt"]
29
- response = responses[model].get(ex["id"], "(No response)")
30
  category = ex["category"]
 
 
31
 
32
  html += f"""
33
  <div style="display: flex; margin-bottom: 20px; align-items: flex-start;">
@@ -41,15 +41,16 @@ def display_model_responses_html(evaluation_data, responses, model, start_index=
41
  <strong style="color: var(--body-text-color);">Category:</strong> {category}</p>
42
  <p style="margin: 0 0 10px; font-size: 16px;">
43
  <strong style="color: var(--body-text-color);">Prompt:</strong> {prompt}</p>
44
- <p style="margin: 0; font-size: 16px;">
45
- <strong style="color: var(--body-text-color);">Response:</strong> {response}</p>
 
 
 
 
46
  </div>
47
  </div>
48
  <hr/>
49
  """
50
- elapsed_time = time.time() - start_time
51
- print(f"[TRACE] display_model_responses_html took {elapsed_time:.3f} seconds for {batch_size} items")
52
-
53
  return html
54
 
55
 
 
1
  import base64
2
  import time
3
+ import markdown
4
 
5
  from io import BytesIO
6
 
 
14
  return [ex["id"] for ex in evaluation_data if ex["category"] == category]
15
 
16
  def display_model_responses_html(evaluation_data, responses, model, start_index=0, batch_size=5, category=None):
 
17
  html = ""
18
 
19
  if category is not None:
 
24
  for ex in filtered_data[start_index:start_index + batch_size]:
25
  image_thumbnail = ex["image_thumbnail"]
26
  image_full_url = ex["image_full_url"]
 
27
  prompt = ex["prompt"]
 
28
  category = ex["category"]
29
+ raw_response = responses[model].get(ex["id"], "(No response)")
30
+ response_html = markdown.markdown(raw_response, extensions=['fenced_code', 'codehilite'])
31
 
32
  html += f"""
33
  <div style="display: flex; margin-bottom: 20px; align-items: flex-start;">
 
41
  <strong style="color: var(--body-text-color);">Category:</strong> {category}</p>
42
  <p style="margin: 0 0 10px; font-size: 16px;">
43
  <strong style="color: var(--body-text-color);">Prompt:</strong> {prompt}</p>
44
+ <div style="margin-top: 10px;">
45
+ <strong style="color: var(--body-text-color);">Response:</strong>
46
+ <div style="margin-top: 4px; font-size: 15px; color: var(--body-text-color);">
47
+ {response_html}
48
+ </div>
49
+ </div>
50
  </div>
51
  </div>
52
  <hr/>
53
  """
 
 
 
54
  return html
55
 
56