HimitsudoguSearch / frontend.py
Mya-Mya
Squashed commit of the following:
9f1a6f8
raw
history blame
3.17 kB
from gradio import (
update,
Blocks,
Row,
Examples,
Group,
Markdown,
Textbox,
Button,
Tabs,
TabItem,
DataFrame as GRDataFrame,
)
from ambiguous_search_backends import AmbiguousSearchBackend
from classic_search_backends import ClassicSearchBackend
def launch_frontend(
ambiguous_search_backend: AmbiguousSearchBackend,
classic_search_backend: ClassicSearchBackend,
):
def on_ambiguous_search_click(query: str):
result = ambiguous_search_backend.submit(query)
return GRDataFrame.update(value=result, visible=True)
def on_ambiguous_search_query_clear_click():
return Textbox.update(value="")
def on_classic_search_click(query: str):
result = classic_search_backend.submit(query)
return GRDataFrame.update(value=result, visible=True)
with Blocks() as frontend:
Markdown("## Himitsudogu Search")
with Tabs():
with TabItem("あいまい検索"):
Markdown(
"""
自然言語処理モデル"Sentence BERT"を使って、ドラえもんのひみつ道具をあいまい検索。
"""
)
query_textbox = Textbox(
label="自分の言葉でひみつ道具を説明してください", max_lines=1
)
with Row():
submit_button = Button("検索", variant="primary")
clear_button = Button("クリア")
result_table = GRDataFrame(visible=False)
Examples(
examples=[
"ふりかけると水を色々な性質にできる",
"小さいカメラが飛ぶ",
"壁を通り抜けられるようにする輪",
"地図をいじって実際の町の建物などの位置を変える",
"歌声を綺麗にする",
],
inputs=query_textbox,
)
submit_button.click(
on_ambiguous_search_click,
inputs=query_textbox,
outputs=result_table,
)
clear_button.click(
on_ambiguous_search_query_clear_click,
inputs=None,
outputs=query_textbox,
)
with TabItem("古典検索"):
Markdown(
f"""
キーワードから検索。
検索可能なひみつ道具は全{classic_search_backend.get_num_items()}種類。
"""
)
query_textbox = Textbox(label="キーワード", max_lines=1)
with Row():
submit_button = Button("検索", variant="primary")
result_table = GRDataFrame(visible=False)
submit_button.click(
on_classic_search_click,
inputs=query_textbox,
outputs=result_table,
)
frontend.launch()