| |
| import gradio as gr |
| import logging |
|
|
| from app.ui.common import log_dropdown_choice |
| from app.ui.diagnoser_tab import build_diagnoser_tab |
| from app.ui.distractors_tab import build_distractors_tab |
| from app.ui.learning_objectives_tab import build_learning_objectives_tab |
| from app.ui.prompts_tab import build_prompts_tab |
| from app.ui.test_set_tab import build_test_set_tab |
| from app.ui.write_fluster_tab import build_write_fluster_tab |
| from chains.diagnoser.runner import run_diagnoser |
| from chains.distractors.runner import run_distractors |
| from chains.exercises.run_fluster_with_diagnosis import run_fluster_with_diagnosis |
| from chains.exercises.runner_without import run_fluster_no_diagnosis |
| from chains.learning_objectives_generator.runner import run_learning_objectives_generator |
| from utils.auth import login as auth_login |
|
|
| logger = logging.getLogger(__name__) |
|
|
|
|
|
|
| |
| |
| |
| with gr.Blocks() as interface: |
| |
| with gr.Column(visible=True, elem_id="login_page") as login_container: |
| gr.Markdown("## 🔒 Please Login") |
| password_input = gr.Textbox( |
| label="Enter Password", |
| type="password", |
| placeholder="hunter2", |
| container=True |
| ) |
| login_button = gr.Button("Login") |
| login_error = gr.Markdown(value="") |
|
|
| |
| with gr.Column(visible=False, elem_id="main_app") as app_container: |
|
|
| |
| |
| with gr.Row(): |
| with gr.Column(scale=3): |
| gr.Markdown("") |
| with gr.Column(scale=5): |
| standardized_format_display = gr.Textbox( |
| info="", |
| label="", |
| show_label=False, |
| show_copy_button=True, |
| placeholder="will show most recent reformatting result", |
| lines=1, |
| max_lines=10, |
| interactive=False, |
| container=False |
| ) |
|
|
| gr.Markdown("## Pick the tab for your task of choice") |
|
|
| with gr.Tabs(): |
| |
| (model_choice_diagnose, |
| exercise_format_diagnose, |
| sampling_count_diagnose, |
| diagnoser_input, |
| diagnoser_button, |
| diagnoser_responses |
| ) = build_diagnoser_tab() |
|
|
| |
| (model_choice_distractors_1, |
| model_choice_distractors_2, |
| model_choice_distractors_3, |
| exercise_format_distractors, |
| sampling_count_distractors, |
| distractors_input, |
| distractors_button, |
| distractors_responses, |
| intermediate_distractors_specification, |
| final_distractors_specification, |
| ) = build_distractors_tab() |
|
|
|
|
| |
| (model_choice_LO_1, |
| model_choice_LO_2, |
| text_format, |
| studytext_input, |
| learning_objectives_button, |
| [LO_box_0, LO_box_1, LO_box_2, LO_box_3] |
| ) = build_learning_objectives_tab() |
|
|
| |
| (model_choice_fluster_1, |
| model_choice_fluster_2, |
| include_diagnosis, |
| exercises_input, |
| write_fluster_button, |
| [fluster_box_0, fluster_box_1, fluster_box_2, fluster_box_3], |
| diagnosis_box_1, |
| diagnosis_box_3, |
| fixes_box_1, |
| fixes_box_3 |
| ) = build_write_fluster_tab() |
|
|
| |
| with gr.Tab("", visible=True): |
| pass |
| with gr.Tab("", visible=True): |
| pass |
| with gr.Tab("", visible=True): |
| pass |
| with gr.Tab("", visible=True): |
| pass |
| with gr.Tab("", visible=True): |
| pass |
| with gr.Tab("", visible=True): |
| pass |
|
|
| |
| (pipeline_choice, |
| search_field_prompts, |
| ) = build_prompts_tab() |
|
|
| |
| (subset_choice, |
| search_field_test_set, |
| ) = build_test_set_tab() |
|
|
| |
| |
| |
| |
| login_button.click( |
| fn=auth_login, |
| inputs=[password_input], |
| outputs=[login_container, app_container, login_error] |
| ) |
|
|
| diagnoser_button.click( |
| fn=run_diagnoser, |
| inputs=[diagnoser_input, model_choice_diagnose, exercise_format_diagnose, sampling_count_diagnose], |
| outputs=diagnoser_responses + [standardized_format_display], |
| ) |
|
|
| distractors_button.click( |
| fn=run_distractors, |
| inputs=[ |
| distractors_input, |
| model_choice_distractors_1, |
| model_choice_distractors_2, |
| model_choice_distractors_3, |
| exercise_format_distractors, |
| sampling_count_distractors, |
| intermediate_distractors_specification, |
| final_distractors_specification, |
| ], |
| outputs=distractors_responses + [standardized_format_display], |
| ) |
|
|
| learning_objectives_button.click( |
| fn=run_learning_objectives_generator, |
| inputs=[studytext_input, model_choice_LO_1, model_choice_LO_2, text_format], |
| outputs=[LO_box_0, LO_box_1, LO_box_2, LO_box_3, standardized_format_display], |
| queue=True, |
| api_name=None, |
| |
| ) |
|
|
| async def fluster_pipeline_dispatch( |
| user_input: str, |
| model_1: str, |
| model_2: str, |
| include_diagnosis: bool |
| ): |
| if not include_diagnosis: |
| generator = run_fluster_no_diagnosis(user_input, model_1, model_2) |
| final_results = ["", "", "", ""] |
| async for results in generator: |
| final_results = results |
| return (*final_results, "", "", "", "") |
| else: |
| return await run_fluster_with_diagnosis(user_input, model_1, model_2) |
|
|
|
|
| write_fluster_button.click( |
| fn=fluster_pipeline_dispatch, |
| inputs=[ |
| exercises_input, |
| model_choice_fluster_1, |
| model_choice_fluster_2, |
| include_diagnosis |
| ], |
| outputs=[ |
| fluster_box_0, |
| fluster_box_1, |
| fluster_box_2, |
| fluster_box_3, |
| diagnosis_box_1, |
| diagnosis_box_3, |
| fixes_box_1, |
| fixes_box_3 |
| ], |
| queue=True |
| ) |
|
|
| pipeline_choice.change(fn=log_dropdown_choice, inputs=pipeline_choice, outputs=[]) |
| subset_choice.change(fn=log_dropdown_choice, inputs=subset_choice, outputs=[]) |
|
|
| |
| interface.launch() |
|
|