Spaces:
Running
Running
import gradio as gr | |
from dotenv import load_dotenv | |
load_dotenv() | |
from utils_app import ( | |
_new_chat, | |
_score_chosen, | |
_clear_comments, | |
_comment_submitted, | |
_load_interface, | |
_session_id_selected, | |
) | |
from main_function import _run_graph | |
with gr.Blocks( | |
title="Test Interface", | |
theme='JohnSmith9982/small_and_pretty', | |
) as demo: | |
user_id = gr.Textbox( | |
visible = False, | |
) | |
with gr.Row(): | |
session_id = gr.Dropdown( | |
choices = [], | |
value = None, | |
label = "Chats", | |
info = "Scegliere la chat", | |
interactive = True, | |
visible = True, | |
allow_custom_value = False, | |
) | |
with gr.Row(): | |
new_chat = gr.ClearButton( | |
value="Nuova Chat", | |
variant="primary", | |
) | |
with gr.Row(): | |
chatbot = gr.Chatbot( | |
show_copy_button=True | |
) | |
with gr.Row(): | |
with gr.Column(): | |
score = gr.Radio( | |
choices = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"], | |
show_label = True, | |
label = "Voto", | |
visible = True, | |
) | |
with gr.Column(visible=False) as comment_column: | |
comment = gr.Textbox( | |
label="Commento", | |
info="Spiega il voto che hai dato", | |
interactive=True, | |
) | |
submit_comment = gr.Button( | |
value="Invia commento", | |
variant="primary", | |
) | |
close_btn = gr.Button( | |
value="Chiudi", | |
variant="secondary", | |
) | |
with gr.Row(): | |
input = gr.Textbox( | |
label = "Messaggio", | |
placeholder=None, | |
interactive = True, | |
) | |
with gr.Row(): | |
logout_button = gr.Button( | |
"Logout", | |
link="/logout" | |
) | |
input.submit( | |
_clear_comments, | |
outputs = [comment_column, comment], | |
).then( | |
lambda: ( | |
gr.Textbox( | |
interactive=False, | |
placeholder="Dai un voto alla risposta precedente prima di continuare la conversazione o iniziarne una nuova"), | |
gr.Radio(visible=False), | |
gr.Button(interactive=False) | |
), | |
outputs = [input, score, new_chat], | |
).then( | |
lambda x,y : y + [(x, None)], | |
inputs = [input, chatbot], | |
outputs = chatbot | |
).then( | |
fn = _run_graph, | |
inputs = [session_id, input], | |
outputs = [chatbot], | |
scroll_to_output = True, | |
).then( | |
lambda: (None, gr.Radio(visible=True, value=None)), | |
outputs = [input, score], | |
) | |
score.change( | |
_score_chosen, | |
inputs = [session_id, score], | |
outputs = [comment_column, input, new_chat] | |
) | |
submit_comment.click( | |
_comment_submitted, | |
inputs = [session_id, comment], | |
outputs = None | |
).then( | |
_clear_comments, | |
inputs = None, | |
outputs = [comment_column, comment], | |
).then( | |
lambda: (gr.Textbox(interactive=True, placeholder=None), gr.Button(interactive=True), gr.Radio(visible = False)), | |
outputs = [input, new_chat, score], | |
) | |
new_chat.click( | |
_new_chat, | |
inputs = [user_id], | |
outputs = [chatbot, input, comment_column, comment, score, session_id], | |
) | |
session_id.change( | |
_session_id_selected, | |
inputs = [session_id], | |
outputs = [chatbot, input, comment_column, comment, score], | |
) | |
close_btn.click( | |
_clear_comments, | |
inputs = None, | |
outputs = [comment_column, comment, score, input, new_chat], | |
) | |
demo.load( | |
_load_interface, | |
None, | |
[user_id, session_id] | |
) | |
if __name__ == "__main__": | |
from utils_app import _get_users | |
demo.queue(default_concurrency_limit=20) | |
demo.launch( | |
inbrowser = True, | |
show_error = True, | |
auth=[(usr["name"], usr["password"]) for usr in _get_users()], | |
share=True, | |
) |