Spaces:
Runtime error
Runtime error
Display loading animation at runtime
Browse files
app.css
CHANGED
@@ -104,11 +104,43 @@
|
|
104 |
}
|
105 |
|
106 |
.solution-content .solution-content {
|
107 |
-
overflow-y:
|
108 |
padding: 12px;
|
|
|
109 |
}
|
110 |
|
111 |
.run-btn {
|
112 |
background: linear-gradient(to right, #ce7e53, #bb470b);
|
113 |
color: white;
|
114 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
}
|
105 |
|
106 |
.solution-content .solution-content {
|
107 |
+
overflow-y: scroll;
|
108 |
padding: 12px;
|
109 |
+
scroll-snap-align: end;
|
110 |
}
|
111 |
|
112 |
.run-btn {
|
113 |
background: linear-gradient(to right, #ce7e53, #bb470b);
|
114 |
color: white;
|
115 |
}
|
116 |
+
|
117 |
+
.running-btn {
|
118 |
+
background: linear-gradient(to right, #ce7e53, #bb470b);
|
119 |
+
color: white;
|
120 |
+
display: flex;
|
121 |
+
align-items: center;
|
122 |
+
justify-content: center;
|
123 |
+
position: relative;
|
124 |
+
}
|
125 |
+
|
126 |
+
.running-btn::before {
|
127 |
+
content: "";
|
128 |
+
position: absolute;
|
129 |
+
width: 22px;
|
130 |
+
height: 22px;
|
131 |
+
border-radius: 50%;
|
132 |
+
border: 3px solid white;
|
133 |
+
border-top-color: transparent;
|
134 |
+
/* border-right-color: transparent;
|
135 |
+
border-bottom-color: transparent; */
|
136 |
+
animation: spin 1s linear infinite;
|
137 |
+
}
|
138 |
+
|
139 |
+
@keyframes spin {
|
140 |
+
0% {
|
141 |
+
transform: rotate(0deg);
|
142 |
+
}
|
143 |
+
100% {
|
144 |
+
transform: rotate(360deg);
|
145 |
+
}
|
146 |
+
}
|
app.py
CHANGED
@@ -661,6 +661,9 @@ def process_code(
|
|
661 |
|
662 |
|
663 |
def solve_problem(problem, temperature, progress=gr.Progress()):
|
|
|
|
|
|
|
664 |
problem = apply_template({"prompt": problem}, prompt=config.system_prompt)
|
665 |
print(f"Problem: {problem}")
|
666 |
|
@@ -690,9 +693,10 @@ def solve_problem(problem, temperature, progress=gr.Progress()):
|
|
690 |
for reponse_message, error in generate(messages, temperature):
|
691 |
if reponse_message is not None:
|
692 |
step_reponse += reponse_message
|
693 |
-
yield step_reponse
|
694 |
|
695 |
if error:
|
|
|
696 |
return
|
697 |
|
698 |
sample["gen_texts"] = step_reponse
|
@@ -711,12 +715,12 @@ def solve_problem(problem, temperature, progress=gr.Progress()):
|
|
711 |
for output_mseeage in run_code_reponse:
|
712 |
if output_mseeage is not None:
|
713 |
step_reponse += output_mseeage
|
714 |
-
yield step_reponse
|
715 |
|
716 |
if sample["should_prune"]:
|
717 |
break
|
718 |
|
719 |
-
yield sample["gen_texts"]
|
720 |
|
721 |
|
722 |
example_data = datasets.load_dataset(
|
@@ -754,7 +758,11 @@ def clear():
|
|
754 |
return "", 0.1, "", problem_example_text_display, problem_example_text
|
755 |
|
756 |
|
|
|
|
|
757 |
with gr.Blocks(css=css, title="Math Olympiad Solver") as demo:
|
|
|
|
|
758 |
problem_example_text, problem_example_text_display = update_example_problem()
|
759 |
|
760 |
with gr.Row(elem_classes="title"):
|
@@ -789,16 +797,51 @@ with gr.Blocks(css=css, title="Math Olympiad Solver") as demo:
|
|
789 |
with gr.Accordion("Advanced Options", open=False):
|
790 |
temperature = gr.Slider(minimum=0.0, maximum=1.0, value=0.1, step=0.1, label="Temperature")
|
791 |
|
792 |
-
with gr.Row():
|
793 |
-
btn_clear = gr.Button("Clear")
|
794 |
btn_run = gr.Button("Run", elem_classes="run-btn")
|
|
|
|
|
795 |
|
796 |
with gr.Column(scale=1, elem_classes="right"):
|
797 |
gr.HTML("Solution", elem_classes="solution-title-content")
|
798 |
out = gr.Markdown(elem_classes="solution-content", latex_delimiters=latex_delimiters)
|
799 |
|
800 |
problem_example_text_hidden = gr.Markdown(value=problem_example_text, visible=False)
|
801 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
802 |
|
803 |
copy_btn.click(fn=lambda example: example, inputs=[problem_example_text_hidden], outputs=[inp])
|
804 |
|
@@ -814,6 +857,8 @@ with gr.Blocks(css=css, title="Math Olympiad Solver") as demo:
|
|
814 |
],
|
815 |
)
|
816 |
|
|
|
|
|
817 |
demo.load(
|
818 |
update_example_problem,
|
819 |
inputs=None,
|
|
|
661 |
|
662 |
|
663 |
def solve_problem(problem, temperature, progress=gr.Progress()):
|
664 |
+
"""
|
665 |
+
yield token: string, stop: bool
|
666 |
+
"""
|
667 |
problem = apply_template({"prompt": problem}, prompt=config.system_prompt)
|
668 |
print(f"Problem: {problem}")
|
669 |
|
|
|
693 |
for reponse_message, error in generate(messages, temperature):
|
694 |
if reponse_message is not None:
|
695 |
step_reponse += reponse_message
|
696 |
+
yield step_reponse, False
|
697 |
|
698 |
if error:
|
699 |
+
yield step_reponse, True
|
700 |
return
|
701 |
|
702 |
sample["gen_texts"] = step_reponse
|
|
|
715 |
for output_mseeage in run_code_reponse:
|
716 |
if output_mseeage is not None:
|
717 |
step_reponse += output_mseeage
|
718 |
+
yield step_reponse, False
|
719 |
|
720 |
if sample["should_prune"]:
|
721 |
break
|
722 |
|
723 |
+
yield sample["gen_texts"], True
|
724 |
|
725 |
|
726 |
example_data = datasets.load_dataset(
|
|
|
758 |
return "", 0.1, "", problem_example_text_display, problem_example_text
|
759 |
|
760 |
|
761 |
+
running_success = False
|
762 |
+
|
763 |
with gr.Blocks(css=css, title="Math Olympiad Solver") as demo:
|
764 |
+
btn_list = []
|
765 |
+
|
766 |
problem_example_text, problem_example_text_display = update_example_problem()
|
767 |
|
768 |
with gr.Row(elem_classes="title"):
|
|
|
797 |
with gr.Accordion("Advanced Options", open=False):
|
798 |
temperature = gr.Slider(minimum=0.0, maximum=1.0, value=0.1, step=0.1, label="Temperature")
|
799 |
|
800 |
+
with gr.Row() as btn_area:
|
801 |
+
btn_clear = gr.Button("Clear", elem_classes="clear-btn")
|
802 |
btn_run = gr.Button("Run", elem_classes="run-btn")
|
803 |
+
btn_list.append(btn_clear)
|
804 |
+
btn_list.append(btn_run)
|
805 |
|
806 |
with gr.Column(scale=1, elem_classes="right"):
|
807 |
gr.HTML("Solution", elem_classes="solution-title-content")
|
808 |
out = gr.Markdown(elem_classes="solution-content", latex_delimiters=latex_delimiters)
|
809 |
|
810 |
problem_example_text_hidden = gr.Markdown(value=problem_example_text, visible=False)
|
811 |
+
|
812 |
+
def solve_problem_wrapper(inp_text, temperature):
|
813 |
+
global running_success
|
814 |
+
for token, stop in solve_problem(inp_text, temperature):
|
815 |
+
yield token
|
816 |
+
|
817 |
+
if stop:
|
818 |
+
running_success = True
|
819 |
+
|
820 |
+
def mount_run_btn(btn):
|
821 |
+
btn.click(fn=solve_problem_wrapper, inputs=[inp, temperature], outputs=out)
|
822 |
+
btn.click(get_running_btns, None, outputs=btn_list)
|
823 |
+
|
824 |
+
def get_running_btns():
|
825 |
+
global running_success
|
826 |
+
|
827 |
+
btn_clear = gr.Button("Clear")
|
828 |
+
btn_run = gr.Button("", elem_classes="run-btn running-btn")
|
829 |
+
yield [btn_clear, btn_run]
|
830 |
+
|
831 |
+
time.sleep(3)
|
832 |
+
|
833 |
+
btn_clear = gr.Button("Clear")
|
834 |
+
btn_run = gr.Button("Run", elem_classes="run-btn")
|
835 |
+
|
836 |
+
while True:
|
837 |
+
if running_success:
|
838 |
+
running_success = False
|
839 |
+
yield [btn_clear, btn_run]
|
840 |
+
time.sleep(1)
|
841 |
+
mount_run_btn(btn_run)
|
842 |
+
break
|
843 |
+
|
844 |
+
time.sleep(1)
|
845 |
|
846 |
copy_btn.click(fn=lambda example: example, inputs=[problem_example_text_hidden], outputs=[inp])
|
847 |
|
|
|
857 |
],
|
858 |
)
|
859 |
|
860 |
+
mount_run_btn(btn_run)
|
861 |
+
|
862 |
demo.load(
|
863 |
update_example_problem,
|
864 |
inputs=None,
|