File size: 1,830 Bytes
d5b1bca
 
a35fa4d
c121218
5c20801
 
d5b1bca
759ceaa
169710f
 
db9c02a
8d878e6
7a5c823
db9c02a
7a5c823
8d878e6
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. Give instructions with text.
    <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 to do something for you. Eg, get the text from a website.
    <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()