martin-gorner HF staff commited on
Commit
061118b
1 Parent(s): 4ef1969

added clear button

Browse files
Files changed (4) hide show
  1. app.py +79 -12
  2. chatstate.py +1 -1
  3. img/retry.png +0 -0
  4. img/trash.png +0 -0
app.py CHANGED
@@ -135,6 +135,7 @@ def instantiate_chatbot(sel, key):
135
  key=key,
136
  show_label=False,
137
  show_share_button=False,
 
138
  avatar_images=("img/usr.png", bot_icon_select(model_name)),
139
  )
140
 
@@ -156,6 +157,26 @@ def instantiate_arrow_button(route, text_route):
156
  return button
157
 
158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  def instantiate_text_box():
160
  return gr.Textbox(label="Your message:", submit_btn=True, key="msg")
161
 
@@ -169,13 +190,39 @@ def instantiate_additional_settings():
169
  return system_message
170
 
171
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  sel1 = instantiate_select_box(0, model_labels_list)
173
  sel2 = instantiate_select_box(1, model_labels_list)
174
  chatbot1 = instantiate_chatbot(sel1.value, "chat1")
175
  chatbot2 = instantiate_chatbot(sel2.value, "chat2")
176
 
177
  # to correctly align the left/right arrows
178
- CSS = ".elems_justif_right {align-items: end;}"
179
 
180
  with gr.Blocks(fill_width=True, title="Keras demo", css=CSS) as demo:
181
 
@@ -217,29 +264,49 @@ with gr.Blocks(fill_width=True, title="Keras demo", css=CSS) as demo:
217
  if route == TextRoute.BOTH:
218
  with gr.Row():
219
  msg = instantiate_text_box()
220
- with gr.Column(scale=0, min_width=40):
221
- instantiate_arrow_button(TextRoute.RIGHT, text_route)
222
- instantiate_arrow_button(TextRoute.LEFT, text_route)
 
 
 
 
 
 
 
 
 
 
223
 
224
  elif route == TextRoute.LEFT:
225
  with gr.Row():
226
  with gr.Column(scale=1):
227
  msg = instantiate_text_box()
228
  with gr.Column(scale=1):
229
- instantiate_arrow_button(TextRoute.RIGHT, text_route)
230
- instantiate_arrow_button(TextRoute.BOTH, text_route)
 
 
 
 
 
 
231
 
232
  elif route == TextRoute.RIGHT:
233
  with gr.Row():
234
- with gr.Column(scale=1, elem_classes="elems_justif_right"):
235
- instantiate_arrow_button(TextRoute.LEFT, text_route)
236
- instantiate_arrow_button(TextRoute.BOTH, text_route)
 
 
 
 
237
  with gr.Column(scale=1):
238
  msg = instantiate_text_box()
 
 
239
 
240
- with gr.Row():
241
- clear = gr.ClearButton([msg, chatbot1, chatbot2])
242
- system_message = instantiate_additional_settings()
243
 
244
  # Route the submitted message to the left, right or both chatbots
245
  if route == TextRoute.LEFT:
 
135
  key=key,
136
  show_label=False,
137
  show_share_button=False,
138
+ show_copy_all_button=True,
139
  avatar_images=("img/usr.png", bot_icon_select(model_name)),
140
  )
141
 
 
157
  return button
158
 
159
 
160
+ def instantiate_retry_button(route):
161
+ return gr.Button(
162
+ "",
163
+ size="sm",
164
+ scale=0,
165
+ min_width=40,
166
+ icon="img/retry.png",
167
+ )
168
+
169
+
170
+ def instantiate_trash_button():
171
+ return gr.Button(
172
+ "",
173
+ size="sm",
174
+ scale=0,
175
+ min_width=40,
176
+ icon="img/trash.png",
177
+ )
178
+
179
+
180
  def instantiate_text_box():
181
  return gr.Textbox(label="Your message:", submit_btn=True, key="msg")
182
 
 
190
  return system_message
191
 
192
 
193
+ def retry_fn(history):
194
+ if len(history) >= 2:
195
+ msg = history.pop(-1) # assistant message
196
+ msg = history.pop(-1) # user message
197
+ return msg["content"], history
198
+ else:
199
+ return gr.skip(), gr.skip()
200
+
201
+
202
+ def retry_fn_both(history1, history2):
203
+ msg1, history1 = retry_fn(history1)
204
+ msg2, history2 = retry_fn(history2)
205
+ if isinstance(msg1, str) and isinstance(msg2, str):
206
+ if msg1 == msg2:
207
+ msg = msg1
208
+ else:
209
+ msg = msg1 + " / " + msg2
210
+ elif isinstance(msg1, str):
211
+ msg = msg1
212
+ elif isinstance(msg2, str):
213
+ msg = msg2
214
+ else:
215
+ msg = msg1
216
+ return msg, history1, history2
217
+
218
+
219
  sel1 = instantiate_select_box(0, model_labels_list)
220
  sel2 = instantiate_select_box(1, model_labels_list)
221
  chatbot1 = instantiate_chatbot(sel1.value, "chat1")
222
  chatbot2 = instantiate_chatbot(sel2.value, "chat2")
223
 
224
  # to correctly align the left/right arrows
225
+ CSS = ".stick-to-the-right {align-items: end; justify-content: end}"
226
 
227
  with gr.Blocks(fill_width=True, title="Keras demo", css=CSS) as demo:
228
 
 
264
  if route == TextRoute.BOTH:
265
  with gr.Row():
266
  msg = instantiate_text_box()
267
+ with gr.Column(scale=0, min_width=100):
268
+ with gr.Row():
269
+ instantiate_arrow_button(TextRoute.LEFT, text_route)
270
+ retry = instantiate_retry_button(route)
271
+ with gr.Row():
272
+ instantiate_arrow_button(TextRoute.RIGHT, text_route)
273
+ trash = instantiate_trash_button()
274
+ retry.click(
275
+ retry_fn_both,
276
+ inputs=[chatbot1, chatbot2],
277
+ outputs=[msg, chatbot1, chatbot2],
278
+ )
279
+ trash.click(lambda: ("", [], []), outputs=[msg, chatbot1, chatbot2])
280
 
281
  elif route == TextRoute.LEFT:
282
  with gr.Row():
283
  with gr.Column(scale=1):
284
  msg = instantiate_text_box()
285
  with gr.Column(scale=1):
286
+ with gr.Row():
287
+ instantiate_arrow_button(TextRoute.RIGHT, text_route)
288
+ retry = instantiate_retry_button(route)
289
+ with gr.Row():
290
+ instantiate_arrow_button(TextRoute.BOTH, text_route)
291
+ trash = instantiate_trash_button()
292
+ retry.click(retry_fn, inputs=[chatbot1], outputs=[msg, chatbot1])
293
+ trash.click(lambda: ("", []), outputs=[msg, chatbot1])
294
 
295
  elif route == TextRoute.RIGHT:
296
  with gr.Row():
297
+ with gr.Column(scale=1, elem_classes="stick-to-the-right"):
298
+ with gr.Row(elem_classes="stick-to-the-right"):
299
+ retry = instantiate_retry_button(route)
300
+ instantiate_arrow_button(TextRoute.LEFT, text_route)
301
+ with gr.Row(elem_classes="stick-to-the-right"):
302
+ trash = instantiate_trash_button()
303
+ instantiate_arrow_button(TextRoute.BOTH, text_route)
304
  with gr.Column(scale=1):
305
  msg = instantiate_text_box()
306
+ retry.click(retry_fn, inputs=[chatbot2], outputs=[msg, chatbot2])
307
+ trash.click(lambda: ("", []), outputs=[msg, chatbot2])
308
 
309
+ system_message = instantiate_additional_settings()
 
 
310
 
311
  # Route the submitted message to the left, right or both chatbots
312
  if route == TextRoute.LEFT:
chatstate.py CHANGED
@@ -88,7 +88,7 @@ class ChatState:
88
  self.add_to_history_as_user(message)
89
  prompt = self.get_full_prompt()
90
  response = self.model.generate(
91
- prompt, max_length=1024, strip_prompt=True
92
  )
93
  self.add_to_history_as_model(response)
94
  return (message, response)
 
88
  self.add_to_history_as_user(message)
89
  prompt = self.get_full_prompt()
90
  response = self.model.generate(
91
+ prompt, max_length=2048, strip_prompt=True
92
  )
93
  self.add_to_history_as_model(response)
94
  return (message, response)
img/retry.png ADDED
img/trash.png ADDED