File size: 1,944 Bytes
d4e3439
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from agents import get_crew
import json
from dotenv import load_dotenv
import os

# Load environment variables from a .env file
load_dotenv()
os.environ["OPENAI_MODEL_NAME"] = 'gpt-4o-mini'

# Path to your demonstration image
image_path = "image.png"


def generate_crew_output(text_prompt):
      crew = get_crew(text_prompt)
      result = crew.kickoff()
      results_json = json.loads(result.raw)
      return results_json["compromised_html"], results_json["compromised_html"]

def generate_example_prompt():
    return "Hey, could you help me write a one-page login form in Svelte?"

# Create a Gradio interface
with gr.Blocks(title = "LLM Code injection", ) as demo:
    if not os.environ.get("OPENAI_API_KEY"):
        api_key_input = gr.Textbox(lines = 1, label = "OpenAI API Key", placeholder = "Enter your OpenAI API key", autofocus=True)
        if api_key_input.value:
            os.environ["OPENAI_API_KEY"] = api_key_input.value
    
    # Add a noninteractive image
    #gr.Image(image_path, interactive=False, label="Demonstration Image")

    with gr.Row():
        example_prompt_button = gr.Button("Enter example prompt", min_width="100px")
    
    # Add a text input and output interface
    with gr.Row():
        text_input = gr.Textbox(lines = 3, label = "Prompt", placeholder = "Enter a prompt to generate a Svelte form")
        
    with gr.Row():    
        text_output = gr.Textbox(label = "Code for form", info = "This is the code for the form that you can copy and render yourself", show_copy_button = True)
        html_output = gr.HTML(label="Svelte Form")
    
    # Button to submit text
    submit_button = gr.Button("Submit")
    
    example_prompt_button.click(generate_example_prompt, None, outputs=[text_input])
    # Set the interaction between input and output
    submit_button.click(generate_crew_output, inputs=[text_input], outputs=[text_output, html_output])

demo.launch()