Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import ai | |
| import github_manager | |
| import webbrowser | |
| def main(): | |
| pre_prompt = """using pygame and no sprites, create: """ | |
| initial_prompt = """Conway's game of life, but the user controls one of the squares. If the square dies, the game is over.""" | |
| add_example = False | |
| post_prompt = """ | |
| run the game with asyncio.run(main()) | |
| """ | |
| if add_example: | |
| example_code_file_path = "resources/main.py" | |
| with open(example_code_file_path, "r") as file: | |
| example_code = file.read() | |
| post_prompt = example_code | |
| with gr.Blocks() as app: | |
| inp = gr.Textbox(label="Input Prompt", | |
| value=initial_prompt) | |
| with gr.Row(): | |
| model_choice = gr.Dropdown(label="Select Model", | |
| choices=[m for m in ai.models], | |
| value=ai.models[0], | |
| type="index", | |
| interactive=True) | |
| no_tokens = gr.Number(label="Tokens", value=1000) | |
| btn = gr.Button(value="Generate Game") | |
| with gr.Column(visible=False) as save_col: | |
| save_button = gr.Button("Build The Game") | |
| with gr.Column(visible=False) as play_col: | |
| play_button = gr.Button("Play The Game") | |
| out = gr.Code(label="Generated Code") | |
| def generate(prompt, model_index, max_tokens): | |
| final_prompt = f"""{pre_prompt} {prompt}. {post_prompt}""" | |
| generated_code = ai.generate_code(prompt=final_prompt, | |
| model_index=model_index, | |
| max_tokens=max_tokens) | |
| return { | |
| out: generated_code, | |
| save_col: gr.Column(visible=True), | |
| } | |
| def save(text): | |
| github_manager.update_repo(text) | |
| return { | |
| play_col: gr.Column(visible=True) | |
| } | |
| def play(): | |
| webbrowser.open(github_manager.game_link()) | |
| btn.click(generate, inputs=[inp, model_choice, no_tokens], outputs=[out, save_col], queue=True) | |
| save_button.click(save, inputs=[out], outputs=[play_col]) | |
| play_button.click(play, inputs=[], outputs=[]) | |
| app.launch(share=True) | |
| if __name__ == "__main__": | |
| main() | |