| # gradio_generator.py - Wraps robot behavior and simulator into Gradio interface | |
| import gradio as gr | |
| from deployer.simulator_interface import VirtualRobot | |
| # The logic that interprets voice or text and maps it to robot actions | |
| def robot_behavior(user_input: str): | |
| bot = VirtualRobot() | |
| user_input = user_input.lower().strip() | |
| if any(greet in user_input for greet in ["hello", "hi", "hey", "welcome"]): | |
| return bot.perform_action("wave") + "\n" + bot.perform_action("say Hello there!") | |
| elif user_input.startswith("say"): | |
| return bot.perform_action(user_input) | |
| else: | |
| return bot.perform_action("say I didn't understand that. Try again!") | |
| # Generate Gradio app dynamically | |
| def launch_gradio_app(title="RoboSage App", description="Your robot, your voice."): | |
| with gr.Blocks() as demo: | |
| gr.Markdown(f"""# π€ {title} | |
| {description} | |
| """) | |
| with gr.Row(): | |
| inp = gr.Textbox(label="Speak or Type") | |
| out = gr.Textbox(label="Robot Response") | |
| btn = gr.Button("Send") | |
| btn.click(robot_behavior, inputs=inp, outputs=out) | |
| return demo | |
| # For testing | |
| if __name__ == "__main__": | |
| app = launch_gradio_app() | |
| app.launch() | |