nachoremer commited on
Commit
acfa594
·
1 Parent(s): 798686c
Files changed (1) hide show
  1. app.py +88 -42
app.py CHANGED
@@ -165,31 +165,33 @@ Here is the story:
165
 
166
  def send_multiple_selected_story(title, models, system_prompt):
167
  global model_history
 
168
  resp_list = []
169
- for model in all_models:
 
 
 
170
  if model in models:
171
-
172
  #respuesta consulta,
173
- resp, context, story = send_selected_story(title, model, system_prompt)
174
-
175
  try:
176
  print(resp)
177
- resp_list.append(gr.Chatbot(value=[resp], type='messages'))
178
  except gr.exceptions.Error:
179
  print(f"error for en modelo {model}")
180
  else:
181
  try:
182
- resp_list.append(gr.Chatbot(value=None, type='messages', visible=False))
183
  except gr.exceptions.Error:
184
  print(f"error, else en modelo {model}")
185
 
186
  try:
187
- main_output = gr.Chatbot(value=context, type='messages')
188
  except gr.exceptions.Error:
189
  print(f"error en main output\n {context}")
190
- radio = gr.Radio(choices= models +["user_input"], label="to continue..", value=models[0])
191
- return main_output, resp_list[0], resp_list[1], resp_list[2], resp_list[3], models, story, radio
192
-
193
 
194
  #inputs=[user_input, chatbot_main_output, model_checkbox, chat_radio, assistant_user_input, chatbot_resp[0], chatbot_resp[1], chatbot_resp[2], chatbot_resp[3]],# interaction_count],
195
 
@@ -203,31 +205,44 @@ def remove_metadata(json_array):
203
  return json_aux
204
 
205
 
206
- def multiple_interact(query, history, models, selected_model, assistant_user_input, chat1, chat2,chat3, chat4): #, interaction_count)
 
 
207
  print(f'chat_checkbox: {selected_model}')
208
  resp_list = []
209
  print(model_history)
 
210
 
211
  if selected_model == "user_input":
212
  history.append({"role": "assistant", "content": assistant_user_input})
213
  history.append({"role": "user", "content": query})
214
 
215
  else:
216
- chats = [chat1, chat2, chat3, chat4]
 
217
  #get the previous answer of the selected model
218
- for model in models:
219
- if model == selected_model:
220
- selected_model_history = chats[models.index(model)]
221
  print(f"selected_model_history: {selected_model_history}")
222
- history.append(selected_model_history[0])
223
  history.append({"role": "user","content": query.strip()})
 
 
 
 
 
224
  aux_history = remove_metadata(history)
225
  #print(aux_history)
226
 
227
- for model in all_models:
 
 
 
228
  if model in models:
229
  response = interact_groq(aux_history, model).strip()
230
  resp_list.append(gr.Chatbot(value=[{"role": "assistant", "content": response}], type='messages'))
 
231
  else:
232
  resp_list.append(gr.Chatbot(value=None, type='messages', visible=False))
233
 
@@ -235,7 +250,7 @@ def multiple_interact(query, history, models, selected_model, assistant_user_inp
235
  model_history.append(selected_model)
236
  print(model_history)
237
 
238
- return main_output, resp_list[0], resp_list[1], resp_list[2], resp_list[3],
239
 
240
 
241
 
@@ -250,9 +265,36 @@ def change_textbox(checkbox):
250
  else:
251
  return gr.Textbox(value="", visible=False)
252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
 
254
- chatbot_resp = []
 
 
 
 
255
  model_list = list(all_models.keys())
 
 
 
256
  # Create the chat interface using Gradio Blocks
257
  with gr.Blocks() as demo:
258
  with gr.Tabs():
@@ -290,29 +332,30 @@ with gr.Blocks() as demo:
290
  with gr.TabItem("Multiple Evaluation"):
291
  with gr.Group():
292
  #model_dropdown = gr.Dropdown(choices=list(all_models.keys()), label="Select Model", value=default_model_name)
293
- model_checkbox = gr.CheckboxGroup(choices=list(all_models.keys()), label="Select Model", value=[model_list[0], model_list[1]]) #value=[default_model_name])
294
  user_dropdown = gr.Dropdown(choices=user_names, label="Select User Name")
295
- initial_story = stories[0]["title"] if stories else None
296
  story_dropdown = gr.Dropdown(choices=[story["title"] for story in stories], label="Select Story", value=initial_story)
297
  system_prompt_dropdown = gr.Dropdown(choices=system_prompts, label="Select System Prompt", value=system_prompts[0])
298
  send_multiple_story_button = gr.Button("Send Story")
299
 
300
  gr.Markdown("## Chat")
301
  with gr.Group():
302
- selected_story_textbox = gr.Textbox(label="Selected Story", lines=10, interactive=False)
303
  #aqui armar una ventana x cada modelo seleccionado
304
- chatbot_main_output = gr.Chatbot(label="Chat History", type='messages')
305
  with gr.Row():
306
- #for i, model in enumerate(model_list):
307
- # label = f"Model {alphabet[i % len(alphabet)]}"
308
- # aux = gr.Chatbot(label=label, visible=True, type='messages')
309
- # chatbot_resp.append(aux)
310
 
311
- for model in randomize_key_order(model_list):
312
- aux = gr.Chatbot(label=f"Model {model}", visible=True, type='messages')
313
- chatbot_resp.append(aux)
 
314
  user_input = gr.Textbox(placeholder="Type your message here...", label="User Input")
315
- chat_radio = gr.Radio(choices=list(model_list)+["user_input"], label="Sent something to continue...", value=[model_list[0]])
 
316
  #elegir respuesta primero, luego enviar mensaje
317
  assistant_user_input = gr.Textbox(interactive=True, show_copy_button=True, visible=False)
318
  send_multiple_message_button = gr.Button("Send")
@@ -335,13 +378,16 @@ with gr.Blocks() as demo:
335
  #save_button.click(fn=save_comment_score, inputs=[chatbot_output, score_input, comment_input, story_dropdown, user_dropdown, system_prompt_dropdown], outputs=[data_table, comment_input])
336
 
337
  chat_radio.change(fn=change_textbox, inputs=chat_radio, outputs=assistant_user_input)
 
 
 
338
 
339
  send_multiple_story_button.click(
340
  fn=send_multiple_selected_story,
341
  inputs=[story_dropdown, model_checkbox, system_prompt_dropdown],
342
- outputs=[chatbot_main_output, chatbot_resp[0], chatbot_resp[1], chatbot_resp[2], chatbot_resp[3], model_checkbox, selected_story_textbox, chat_radio],
343
  )
344
-
345
  #Tengo que cambiar para que los modelos responan solo las respuestas y no todo el historial
346
  #preciso las historias previas de cada una
347
  #el modelo que se haya elegido
@@ -349,16 +395,16 @@ with gr.Blocks() as demo:
349
  #luego retorno:
350
  #en
351
 
352
- send_multiple_message_button.click(
353
- fn=multiple_interact,
354
- inputs=[user_input, chatbot_main_output, model_checkbox, chat_radio, assistant_user_input, chatbot_resp[0], chatbot_resp[1], chatbot_resp[2], chatbot_resp[3]],# interaction_count],
355
- outputs=[chatbot_main_output, chatbot_resp[0], chatbot_resp[1], chatbot_resp[2], chatbot_resp[3]],
356
- )
357
 
358
  #quiza tenga que guardar una variable con los valores de los checkbox
359
- save_button_multievaluation.click(
360
- fn=save_comment_score,
361
- inputs=[chatbot_main_output, score_input, comment_input, story_dropdown, user_dropdown, system_prompt_dropdown, model_checkbox],
362
- outputs=[data_table, comment_input])
363
 
364
  demo.launch()
 
165
 
166
  def send_multiple_selected_story(title, models, system_prompt):
167
  global model_history
168
+ global chatbot_aswser_list
169
  resp_list = []
170
+ print(models)
171
+ #iterate over words
172
+ shuffle_models = randomize_key_order(all_models)
173
+ for index, model in enumerate(shuffle_models):
174
  if model in models:
 
175
  #respuesta consulta,
176
+ resp, context, _ = send_selected_story(title, model, system_prompt)
177
+ chatbot_aswser_list[alphabet[index]] = {'response': resp, 'model': model}
178
  try:
179
  print(resp)
180
+ resp_list.append(gr.Chatbot(value=[resp], visible=True, type='messages'))
181
  except gr.exceptions.Error:
182
  print(f"error for en modelo {model}")
183
  else:
184
  try:
185
+ resp_list.append(gr.Chatbot(type='messages', visible=False))
186
  except gr.exceptions.Error:
187
  print(f"error, else en modelo {model}")
188
 
189
  try:
190
+ resp_list.insert(0, gr.Chatbot(value=context, type='messages'))
191
  except gr.exceptions.Error:
192
  print(f"error en main output\n {context}")
193
+ #return main_output, resp_list[0], resp_list[1], resp_list[2], resp_list[3], models, story,
194
+ return resp_list
 
195
 
196
  #inputs=[user_input, chatbot_main_output, model_checkbox, chat_radio, assistant_user_input, chatbot_resp[0], chatbot_resp[1], chatbot_resp[2], chatbot_resp[3]],# interaction_count],
197
 
 
205
  return json_aux
206
 
207
 
208
+ # dont know the correct model beacuse it shuffles each time
209
+ #selected model it's only the index in radio input
210
+ def multiple_interact(query, history, models, selected_model, assistant_user_input): #, interaction_count)
211
  print(f'chat_checkbox: {selected_model}')
212
  resp_list = []
213
  print(model_history)
214
+ #quito history ahora es una variable global
215
 
216
  if selected_model == "user_input":
217
  history.append({"role": "assistant", "content": assistant_user_input})
218
  history.append({"role": "user", "content": query})
219
 
220
  else:
221
+ #chats = [chat1, chat2, chat3, chat4]
222
+ #chatbot_aswser_list
223
  #get the previous answer of the selected model
224
+ for index, model in enumerate(models):
225
+ if alphabet[index] == selected_model:
226
+ selected_model_history = chatbot_aswser_list[selected_model]['response']
227
  print(f"selected_model_history: {selected_model_history}")
228
+ history.append(selected_model_history)
229
  history.append({"role": "user","content": query.strip()})
230
+
231
+ #save to csv
232
+ selected_model_history = {} #reset history
233
+
234
+
235
  aux_history = remove_metadata(history)
236
  #print(aux_history)
237
 
238
+
239
+ #shuffle all models then iterate over them
240
+ shuffle_models = randomize_key_order(all_models)
241
+ for index, model in enumerate(shuffle_models):
242
  if model in models:
243
  response = interact_groq(aux_history, model).strip()
244
  resp_list.append(gr.Chatbot(value=[{"role": "assistant", "content": response}], type='messages'))
245
+ chatbot_aswser_list[alphabet[index]] = {'response': response, 'model': model}
246
  else:
247
  resp_list.append(gr.Chatbot(value=None, type='messages', visible=False))
248
 
 
250
  model_history.append(selected_model)
251
  print(model_history)
252
 
253
+ return resp_list
254
 
255
 
256
 
 
265
  else:
266
  return gr.Textbox(value="", visible=False)
267
 
268
+ def change_checkbox(checkbox):
269
+ print(f'checkbox: {checkbox}')
270
+
271
+ #luego cuando sean variables
272
+ global active_models
273
+ active_models = checkbox
274
+ quant_models = len(checkbox)
275
+ words = [alphabet[i] for i in range(quant_models)]
276
+ checkbox = gr.Radio(label="Select Model to respond...", choices=words+["user_input"])
277
+ #checkbox = gr.Radio(label="Select Model to respond...", choices=checkbox+["user_input"])
278
+ return checkbox
279
+
280
+ def change_story(story_title, ret="gradio"):
281
+ for story in stories:
282
+ if story["title"] == story_title:
283
+ if ret== "gradio":
284
+ return gr.Textbox(label="Selected Story", lines=10, interactive=False, value=story["story"])
285
+ else: #"string"
286
+ return story["story"]
287
+ return gr.Textbox(label="Error", lines=10, interactive=False, value="Story title does not match.")
288
 
289
+
290
+
291
+
292
+
293
+ chatbot_list = []
294
  model_list = list(all_models.keys())
295
+ active_models = []
296
+ #chatbot_answer_list['model'] = "respuesta aqui"
297
+ chatbot_aswser_list = {}
298
  # Create the chat interface using Gradio Blocks
299
  with gr.Blocks() as demo:
300
  with gr.Tabs():
 
332
  with gr.TabItem("Multiple Evaluation"):
333
  with gr.Group():
334
  #model_dropdown = gr.Dropdown(choices=list(all_models.keys()), label="Select Model", value=default_model_name)
335
+ model_checkbox = gr.CheckboxGroup(choices=list(all_models.keys()), label="Select Model", value=None) #value=[default_model_name])
336
  user_dropdown = gr.Dropdown(choices=user_names, label="Select User Name")
 
337
  story_dropdown = gr.Dropdown(choices=[story["title"] for story in stories], label="Select Story", value=initial_story)
338
  system_prompt_dropdown = gr.Dropdown(choices=system_prompts, label="Select System Prompt", value=system_prompts[0])
339
  send_multiple_story_button = gr.Button("Send Story")
340
 
341
  gr.Markdown("## Chat")
342
  with gr.Group():
343
+ selected_story_textbox = gr.Textbox(label="Selected Story", lines=10, interactive=False, value=change_story(initial_story, "string"))
344
  #aqui armar una ventana x cada modelo seleccionado
345
+ chatbot_list.append(gr.Chatbot(label="Chat History", type='messages'))
346
  with gr.Row():
347
+ for i, model in enumerate(model_list):
348
+ label = f"Model {alphabet[i % len(alphabet)]}"
349
+ aux = gr.Chatbot(label=label, visible=False, type='messages')
350
+ chatbot_list.append(aux)
351
 
352
+ #for model in model_list:
353
+ # aux = gr.Chatbot(label=f"Model {model}", visible=False, type='messages')
354
+ # chatbot_list.append(aux)
355
+
356
  user_input = gr.Textbox(placeholder="Type your message here...", label="User Input")
357
+ #chat_radio = gr.Radio(choices=list(model_list)+["user_input"], label="Sent something to continue...", value=[model_list[0]])
358
+ chat_radio = gr.Radio(label="Select Model to respond...")
359
  #elegir respuesta primero, luego enviar mensaje
360
  assistant_user_input = gr.Textbox(interactive=True, show_copy_button=True, visible=False)
361
  send_multiple_message_button = gr.Button("Send")
 
378
  #save_button.click(fn=save_comment_score, inputs=[chatbot_output, score_input, comment_input, story_dropdown, user_dropdown, system_prompt_dropdown], outputs=[data_table, comment_input])
379
 
380
  chat_radio.change(fn=change_textbox, inputs=chat_radio, outputs=assistant_user_input)
381
+ #al elegir modelo cambia el chat radio, setea los modelos elegidos
382
+ model_checkbox.input(fn=change_checkbox, inputs=model_checkbox, outputs=chat_radio)
383
+ story_dropdown.input(fn=change_story, inputs=[story_dropdown], outputs=selected_story_textbox)
384
 
385
  send_multiple_story_button.click(
386
  fn=send_multiple_selected_story,
387
  inputs=[story_dropdown, model_checkbox, system_prompt_dropdown],
388
+ outputs=chatbot_list,
389
  )
390
+
391
  #Tengo que cambiar para que los modelos responan solo las respuestas y no todo el historial
392
  #preciso las historias previas de cada una
393
  #el modelo que se haya elegido
 
395
  #luego retorno:
396
  #en
397
 
398
+ #send_multiple_message_button.click(
399
+ # fn=multiple_interact,
400
+ # inputs=[user_input, chatbot_main_output, model_checkbox, chat_radio, assistant_user_input],# interaction_count],
401
+ # outputs=[chatbot_list],
402
+ # )
403
 
404
  #quiza tenga que guardar una variable con los valores de los checkbox
405
+ #save_button_multievaluation.click(
406
+ # fn=save_comment_score,
407
+ # inputs=[chatbot_main_output, score_input, comment_input, story_dropdown, user_dropdown, system_prompt_dropdown, model_checkbox],
408
+ # outputs=[data_table, comment_input])
409
 
410
  demo.launch()