Spaces:
Runtime error
Runtime error
Tristan Thrush
commited on
Commit
•
28cc200
1
Parent(s):
df77487
bugfix
Browse files
app.py
CHANGED
@@ -60,21 +60,25 @@ with demo:
|
|
60 |
state["cnt"] += 1
|
61 |
|
62 |
done = state["cnt"] == total_cnt
|
63 |
-
toggle_final_submit = gr.update(visible=done)
|
64 |
toggle_example_submit = gr.update(visible=not done)
|
65 |
new_state_md = f"State: {state['cnt']}/{total_cnt} ({state['cnt_fooled']} fooled)"
|
66 |
|
67 |
state["data"].append({"cnt": state["cnt"], "text": txt, "target": tgt, "model_pred": pred["label"], "fooled": fooled})
|
68 |
|
69 |
query = parse_qs(dummy[1:])
|
70 |
-
if "assignmentId" in query:
|
71 |
# It seems that someone is using this app on mturk. We need to
|
72 |
# store the assignmentId in the state before submit_hit_button
|
73 |
# is clicked. We can do this here in _predict. We need to save the
|
74 |
# assignmentId so that the turker can get credit for their HIT.
|
75 |
state["assignmentId"] = query["assignmentId"][0]
|
|
|
|
|
|
|
|
|
|
|
76 |
|
77 |
-
return pred_confidences, ret, state, toggle_example_submit, toggle_final_submit, new_state_md, dummy
|
78 |
|
79 |
# Input fields
|
80 |
text_input = gr.Textbox(placeholder="Enter model-fooling statement", show_label=False)
|
@@ -87,6 +91,8 @@ with demo:
|
|
87 |
submit_ex_button = gr.Button("Submit")
|
88 |
with gr.Column(visible=False) as final_submit:
|
89 |
submit_hit_button = gr.Button("Submit HIT")
|
|
|
|
|
90 |
|
91 |
# Store the HIT data into a Hugging Face dataset.
|
92 |
# The HIT is also stored and logged on mturk when post_hit_js is run below.
|
@@ -115,38 +121,27 @@ with demo:
|
|
115 |
submit_ex_button.click(
|
116 |
_predict,
|
117 |
inputs=[text_input, label_input, state, dummy],
|
118 |
-
outputs=[label_output, text_output, state, example_submit, final_submit, state_display, dummy],
|
119 |
_js=get_window_location_search_js,
|
120 |
)
|
121 |
|
122 |
post_hit_js = """
|
123 |
function(state) {
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
return state;
|
140 |
-
} else {
|
141 |
-
// If there is no assignmentId, then we assume that the submitter is
|
142 |
-
// on huggingface.co or there is an mturker doing the preview.
|
143 |
-
// This means that we can't log a HIT in mturk, but
|
144 |
-
// _store_in_huggingface_dataset will still store the example in
|
145 |
-
// our dataset without an assignmentId. The following line here
|
146 |
-
// loads the app again so the user can enter in another "fake" HIT.
|
147 |
-
window.location.href = window.location.href;
|
148 |
-
return state;
|
149 |
-
}
|
150 |
}
|
151 |
"""
|
152 |
|
@@ -157,4 +152,20 @@ with demo:
|
|
157 |
_js=post_hit_js,
|
158 |
)
|
159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
demo.launch()
|
|
|
60 |
state["cnt"] += 1
|
61 |
|
62 |
done = state["cnt"] == total_cnt
|
|
|
63 |
toggle_example_submit = gr.update(visible=not done)
|
64 |
new_state_md = f"State: {state['cnt']}/{total_cnt} ({state['cnt_fooled']} fooled)"
|
65 |
|
66 |
state["data"].append({"cnt": state["cnt"], "text": txt, "target": tgt, "model_pred": pred["label"], "fooled": fooled})
|
67 |
|
68 |
query = parse_qs(dummy[1:])
|
69 |
+
if "assignmentId" in query and query["assignmentId"][0] != "ASSIGNMENT_ID_NOT_AVAILABLE":
|
70 |
# It seems that someone is using this app on mturk. We need to
|
71 |
# store the assignmentId in the state before submit_hit_button
|
72 |
# is clicked. We can do this here in _predict. We need to save the
|
73 |
# assignmentId so that the turker can get credit for their HIT.
|
74 |
state["assignmentId"] = query["assignmentId"][0]
|
75 |
+
toggle_final_submit = gr.update(visible=done)
|
76 |
+
toggle_final_submit_preview = gr.update(visible=False)
|
77 |
+
else:
|
78 |
+
toggle_final_submit_preview = gr.update(visible=done)
|
79 |
+
toggle_final_submit = gr.update(visible=False)
|
80 |
|
81 |
+
return pred_confidences, ret, state, toggle_example_submit, toggle_final_submit, toggle_final_submit_preview, new_state_md, dummy
|
82 |
|
83 |
# Input fields
|
84 |
text_input = gr.Textbox(placeholder="Enter model-fooling statement", show_label=False)
|
|
|
91 |
submit_ex_button = gr.Button("Submit")
|
92 |
with gr.Column(visible=False) as final_submit:
|
93 |
submit_hit_button = gr.Button("Submit HIT")
|
94 |
+
with gr.Column(visible=False) as final_submit_preview:
|
95 |
+
submit_hit_button_preview = gr.Button("Submit Work (preview mode; no mturk HIT credit)")
|
96 |
|
97 |
# Store the HIT data into a Hugging Face dataset.
|
98 |
# The HIT is also stored and logged on mturk when post_hit_js is run below.
|
|
|
121 |
submit_ex_button.click(
|
122 |
_predict,
|
123 |
inputs=[text_input, label_input, state, dummy],
|
124 |
+
outputs=[label_output, text_output, state, example_submit, final_submit, final_submit_preview, state_display, dummy],
|
125 |
_js=get_window_location_search_js,
|
126 |
)
|
127 |
|
128 |
post_hit_js = """
|
129 |
function(state) {
|
130 |
+
// If there is an assignmentId, then the submitter is on mturk
|
131 |
+
// and has accepted the HIT. So, we need to submit their HIT.
|
132 |
+
const form = document.createElement('form');
|
133 |
+
form.action = 'https://workersandbox.mturk.com/mturk/externalSubmit';
|
134 |
+
form.method = 'post';
|
135 |
+
for (const key in state) {
|
136 |
+
const hiddenField = document.createElement('input');
|
137 |
+
hiddenField.type = 'hidden';
|
138 |
+
hiddenField.name = key;
|
139 |
+
hiddenField.value = state[key];
|
140 |
+
form.appendChild(hiddenField);
|
141 |
+
};
|
142 |
+
document.body.appendChild(form);
|
143 |
+
form.submit();
|
144 |
+
return state;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
}
|
146 |
"""
|
147 |
|
|
|
152 |
_js=post_hit_js,
|
153 |
)
|
154 |
|
155 |
+
refresh_app_js = """
|
156 |
+
function(state) {
|
157 |
+
// The following line here loads the app again so the user can
|
158 |
+
// enter in another preview-mode "HIT".
|
159 |
+
window.location.href = window.location.href;
|
160 |
+
return state;
|
161 |
+
}
|
162 |
+
"""
|
163 |
+
|
164 |
+
submit_hit_button_preview.click(
|
165 |
+
_store_in_huggingface_dataset,
|
166 |
+
inputs=[state],
|
167 |
+
outputs=[state],
|
168 |
+
_js=refresh_app_js,
|
169 |
+
)
|
170 |
+
|
171 |
demo.launch()
|