File size: 1,441 Bytes
eae9a22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import openai
import plantuml
import os

# Function to call GPT-3.5-turbo model
def generate_plantuml_code(api_key, prompt):
    openai.api_key = api_key
    response = openai.Completion.create(
        engine="gpt-3.5-turbo",
        prompt=prompt,
        max_tokens=150,
        n=1,
        stop=None,
        temperature=0.7,
    )
    plantuml_code = response.choices[0].text.strip()
    return plantuml_code

# Function to convert PlantUML code to SVG image
def plantuml_code_to_svg(plantuml_code):
    with open("diagram.txt", "w") as f:
        f.write(plantuml_code)

    plantuml.exec_cmd(["-tsvg", "diagram.txt"])

    with open("diagram.svg", "r") as f:
        svg = f.read()

    return svg

# Function to process user input and generate diagram
def create_diagram(api_key, description):
    plantuml_code = generate_plantuml_code(api_key, description)
    svg_image = plantuml_code_to_svg(plantuml_code)
    return plantuml_code, svg_image

# Gradio interface
api_key_input = gr.Textbox(label="Enter your OpenAI API key")
description_input = gr.Textbox(lines=5, label="Describe the diagram in natural language")
plantuml_code_output = gr.Textbox(lines=10, label="Generated PlantUML code")
diagram_output = gr.Image(plot=True, label="Diagram")

iface = gr.Interface(
    fn=create_diagram,
    inputs=[api_key_input, description_input],
    outputs=[plantuml_code_output, diagram_output],
)
iface.launch()