|
import gradio as gr |
|
import os |
|
import time |
|
from agent import DevOn |
|
|
|
image_temp = "https://miro.medium.com/v2/resize:fit:1200/0*n-2bW82Z6m6U2bij.jpeg" |
|
|
|
|
|
|
|
devon = None |
|
|
|
|
|
def add_message(history, message): |
|
for x in message["files"]: |
|
history.append(((x,), None)) |
|
if message["text"] is not None: |
|
history.append((message["text"], None)) |
|
return history, gr.MultimodalTextbox(value=None, interactive=False) |
|
|
|
|
|
def bot(history): |
|
for r in devon.run(history[-1][0]): |
|
text, editor_image, browser_image, scratchpad_image = r |
|
if type(text) == str: |
|
history.append((None, text)) |
|
if editor_image is None: |
|
editor_image = devon.editor_image |
|
browser_image = devon.browser_image |
|
scratchpad_image = devon.scratchpad_image |
|
yield history, editor_image, browser_image, scratchpad_image |
|
|
|
|
|
with gr.Blocks(css="footer {visibility: hidden}") as demo: |
|
with gr.Row(): |
|
with gr.Column(): |
|
chatbot = gr.Chatbot( |
|
[], elem_id="chatbot", bubble_full_width=False, height=300 |
|
) |
|
|
|
chat_input = gr.MultimodalTextbox( |
|
value={"text": "write a basic hello world fastapi server"}, |
|
interactive=True, |
|
file_types=["image"], |
|
placeholder="Enter message or upload file...", |
|
show_label=False, |
|
) |
|
with gr.Column(): |
|
if devon: |
|
editor_view = gr.Image( |
|
devon.editor_image, |
|
label="Editor", |
|
) |
|
else: |
|
editor_view = gr.Image() |
|
with gr.Row(): |
|
with gr.Column(): |
|
if devon: |
|
browser_view = gr.Image( |
|
devon.browser_image, |
|
label="Browser", |
|
) |
|
else: |
|
browser_view = gr.Image() |
|
with gr.Column(): |
|
if devon: |
|
scratchpad_view = gr.Image( |
|
devon.scratchpad_image, |
|
label="Scratchpad", |
|
) |
|
else: |
|
scratchpad_view = gr.Image() |
|
|
|
chat_msg = chat_input.submit( |
|
add_message, [chatbot, chat_input], [chatbot, chat_input] |
|
) |
|
bot_msg = chat_msg.then( |
|
bot, |
|
[chatbot], |
|
[chatbot, editor_view, browser_view, scratchpad_view], |
|
api_name="bot_response", |
|
) |
|
bot_msg.then(lambda: gr.MultimodalTextbox(interactive=True), None, [chat_input]) |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
devon = DevOn( |
|
editor_image=image_temp, browser_image=image_temp, scratchpad_image=image_temp |
|
) |
|
demo.queue() |
|
demo.launch() |
|
|