import gradio as gr from chat import CahtBOT chat = CahtBOT() with gr.Blocks() as demo: gr.Markdown("Siri-like application via Whisper and ChatGPT") with gr.Tabs(): with gr.TabItem(label="General"): with gr.Row(): with gr.Column(scale=1): api_key = gr.Textbox(label="Paste your own openai-api-key") api_button = gr.Button("SetUp") with gr.Row(): audio_input = gr.Audio( source="microphone", label="Record from microphone", ) audio_button = gr.Button("Transcribe") audio_output = gr.Textbox() chat_button = gr.Button("Questions to ChatGPT") with gr.Column(scale=1): chatbot = gr.Chatbot([], elemid="chatbot").style(height=750) with gr.TabItem(label="Setting"): gr.Markdown("Prompt Setting") language = gr.Dropdown(["Japanese", "English"], value="English") with gr.Row(): role1 = gr.Dropdown(["system", "user", "assistant"], value="system") content1 = gr.Textbox(value="You're helpful assistant.") with gr.Row(): role2 = gr.Dropdown(["system", "user", "assistant"]) content2 = gr.Textbox() with gr.Row(): role3 = gr.Dropdown(["system", "user", "assistant"]) content3 = gr.Textbox() with gr.Row(): role4 = gr.Dropdown(["system", "user", "assistant"]) content4 = gr.Textbox() with gr.Row(): role5 = gr.Dropdown(["system", "user", "assistant"]) content5 = gr.Textbox() api_button.click( chat.setup, inputs=[ role1, content1, role2, content2, role3, content3, role4, content4, role5, content5, api_key, language, ], outputs=None, ) audio_button.click( chat.transcribe, inputs=[audio_input], outputs=[audio_output], api_name="transcribe", ) chat_button.click( chat.answer_by_chat, inputs=[chatbot, audio_output], outputs=[chatbot], ) demo.launch()