Spaces:
Paused
Paused
| from typing import TYPE_CHECKING, Dict | |
| import gradio as gr | |
| from llmtuner.webui.chat import WebChatModel | |
| from llmtuner.webui.components.chatbot import create_chat_box | |
| if TYPE_CHECKING: | |
| from gradio.components import Component | |
| def create_infer_tab(top_elems: Dict[str, "Component"]) -> Dict[str, "Component"]: | |
| with gr.Row(): | |
| load_btn = gr.Button() | |
| unload_btn = gr.Button() | |
| info_box = gr.Textbox(show_label=False, interactive=False) | |
| chat_model = WebChatModel(lazy_init=True) | |
| chat_box, chatbot, history, chat_elems = create_chat_box(chat_model) | |
| load_btn.click( | |
| chat_model.load_model, | |
| [ | |
| top_elems["lang"], | |
| top_elems["model_name"], | |
| top_elems["checkpoints"], | |
| top_elems["finetuning_type"], | |
| top_elems["quantization_bit"], | |
| top_elems["template"], | |
| top_elems["system_prompt"] | |
| ], | |
| [info_box] | |
| ).then( | |
| lambda: gr.update(visible=(chat_model.model is not None)), outputs=[chat_box] | |
| ) | |
| unload_btn.click( | |
| chat_model.unload_model, [top_elems["lang"]], [info_box] | |
| ).then( | |
| lambda: ([], []), outputs=[chatbot, history] | |
| ).then( | |
| lambda: gr.update(visible=(chat_model.model is not None)), outputs=[chat_box] | |
| ) | |
| return dict( | |
| info_box=info_box, | |
| load_btn=load_btn, | |
| unload_btn=unload_btn, | |
| **chat_elems | |
| ) | |