Spaces:
Running
Running
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Import required libraries
|
2 |
+
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
|
3 |
+
import gradio as gr
|
4 |
+
|
5 |
+
# Load the Hugging Face model and tokenizer
|
6 |
+
model_name = "TroyDoesAI/Mermaid-Llama-3-8B"
|
7 |
+
|
8 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
9 |
+
model = AutoModelForCausalLM.from_pretrained(model_name)
|
10 |
+
|
11 |
+
# Define the pipeline for text generation
|
12 |
+
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
|
13 |
+
|
14 |
+
# Function to generate Mermaid.js code and return diagram
|
15 |
+
def generate_mermaid_code(user_input):
|
16 |
+
# Generate Mermaid.js code using the model
|
17 |
+
prompt = f"Create a Mermaid.js diagram based on the following story:\n{user_input}\nMermaid.js Code:"
|
18 |
+
generated = pipe(prompt, max_length=200, num_return_sequences=1, do_sample=True)
|
19 |
+
|
20 |
+
# Extract the generated Mermaid.js code
|
21 |
+
mermaid_code = generated[0]['generated_text'].split("Mermaid.js Code:")[-1].strip()
|
22 |
+
|
23 |
+
# Create the full output for Gradio with Mermaid.js rendering
|
24 |
+
mermaid_output = f"""
|
25 |
+
```mermaid
|
26 |
+
{mermaid_code}
|
27 |
+
```
|
28 |
+
"""
|
29 |
+
return mermaid_code, mermaid_output
|
30 |
+
|
31 |
+
# Define the Gradio interface
|
32 |
+
with gr.Blocks() as demo:
|
33 |
+
gr.Markdown("## Mermaid.js Diagram Generator")
|
34 |
+
gr.Markdown("Provide a story, and the AI will generate a Mermaid.js diagram code.")
|
35 |
+
|
36 |
+
with gr.Row():
|
37 |
+
input_text = gr.Textbox(label="Story Input", lines=5, placeholder="Enter your story here...")
|
38 |
+
output_code = gr.Textbox(label="Generated Mermaid.js Code", lines=5)
|
39 |
+
|
40 |
+
output_diagram = gr.Markdown(label="Mermaid.js Diagram")
|
41 |
+
|
42 |
+
# Button to trigger generation
|
43 |
+
generate_button = gr.Button("Generate Diagram")
|
44 |
+
|
45 |
+
# Link input to output
|
46 |
+
generate_button.click(generate_mermaid_code, inputs=input_text, outputs=[output_code, output_diagram])
|
47 |
+
|
48 |
+
# Launch the Gradio interface
|
49 |
+
demo.launch()
|