|
|
|
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") |
|
|
|
|
|
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) |
|
|