File size: 1,807 Bytes
d5b1bca a35fa4d c121218 5c20801 d5b1bca 759ceaa 169710f db9c02a 7a5c823 db9c02a 7a5c823 db9c02a 7a5c823 169710f c4df480 846ae23 169710f db9c02a 846ae23 d371605 846ae23 a35fa4d c121218 846ae23 c4df480 846ae23 5c20801 c4df480 0905f7c bcd56f8 5c20801 c4df480 5c20801 a35fa4d c4df480 71586bc c4df480 71586bc 5c20801 c4df480 5c20801 846ae23 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
import gradio as gr
import actions as a
from components import all_tasks, Tasks
with gr.Blocks() as demo:
# Initial layout
gr.Markdown(
"""
# Toolkit
Assemble tasks to build an E2E application.
<br>There are 2 types of tasks.
<br>
<br>**AI Task**: Ask ChatGPT to do something for you. Eg, summarize a text.
<br>**Code Task**: ChatGPT will create a python function that will be executed on the fly. Eg, get the text from an url.
<br>
<br>Max 10 tasks allowed (for now).
"""
)
for t in all_tasks.values():
t.render()
with gr.Row():
add_task_btn = gr.Button("Add task")
remove_task_btn = gr.Button("Remove task")
error_message = gr.HighlightedText(value=None, visible=False)
execute_btn = gr.Button("Execute")
# Edit layout
add_task_btn.click(
a.add_task,
inputs=Tasks.visibilities(),
outputs=Tasks.gr_components() + Tasks.visibilities(),
)
remove_task_btn.click(
a.remove_task,
inputs=Tasks.visibilities(),
outputs=Tasks.gr_components() + Tasks.visibilities(),
)
# Sequential execution
execution_event = execute_btn.click(
# Clear error message
lambda: gr.HighlightedText.update(value=None, visible=False),
inputs=[],
outputs=[error_message],
)
prev_tasks = []
for i, task in all_tasks.items():
execution_event = execution_event.then(
a.execute_task,
inputs=[task.component_id, task.active_index, error_message]
+ task.inputs
+ [t.active_index for t in prev_tasks]
+ [o for t in prev_tasks for o in t.outputs],
outputs=task.outputs + [error_message],
)
prev_tasks.append(task)
demo.launch()
|