maker-faire-bot / app.py
aldan.creo
More changes
cb93205
raw
history blame
3.2 kB
import logging
import os
import gradio as gr
from dotenv import load_dotenv
from utils import add_result
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
load_dotenv()
def submit_result(user_answer):
add_result({"user_answer": user_answer})
return
def get_user_prompt():
return {
"images": [
"images/1.jpeg",
"images/1.jpeg",
"images/1.jpeg",
],
"labels": [
"A pencil",
"A camera",
"A sheet of paper",
],
}
hf_writer = gr.HuggingFaceDatasetSaver(
hf_token=os.environ["HF_TOKEN"], dataset_name="acmc/maker-faire-bot", private=True
)
csv_writer = gr.CSVLogger(simplify_file_data=True)
theme = gr.themes.Default(primary_hue="cyan", secondary_hue="fuchsia")
with gr.Blocks(theme=theme) as demo:
with gr.Row() as header:
gr.Image(
"maker-faire-logo.webp",
show_download_button=False,
show_label=False,
show_share_button=False,
container=False,
# height=100,
scale=0.2,
)
gr.Markdown(
"""
# Maker Faire Bot
""",
visible=False,
)
user_prompt = gr.State(get_user_prompt())
gr.Markdown("""# Think about these objects...""")
gr.Markdown(
"""We want to teach the Maker Faire Bot some creativity. Help us get ideas on what you'd build!"""
)
with gr.Row(variant="panel") as row:
for i in range(len(user_prompt.value["images"])):
with gr.Column(variant="default") as col:
gr.Image(
user_prompt.value["images"][i],
label=user_prompt.value["labels"][i],
interactive=False,
show_download_button=False,
show_share_button=False,
)
user_answer_object = gr.Textbox(
autofocus=True,
placeholder="(example): An electronic guitar",
label="What would you build?",
)
user_answer_explanation = gr.TextArea(
autofocus=True,
label="How would you build it?",
placeholder="""I'd use the camera to detect when the user touches the strings and make a sound using the loudspeakers when that happens.""",
)
csv_writer.setup(components=[user_prompt, user_answer_object, user_answer_explanation], flagging_dir="flagged_data_csv")
hf_writer.setup(components=[user_prompt, user_answer_object, user_answer_explanation], flagging_dir="flagged_data_hf")
submit_btn = gr.Button("Submit", variant="primary")
def log_results(prompt, object, explanation):
csv_writer.flag([prompt, object, explanation])
hf_writer.flag([prompt, object, explanation])
submit_btn.click(log_results, inputs=[user_prompt, user_answer_object, user_answer_explanation], preprocess=False)
gr.Markdown(
"""
This is an experimental project. Your data is anonymous and will be used to train an AI model. By using this tool, you agree to our [policy](https://makerfaire.com/privacy).
"""
)
if __name__ == "__main__":
demo.launch()