|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| import os
|
| import platform
|
|
|
| from ..extras.misc import fix_proxy, is_env_enabled
|
| from ..extras.packages import is_gradio_available
|
| from .common import save_config
|
| from .components import (
|
| create_chat_box,
|
| create_eval_tab,
|
| create_export_tab,
|
| create_infer_tab,
|
| create_top,
|
| create_train_tab,
|
| )
|
| from .css import CSS
|
| from .engine import Engine
|
|
|
|
|
| if is_gradio_available():
|
| import gradio as gr
|
|
|
|
|
| def create_ui(demo_mode: bool = False) -> "gr.Blocks":
|
| engine = Engine(demo_mode=demo_mode, pure_chat=False)
|
| hostname = os.getenv("HOSTNAME", os.getenv("COMPUTERNAME", platform.node())).split(".")[0]
|
|
|
| with gr.Blocks(title=f"LLaMA Board ({hostname})", css=CSS) as demo:
|
| if demo_mode:
|
| gr.HTML("<h1><center>LLaMA Board: A One-stop Web UI for Getting Started with LLaMA Factory</center></h1>")
|
| gr.HTML(
|
| '<h3><center>Visit <a href="https://github.com/hiyouga/LLaMA-Factory" target="_blank">'
|
| "LLaMA Factory</a> for details.</center></h3>"
|
| )
|
| gr.DuplicateButton(value="Duplicate Space for private use", elem_classes="duplicate-button")
|
|
|
| engine.manager.add_elems("top", create_top())
|
| lang: gr.Dropdown = engine.manager.get_elem_by_id("top.lang")
|
|
|
| with gr.Tab("Train"):
|
| engine.manager.add_elems("train", create_train_tab(engine))
|
|
|
| with gr.Tab("Evaluate & Predict"):
|
| engine.manager.add_elems("eval", create_eval_tab(engine))
|
|
|
| with gr.Tab("Chat"):
|
| engine.manager.add_elems("infer", create_infer_tab(engine))
|
|
|
| if not demo_mode:
|
| with gr.Tab("Export"):
|
| engine.manager.add_elems("export", create_export_tab(engine))
|
|
|
| demo.load(engine.resume, outputs=engine.manager.get_elem_list(), concurrency_limit=None)
|
| lang.change(engine.change_lang, [lang], engine.manager.get_elem_list(), queue=False)
|
| lang.input(save_config, inputs=[lang], queue=False)
|
|
|
| return demo
|
|
|
|
|
| def create_web_demo() -> "gr.Blocks":
|
| engine = Engine(pure_chat=True)
|
| hostname = os.getenv("HOSTNAME", os.getenv("COMPUTERNAME", platform.node())).split(".")[0]
|
|
|
| with gr.Blocks(title=f"LLaMA Factory Web Demo ({hostname})", css=CSS) as demo:
|
| lang = gr.Dropdown(choices=["en", "ru", "zh", "ko", "ja"], scale=1)
|
| engine.manager.add_elems("top", dict(lang=lang))
|
|
|
| _, _, chat_elems = create_chat_box(engine, visible=True)
|
| engine.manager.add_elems("infer", chat_elems)
|
|
|
| demo.load(engine.resume, outputs=engine.manager.get_elem_list(), concurrency_limit=None)
|
| lang.change(engine.change_lang, [lang], engine.manager.get_elem_list(), queue=False)
|
| lang.input(save_config, inputs=[lang], queue=False)
|
|
|
| return demo
|
|
|
|
|
| def run_web_ui() -> None:
|
| gradio_ipv6 = is_env_enabled("GRADIO_IPV6")
|
| gradio_share = is_env_enabled("GRADIO_SHARE")
|
| server_name = os.getenv("GRADIO_SERVER_NAME", "[::]" if gradio_ipv6 else "0.0.0.0")
|
| print("Visit http://ip:port for Web UI, e.g., http://127.0.0.1:7860")
|
| fix_proxy(ipv6_enabled=gradio_ipv6)
|
| create_ui().queue().launch(share=gradio_share, server_name=server_name, inbrowser=True)
|
|
|
|
|
| def run_web_demo() -> None:
|
| gradio_ipv6 = is_env_enabled("GRADIO_IPV6")
|
| gradio_share = is_env_enabled("GRADIO_SHARE")
|
| server_name = os.getenv("GRADIO_SERVER_NAME", "[::]" if gradio_ipv6 else "0.0.0.0")
|
| print("Visit http://ip:port for Web UI, e.g., http://127.0.0.1:7860")
|
| fix_proxy(ipv6_enabled=gradio_ipv6)
|
| create_web_demo().queue().launch(share=gradio_share, server_name=server_name, inbrowser=True)
|
|
|