bhaskartripathi commited on
Commit
d7ac493
1 Parent(s): b55f1be

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -44
app.py CHANGED
@@ -1,50 +1,42 @@
1
  import gradio as gr
2
  import openai
3
- import plantuml
 
4
  import os
5
 
6
- def generate_plantuml_code(api_key, prompt):
7
  openai.api_key = api_key
8
- messages = [
9
- {'role': 'system', 'content': 'You are a helpful assistant.'},
10
- {'role': 'user', 'content': prompt}
11
- ]
12
-
13
- completions = openai.ChatCompletion.create(
14
- model="gpt-3.5-turbo",
15
- messages=messages,
16
- max_tokens=512,
17
- n=1,
18
- stop=None,
19
- temperature=0.7,
20
  )
21
- message = completions.choices[0].message['content']
22
- return message
23
-
24
- def plantuml_code_to_svg(plantuml_code):
25
- with open("diagram.txt", "w") as f:
26
- f.write(plantuml_code)
27
-
28
- os.system(f"java -jar plantuml.jar -tsvg diagram.txt")
29
-
30
- with open("diagram.svg", "r") as f:
31
- svg = f.read()
32
-
33
- return svg
34
-
35
- def create_diagram(api_key, description):
36
- plantuml_code = generate_plantuml_code(api_key, description)
37
- svg_image = plantuml_code_to_svg(plantuml_code)
38
- return plantuml_code, svg_image
39
-
40
- api_key_input = gr.Textbox(label="Enter your OpenAI API key")
41
- description_input = gr.Textbox(lines=5, label="Describe the diagram in natural language")
42
- plantuml_code_output = gr.Textbox(lines=10, label="Generated PlantUML code")
43
- diagram_output = gr.Image(plot=True, label="Diagram")
44
-
45
- iface = gr.Interface(
46
- fn=create_diagram,
47
- inputs=[api_key_input, description_input],
48
- outputs=[plantuml_code_output, diagram_output],
49
- )
50
- iface.launch()
 
1
  import gradio as gr
2
  import openai
3
+ from plantuml import PlantUML
4
+ import tempfile
5
  import os
6
 
7
+ def generate_plantuml_code(api_key, input_text):
8
  openai.api_key = api_key
9
+ response = openai.ChatCompletion.create(
10
+ model='gpt-3.5-turbo',
11
+ messages=[{"role": "user", "content": f"Generate PlantUML code for the following use case: {input_text}"}],
12
+ max_tokens=150,
13
+ temperature=0,
 
 
 
 
 
 
 
14
  )
15
+ plantuml_code = response["choices"][0]["message"]["content"]
16
+ return plantuml_code
17
+
18
+ def render_plantuml_diagram(plantuml_code):
19
+ with tempfile.TemporaryDirectory() as tempdir:
20
+ puml = PlantUML(f"file://{tempdir}")
21
+ puml.processes(plantuml_code.encode())
22
+ with open(os.path.join(tempdir, "output.svg"), "r") as f:
23
+ svg_diagram = f.read()
24
+ return svg_diagram
25
+
26
+ def app(api_key, input_text="", plantuml_code=""):
27
+ if input_text:
28
+ plantuml_code = generate_plantuml_code(api_key, input_text)
29
+ svg_diagram = render_plantuml_diagram(plantuml_code)
30
+ return plantuml_code, svg_diagram
31
+
32
+ inputs = [
33
+ gr.inputs.Textbox(label="Enter OpenAI API Key"),
34
+ gr.inputs.Textbox(lines=5, label="Enter use case in natural language (optional)"),
35
+ gr.inputs.Textbox(lines=5, label="Paste PlantUML code (optional)")
36
+ ]
37
+ outputs = [
38
+ gr.outputs.Textbox(label="Generated PlantUML Code"),
39
+ gr.outputs.HTML(label="Rendered Diagram")
40
+ ]
41
+
42
+ gr.Interface(fn=app, inputs=inputs, outputs=outputs).launch()