Spaces:
Build error
Build error
File size: 2,137 Bytes
3a9f231 654edce 3a9f231 d4c7c80 96e060d d4c7c80 194d48b d4c7c80 3a9f231 972d423 3a9f231 13a2d1f 294c647 13a2d1f 3a9f231 4d5da8b 8cee785 | 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 | import os
os.environ["OPENAI_API_KEY"] = os.getenv('api_key')
import openai
import gradio as gr
from PIL import Image
import base64
import requests
import httpx
def get_completion(prompt, model="gpt-3.5-turbo"):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0, # this i the degree of randomness of the model's output
)
return response.choices[0].message["content"]
def topic_diagram(topic):
prompt_sum = f"""
Imagine you are Charles Darwin, an expert in generating diagrams that explain complex concepts. Your goal is to create a diagram that visually represents a specific concept related to {topic}. The diagram should effectively communicate the relationships, processes, or hierarchies involved in the concept.
Generate code for the diagram in mermaid syntax surrounded by ```.
Output:
Mermaid code: ```code```
"""
response_sum = get_completion(prompt_sum)
return response_sum
import re
def extract_text_between_backticks(text):
pattern = r"```(.+?)```"
matches = re.findall(pattern, text, re.DOTALL)
return matches
def generate_diagram(mermaid_code):
graphbytes = mermaid_code.encode("ascii")
base64_bytes = base64.b64encode(graphbytes)
base64_string = base64_bytes.decode("ascii")
return "https://mermaid.ink/img/" + base64_string
def visualize_diagram(input_text):
llm_output = topic_diagram(input_text)
mermaid_code = extract_text_between_backticks(llm_output)
print (mermaid_code)
url = generate_diagram(mermaid_code[0])
print ("Url",url)
img = Image.open(requests.get(url, headers={'content-type': 'image/png'},stream=True).raw)
print ("Image",img)
return img
input_text = gr.inputs.Textbox(label="Enter your question")
output_image = gr.outputs.Image(type="pil", label="Diagram")
gr.Interface(
fn=visualize_diagram,
inputs=input_text,
outputs=output_image,
title="Darwin's Diagram Visualizer",
description="Enter your question and see the generated diagram.",
allow_flagging=False
).launch() |