| import gradio as gr |
| from sidekick import Sidekick |
|
|
|
|
| async def setup(): |
| sidekick = Sidekick() |
| await sidekick.setup() |
| return sidekick |
|
|
| async def process_message(sidekick, message, success_criteria, history): |
| results = await sidekick.run_superstep(message, success_criteria, history) |
| return results, sidekick |
| |
| async def reset(): |
| new_sidekick = Sidekick() |
| await new_sidekick.setup() |
| return "", "", None, new_sidekick |
|
|
| def free_resources(sidekick): |
| print("Cleaning up") |
| try: |
| if sidekick: |
| sidekick.free_resources() |
| except Exception as e: |
| print(f"Exception during cleanup: {e}") |
|
|
|
|
| with gr.Blocks(title="Sidekick", theme=gr.themes.Default(primary_hue="emerald")) as ui: |
| gr.Markdown("## Sidekick Personal Co-Worker") |
| sidekick = gr.State(delete_callback=free_resources) |
| |
| with gr.Row(): |
| chatbot = gr.Chatbot(label="Sidekick", height=300, type="messages") |
| with gr.Group(): |
| with gr.Row(): |
| message = gr.Textbox(show_label=False, placeholder="Your request to the Sidekick") |
| with gr.Row(): |
| success_criteria = gr.Textbox(show_label=False, placeholder="What are your success critiera?") |
| with gr.Row(): |
| reset_button = gr.Button("Reset", variant="stop") |
| go_button = gr.Button("Go!", variant="primary") |
| |
| ui.load(setup, [], [sidekick]) |
| message.submit(process_message, [sidekick, message, success_criteria, chatbot], [chatbot, sidekick]) |
| success_criteria.submit(process_message, [sidekick, message, success_criteria, chatbot], [chatbot, sidekick]) |
| go_button.click(process_message, [sidekick, message, success_criteria, chatbot], [chatbot, sidekick]) |
| reset_button.click(reset, [], [message, success_criteria, chatbot, sidekick]) |
|
|
| |
| ui.launch(inbrowser=True) |