File size: 2,349 Bytes
9adf324
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import os
import utils.interface_utils as iutils
from components.chat import create_chat_controls
from components.bug_finding import create_bug_finding_tab
from components.pattern_matching import create_pattern_matching_tab
from components.patch_generation import create_patch_generation_tab
from components.patch_validation import create_patch_validation_tab
from components.file_upload import create_file_upload_section
from components.model_selection import create_model_selection_dropdown


def create_interface():
    # TODO: Replace with actual choices
    choices = ["ChatGPT", "Claude"]

    with gr.Blocks(theme=iutils.custom_theme(), css=iutils.custom_css()) as interface:
        with gr.Column():
            # Header with Logo
            with gr.Row():
                gr.Markdown("# Code Repair with LLMs")  
                gr.Markdown("")  # Filler to push logo to the right
                gr.Image("logo.png", label="Logo", show_download_button=False, show_fullscreen_button=False, show_label=False, height=250, width=450, container=False)

            # Tabs for Different Features
            with gr.Tab("Chat"):
                with gr.Column():
                    steps = ["Bug Finding", "Pattern Matching", "Patch Generation", "Patch Validation"]
                    checkboxes = gr.CheckboxGroup(steps, label="Select Desired Steps", value=steps, interactive=True)
                    create_model_selection_dropdown(choices)
                    with gr.Column():
                        chatbot = gr.Chatbot(value=None, type="messages", show_label=True, show_share_button=False)
                        msg, submit_button = create_chat_controls()


            with gr.Tab("Bug Finding"):
                create_bug_finding_tab(choices)

            with gr.Tab("Pattern Matching"):
                create_pattern_matching_tab(choices)

            with gr.Tab("Patch Generation"):
                create_patch_generation_tab(choices)

            with gr.Tab("Patch Validation"):
                create_patch_validation_tab(choices)

        # TODO: need new function to handle future pipeline calls
        # msg.submit(fn=handle_initiate_pipeline, inputs=[files, checkboxes, msg], outputs=[chatbot]) # clone for submit_button

    return interface