File size: 3,203 Bytes
cb93205
 
 
8f86068
cb93205
 
8f86068
 
cb93205
 
 
 
8f86068
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cb93205
 
 
 
 
8f86068
 
 
 
 
 
cb93205
8f86068
 
 
 
cb93205
 
8f86068
 
 
 
 
cb93205
8f86068
 
cb93205
8f86068
 
cb93205
 
 
8f86068
cb93205
8f86068
 
cb93205
 
8f86068
 
 
 
 
cb93205
8f86068
 
 
 
cb93205
 
 
 
8f86068
 
cb93205
 
 
8f86068
cb93205
 
 
 
 
8f86068
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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()