Spaces:
Runtime error
Runtime error
improved error handling and default pipeline load
Browse files
app.py
CHANGED
|
@@ -405,7 +405,7 @@ def alter_body(old_code, func_id: str, funcs_list: list, pipeline=PIPE):
|
|
| 405 |
print(f"using for generation: {func_node=}")
|
| 406 |
|
| 407 |
|
| 408 |
-
|
| 409 |
if pipeline is None:
|
| 410 |
print("no pipeline found, loading default one")
|
| 411 |
pipeline = _make_pipeline("Vipitis/santacoder-finetuned-Shadertoys-fine")
|
|
@@ -417,15 +417,21 @@ def alter_body(old_code, func_id: str, funcs_list: list, pipeline=PIPE):
|
|
| 417 |
body_end_idx = _line_chr2char(old_code, body_node.end_point[0], body_node.end_point[1])
|
| 418 |
print(f"{old_code[body_start_idx:body_end_idx]=}")
|
| 419 |
model_context = identifier_str # just this
|
| 420 |
-
num_new_tokens = (body_end_idx - body_start_idx) + 10 #TODO: approximation, we do have early stopping? maybe also use a number instead?
|
| 421 |
|
| 422 |
print(f"generating up to {num_new_tokens} after {model_context!r}")
|
| 423 |
generation = pipeline(model_context, max_new_tokens=num_new_tokens, return_full_text=False)[0]["generated_text"]
|
| 424 |
print(f"{generation=}")
|
| 425 |
id_with_generation = identifier_str + generation
|
| 426 |
print(f"{id_with_generation=}")
|
| 427 |
-
|
| 428 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 429 |
print(f"{first_gened_func=}")
|
| 430 |
generated_body = first_gened_func.child_by_field_name("body").text.decode()
|
| 431 |
print(f"{generated_body=}")
|
|
@@ -461,14 +467,13 @@ with gr.Blocks() as site:
|
|
| 461 |
# update_funcs_button = gr.Button("update functions", label="update functions")
|
| 462 |
with gr.Row():
|
| 463 |
with gr.Column():
|
| 464 |
-
source_embed = gr.HTML('<iframe width="640" height="360" frameborder="0" src="
|
| 465 |
our_embed = gr.HTML(label="glsl render of the current code")
|
| 466 |
-
sample_code = gr.Code(label="Current Code (will update changes you generate)", language=None)
|
| 467 |
bot_md = gr.Markdown(outro_text)
|
| 468 |
-
|
| 469 |
-
|
| 470 |
sample_pass = gr.State(value={})
|
| 471 |
pipe = gr.State(value=PIPE)
|
|
|
|
| 472 |
funcs = gr.State(value=[])
|
| 473 |
# hist_state = gr.State(Value={})
|
| 474 |
# history_table = gr.JSON()
|
|
|
|
| 405 |
print(f"using for generation: {func_node=}")
|
| 406 |
|
| 407 |
|
| 408 |
+
print(f"{pipeline=}") # check if default even loaded
|
| 409 |
if pipeline is None:
|
| 410 |
print("no pipeline found, loading default one")
|
| 411 |
pipeline = _make_pipeline("Vipitis/santacoder-finetuned-Shadertoys-fine")
|
|
|
|
| 417 |
body_end_idx = _line_chr2char(old_code, body_node.end_point[0], body_node.end_point[1])
|
| 418 |
print(f"{old_code[body_start_idx:body_end_idx]=}")
|
| 419 |
model_context = identifier_str # just this
|
| 420 |
+
num_new_tokens = max(160,(body_end_idx - body_start_idx) + 10) #TODO: approximation, we do have early stopping? maybe also use a number instead? HARD MAX for performance limits.
|
| 421 |
|
| 422 |
print(f"generating up to {num_new_tokens} after {model_context!r}")
|
| 423 |
generation = pipeline(model_context, max_new_tokens=num_new_tokens, return_full_text=False)[0]["generated_text"]
|
| 424 |
print(f"{generation=}")
|
| 425 |
id_with_generation = identifier_str + generation
|
| 426 |
print(f"{id_with_generation=}")
|
| 427 |
+
try:
|
| 428 |
+
#strip the body
|
| 429 |
+
first_gened_func = _parse_functions(id_with_generation)[0] # truncate generation to a single function?
|
| 430 |
+
except IndexError:
|
| 431 |
+
print("generation wasn't a full function.")
|
| 432 |
+
altered_code = old_code[:body_start_idx] + generation + "//the generation didn't complete the function!\n" + old_code[body_end_idx:] #needs a newline to break out of the comment.
|
| 433 |
+
return altered_code, pipeline
|
| 434 |
+
# raise gr.Error(f"didn't generate a full function: {generation!r}]")
|
| 435 |
print(f"{first_gened_func=}")
|
| 436 |
generated_body = first_gened_func.child_by_field_name("body").text.decode()
|
| 437 |
print(f"{generated_body=}")
|
|
|
|
| 467 |
# update_funcs_button = gr.Button("update functions", label="update functions")
|
| 468 |
with gr.Row():
|
| 469 |
with gr.Column():
|
| 470 |
+
source_embed = gr.HTML('<iframe width="640" height="360" frameborder="0" src="" allowfullscreen></iframe>', label="How this shader originally renders")
|
| 471 |
our_embed = gr.HTML(label="glsl render of the current code")
|
| 472 |
+
sample_code = gr.Code("// touch the slider to select a shader", label="Current Code (will update changes you generate)", language=None)
|
| 473 |
bot_md = gr.Markdown(outro_text)
|
|
|
|
|
|
|
| 474 |
sample_pass = gr.State(value={})
|
| 475 |
pipe = gr.State(value=PIPE)
|
| 476 |
+
pipe.value=_make_pipeline("Vipitis/santacoder-finetuned-Shadertoys-fine") # set a default like this?
|
| 477 |
funcs = gr.State(value=[])
|
| 478 |
# hist_state = gr.State(Value={})
|
| 479 |
# history_table = gr.JSON()
|