from dotenv import load_dotenv load_dotenv() from utils import * from functions import * with (gr.Blocks() as app): user_id = gr.State('') # id used to find the chat into the database with gr.Tab('Option 1'): with gr.Row() as select_author: chat_btn = gr.Button(value='Start chat') # ------------------------------------- Chat ------------------------------------------- with gr.Row(visible=False) as chatbot: with gr.Column(): with gr.Row(): video = gr.Video(interactive=False, label='Video', autoplay=True) with gr.Row(): output_audio = gr.Audio(interactive=False, label='Audio', autoplay=True) with gr.Row(): checkbox_video = gr.Checkbox( label='Get video', info='Remember that this has a cost' ) checkbox_audio = gr.Checkbox( label='Get only audio', info='This is free but makes API slower' ) radio = gr.Radio( choices=['local', 'remote'], value='remote', label='Backend used', visible=False ) with gr.Column(): with gr.Row(): chat = gr.Chatbot(label='Chat') with gr.Row(): with gr.Column(): text = gr.Text(label='Write your question') with gr.Column(): audio = gr.Audio(sources=['microphone'], type='filepath', label='Tell me your question') button_audio = gr.Button(value='Submit audio') with gr.Tab('Option 2'): prompt_questions = gr.State(init_prompt('questions')) prompt_main = gr.Textbox(label='Enter your prompt') msg_history = gr.State([]) chatbot_option2 = gr.Chatbot(label='Bella Nosotras') start_button = gr.Button() message = gr.Textbox(visible=False) start_button.click( start_chat, [chatbot_option2, prompt_main], [msg_history, chatbot_option2, start_button, message] ) message.submit( ask_query, [message, chatbot_option2, msg_history, prompt_questions, prompt_main], [message, chatbot_option2, msg_history] ) # -------------------------------------- Actions ----------------------------------------- chat_btn.click( make_invisible, None, select_author ).then( make_visible, None, chatbot ).then( init_chatbot, [chat, radio], [video, chat, user_id] ) text.submit( get_answer_text, [text, chat, user_id, checkbox_video, checkbox_audio, radio], [video, output_audio, chat, text] ) button_audio.click( get_answer_audio, [audio, chat, user_id, checkbox_video, checkbox_audio, radio], [video, output_audio, chat, audio] ) output_audio.stop( lambda: None, None, output_audio ) app.queue() app.launch(debug=True, auth=(os.environ.get('SPACE_USERNAME'), os.environ.get('SPACE_PASSWORD')))