math-quiz / app.py
yoon-gu's picture
Upload 2 files
e444e3b
raw
history blame
2.05 kB
import os
os.system("pip install gradio --upgrade")
import gradio as gr
from pyjosa.josa import Josa
import random
import json
with open('pokemon.json', 'r') as f:
pokemons = json.load(f)
QUESTION_TEMPLATE = {"question": "λ‹€μŒ 포켓λͺ¬μ˜ 이름은 λ­˜κΉŒμš”?![]({img_url})", "answer": "{name}"}
with gr.Blocks() as demo:
quiz_start = gr.State(value=False)
answer = gr.State(value="")
chatbot = gr.Chatbot(bubble_full_width=False)
msg = gr.Textbox()
clear = gr.ClearButton([msg, chatbot])
def respond(message, chat_history):
if not quiz_start.value:
chosen = random.choice(pokemons)
name = chosen['name']
image_path = chosen['image_path']
answer.value = QUESTION_TEMPLATE['answer'].format(name=name)
img_url = f"https://huggingface.co/spaces/yoon-gu/pokemon/resolve/main/{image_path}"
if "ν€΄μ¦ˆ μ‹œμž‘" == message:
bot_message = "ν€΄μ¦ˆλ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€.\n" + QUESTION_TEMPLATE["question"].format(img_url=img_url)
quiz_start.value = True
else:
bot_message = "ν€΄μ¦ˆλ₯Ό μ‹œμž‘ν•˜κ³  μ‹ΆμœΌμ‹œλ©΄, **ν€΄μ¦ˆ μ‹œμž‘**이라고 λ§μ”€ν•΄μ£Όμ„Έμš”."
else:
trial = Josa.get_full_string(message, "λŠ”")
if answer.value == message:
chosen = random.choice(pokemons)
name = chosen['name']
image_path = chosen['image_path']
answer.value = QUESTION_TEMPLATE['answer'].format(name=name)
img_url = f"https://huggingface.co/spaces/yoon-gu/pokemon/resolve/main/{image_path}"
bot_message = "μ •λ‹΅μž…λ‹ˆλ‹€! λ‹€μŒ λ¬Έμ œμž…λ‹ˆλ‹€." + QUESTION_TEMPLATE["question"].format(img_url=img_url)
else:
bot_message = f"{trial} μ •λ‹΅μΌκΉŒμš”? λ‹€μ‹œ ν•œλ²ˆ μƒκ°ν•΄λ³΄μ„Έμš”."
chat_history.append((message, bot_message))
return "", chat_history
msg.submit(respond, [msg, chatbot], [msg, chatbot])
demo.launch()