File size: 2,313 Bytes
d5b1bca
 
a35fa4d
f81e511
c121218
5c20801
 
d5b1bca
759ceaa
169710f
 
db9c02a
f81e511
7a5c823
db9c02a
7a5c823
8d878e6
f81e511
db9c02a
b2c28f8
169710f
 
cc70e87
 
 
 
 
 
 
 
846ae23
cc70e87
 
 
 
 
 
 
 
 
 
 
846ae23
cc70e87
 
 
 
 
 
5c20801
cc70e87
 
 
 
 
 
 
 
 
 
 
f81e511
 
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
62
63
64
65
66
import gradio as gr

import actions as a
from examples import summarize_website
from components import all_tasks, Tasks


with gr.Blocks() as demo:
    # Initial layout
    gr.Markdown(
        """
    # Toolkit
    Assemble tasks to build an E2E application with everyday language.
    <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> Use this task for things that ChatGPT can't do on its own, like access the internet or iterate over 4K+ tokens.
    <br>
    <br>Output from previous tasks can be referenced in subsequen tasks with {tn}. Max 10 tasks allowed (for now).
    """
    )
    with gr.Tab("Toolkit"):
        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)
    with gr.Tab("Example: Summarize website"):
        summarize_website.render()

demo.launch()