diff --git a/erniekit/webui/control.py b/erniekit/webui/control.py index 5b512f979..d91de7828 100644 --- a/erniekit/webui/control.py +++ b/erniekit/webui/control.py @@ -2517,6 +2517,7 @@ def update_language(language): if col_config["options"] else None ), + allow_custom_value=True, ) elif col_config["type"] == "textbox": col = gr.Textbox(scale=col_config.get("scale", 1), value="") diff --git a/erniekit/webui/view/chat.py b/erniekit/webui/view/chat.py index aa4faa9ac..1402c0966 100644 --- a/erniekit/webui/view/chat.py +++ b/erniekit/webui/view/chat.py @@ -39,7 +39,7 @@ def build(manager): default_system_prompt = config.get_default_user_dict("chat", "system_prompt") default_thought_checkbox = config.get_default_user_dict("chat", "thought_checkbox") - with gr.Tab() as chat_tab: + with gr.Tab("chat_tab") as chat_tab: chat_info = gr.HTML() with gr.Row(): diff --git a/erniekit/webui/view/eval.py b/erniekit/webui/view/eval.py index 9398bf774..14fe2505d 100644 --- a/erniekit/webui/view/eval.py +++ b/erniekit/webui/view/eval.py @@ -45,7 +45,7 @@ def build(manager): ) default_eval_logging_dir = config.get_default_user_dict("eval", "logging_dir") - with gr.Tab() as eval_tab: + with gr.Tab("eval_tab") as eval_tab: with gr.Row(): eval_dataset_path = gr.Textbox( value=default_eval_dataset_path, diff --git a/erniekit/webui/view/export.py b/erniekit/webui/view/export.py index b645dd411..409c177c2 100644 --- a/erniekit/webui/view/export.py +++ b/erniekit/webui/view/export.py @@ -32,7 +32,7 @@ def build(manager): default_max_shard_size = config.get_default_user_dict("export", "max_shard_size") - with gr.Tab() as export_tab: + with gr.Tab("export_tab") as export_tab: with gr.Row(): max_shard_size = gr.Slider( minimum=1, diff --git a/erniekit/webui/view/train.py b/erniekit/webui/view/train.py index d647967b9..0f5240642 100644 --- a/erniekit/webui/view/train.py +++ b/erniekit/webui/view/train.py @@ -124,7 +124,7 @@ def build(manager): ) default_train_text_dataset = config.get_default_user_dict("train", "text_dataset") - with gr.Tab() as train_tab: + with gr.Tab("train_tab") as train_tab: with gr.Row(): best_config = gr.Dropdown( choices=config.get_choices_kwargs("best_config"), diff --git a/erniekit/webui/webui.py b/erniekit/webui/webui.py index b88886bc9..1143381a2 100644 --- a/erniekit/webui/webui.py +++ b/erniekit/webui/webui.py @@ -16,6 +16,7 @@ The startup interface of ErnieKit WebUI """ +import os import resource import sys from pathlib import Path @@ -36,6 +37,21 @@ logging.getLogger("httpx").setLevel(logging.WARNING) +def is_env_enabled(env_name: str) -> bool: + """Check if environment variables are enabled""" + return os.getenv(env_name, "").lower() in ["true", "1", "yes"] + + +def fix_proxy(ipv6_enabled: bool = False) -> None: + """Fix Gradio UI proxy settings to prevent local connections from being disrupted by proxies""" + os.environ["no_proxy"] = "localhost,127.0.0.1,0.0.0.0" + if ipv6_enabled: + os.environ.pop("http_proxy", None) + os.environ.pop("HTTP_PROXY", None) + os.environ.pop("https_proxy", None) + os.environ.pop("HTTPS_PROXY", None) + + def create_ui(): with gr.Blocks(title="ErnieKit WebUI", theme=gr.themes.Ocean()) as demo: gr.HTML(f"") @@ -55,14 +71,22 @@ def create_ui(): manager.setup_language_switching(language, demo, alert) manager.setup_component_tracking(demo) - return demo def run_webui(): + # Read environment variable configuration + 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") + + # Fix proxy settings to avoid network interference + fix_proxy(ipv6_enabled=gradio_ipv6) + print("Starting ErnieKit WebUI") + demo = create_ui() - demo.queue().launch(server_name="0.0.0.0", share=False) + demo.queue().launch(server_name=server_name, share=gradio_share, inbrowser=True) if __name__ == "__main__": diff --git a/requirements/gpu/requirements.txt b/requirements/gpu/requirements.txt index c4316e081..1e56eaf23 100644 --- a/requirements/gpu/requirements.txt +++ b/requirements/gpu/requirements.txt @@ -4,11 +4,11 @@ decord moviepy GPUtil openai -gradio +gradio==5.42.0 opencv-python==4.5.5.64 imgaug==0.4.0 triton==3.3 use-triton-in-paddle tensorboardX ujson -einops \ No newline at end of file +einops