Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from fastapi import FastAPI | |
| from edu_assistant import version | |
| from webui.coding_problem import CodingProblemUI | |
| from webui.qa import QaUI | |
| app = FastAPI() | |
| demo = gr.Blocks(title="Codedog Edu Assistant", theme="gradio/soft") | |
| qa_ui = QaUI() | |
| cp_ui = CodingProblemUI() | |
| def apply_cfg( | |
| gpt4_flags: list[int], | |
| qa_instruction: str, | |
| cp_instruction: str, | |
| cp_first_question: str, | |
| qa_knowledge: str, | |
| cp_knowledge: str, | |
| ): | |
| qa_ui.ui_reload( | |
| instruction=qa_instruction, | |
| knowledge_name=qa_knowledge, | |
| enable_gpt4=0 in gpt4_flags, | |
| ) | |
| cp_ui.ui_reload( | |
| instruction=cp_instruction, | |
| first_question=cp_first_question, | |
| knowledge_name=cp_knowledge, | |
| enable_gpt4=1 in gpt4_flags, | |
| ) | |
| demo.render() | |
| gr.update() | |
| gr.Info("更新配置成功") | |
| def default_cfg(): | |
| qa_ui.ui_reload() | |
| cp_ui.ui_reload() | |
| demo.render() | |
| gr.update() | |
| gr.Info("恢复默认配置成功") | |
| def get_gpt4_flags(): | |
| result = [] | |
| if qa_ui.enable_gpt4: | |
| result.append("答疑") | |
| if cp_ui.enable_gpt4: | |
| result.append("做题") | |
| return result | |
| with demo: | |
| with gr.Row(): | |
| gr.Markdown(f"# Codedog Edu Assistant v{version.VERSION}") | |
| with gr.Tab(label="答疑"): | |
| qa_ui.ui_render() | |
| with gr.Tab(label="做题"): | |
| cp_ui.ui_render() | |
| with gr.Tab(label="设置"): | |
| with gr.Row(): | |
| gr.Markdown("## Prompt 设置") | |
| with gr.Row(): | |
| qa_instruction = gr.Textbox( | |
| label="答疑指示Prompt", lines=5, max_lines=20, value=qa_ui.get_instruction, interactive=True | |
| ) | |
| with gr.Row(): | |
| cp_instruction = gr.Textbox( | |
| label="做题指示Prompt", lines=5, max_lines=20, value=cp_ui.get_instruction, interactive=True | |
| ) | |
| with gr.Row(): | |
| cp_first_question = gr.Textbox( | |
| label="判题Prompt", lines=5, max_lines=20, value=cp_ui.get_first_question, interactive=True | |
| ) | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| gr.Markdown("## Open AI 设置") | |
| with gr.Column(scale=2): | |
| gpt4_flags = gr.CheckboxGroup( | |
| value=get_gpt4_flags, choices=["答疑", "做题"], label="启用GPT4", type="index", interactive=True | |
| ) | |
| with gr.Row(): | |
| gr.Markdown("## 知识库设置") | |
| qa_knowledge = gr.Textbox(value=qa_ui.knowledge, label="答疑知识库", interactive=True) | |
| cp_knowledge = gr.Textbox(value=cp_ui.knowledge, label="做题知识库", interactive=True) | |
| with gr.Row(): | |
| default_btn = gr.Button(value="恢复默认配置", interactive=True, scale=1) | |
| apply_btn = gr.Button(value="更新配置", interactive=True, variant="primary", scale=1) | |
| default_btn.click(default_cfg, [], []) | |
| apply_btn.click( | |
| apply_cfg, [gpt4_flags, qa_instruction, cp_instruction, cp_first_question, qa_knowledge, cp_knowledge], [] | |
| ) | |
| demo.queue() | |
| # app = gr.mount_gradio_app(app, demo, path="/") | |
| if __name__ == "__main__": | |
| demo.launch() | |
| # uvicorn.run(app, port=7860) | |