drietsch's picture
Create app.py
7ec874f verified
raw
history blame
2.92 kB
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Load the Phi-3.5-mini-instruct model and tokenizer
model_name = "phi-3.5-mini-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Simple HTML template for the website
simple_website_template = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Personalized Website</title>
<style>
body {{
font-family: Arial, sans-serif;
background-color: #f4f4f4;
color: #333;
padding: 20px;
}}
h1 {{
color: {title_color};
}}
p {{
font-size: {font_size}px;
}}
</style>
</head>
<body>
<h1>{title}</h1>
<p>{content}</p>
</body>
</html>
"""
# Function to generate personalized content using Phi-3.5-mini-instruct
def personalize_website_llm(persona_text):
# Create a prompt for the model
prompt = f"Generate personalized website content for the following persona: {persona_text}. Provide a title and main content."
# Tokenize and generate output
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(inputs.input_ids, max_length=150)
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
# Split the response into a title and content
title, content = generated_text.split('\n', 1)
# Set the title color and font size based on simple heuristics
title_color = "#333"
font_size = 16
if "young" in persona_text.lower():
title_color = "#ff5733"
font_size = 18
if "professional" in persona_text.lower():
title_color = "#1c1c1c"
font_size = 14
# Create the personalized website HTML
personalized_website = simple_website_template.format(
title_color=title_color,
font_size=font_size,
title=title.strip(),
content=content.strip()
)
return personalized_website
# Create the Gradio interface
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
gr.HTML('<h3>Original Simple Website</h3>')
gr.HTML(simple_website_template.format(title_color="#333", font_size=16, title="Welcome to Our Website!", content="We are glad to have you here."))
with gr.Column():
persona_input = gr.Textbox(label="Define Persona", placeholder="Describe the persona here...")
generate_button = gr.Button("Generate Personalized Website")
with gr.Column():
personalized_output = gr.HTML(label="Personalized Website Output")
generate_button.click(personalize_website_llm, inputs=persona_input, outputs=personalized_output)
# Launch the app
demo.launch()