SIAI2025 / app.py
taku404's picture
update UI
f8d594f
# app.py - Entry point (theme fixed and color-scheme locked to dark)
import gradio as gr
from core.logic_handlers import make_on_show_total, make_on_submit
from core.models import load_models, vectorize_jobs
from data.data_jobs import jobs_df
from data.data_personas import personas
from docs.docs_build import build_docs_tabs
from practice.practice_ui import build_practice_tabs
from styles.css import CUSTOM_CSS
model_ruri, model_bert = load_models()
jobs_vec = vectorize_jobs(jobs_df.copy(), model_ruri, model_bert)
def build_app():
with gr.Blocks(theme=gr.themes.Soft(), css=CUSTOM_CSS) as demo:
gr.HTML("<meta name='color-scheme' content='dark'>")
gr.HTML(
"<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css'/>",
)
gr.Markdown("# 【NLPハンズオン】モデルの思考を探る!求人マッチング改善体験", elem_id="main-title")
# State は Blocks 直下で1回だけ生成(Tabs の外)
scores_state = gr.State({})
all_history_state = gr.State([])
with gr.Tabs():
with gr.TabItem("📘 説明パート", elem_id="top-docs-tab"):
build_docs_tabs(jobs_vec, personas)
with gr.TabItem("🧪 実践パート", elem_id="top-practice-tab"):
on_submit = make_on_submit(jobs_vec, personas, model_bert, model_ruri)
on_show_total = make_on_show_total()
build_practice_tabs(
jobs_vec,
personas,
on_submit,
on_show_total,
scores_state,
all_history_state, # 追加:ここで渡す
model_bert,
model_ruri,
)
return demo
demo = build_app()
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860)