import gradio as gr from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline import torch # Set the random seed for reproducibility torch.random.manual_seed(0) # Load the model and tokenizer model_name = "microsoft/Phi-3.5-mini-instruct" model = AutoModelForCausalLM.from_pretrained( model_name, device_map="auto", torch_dtype="auto", trust_remote_code=True ) tokenizer = AutoTokenizer.from_pretrained(model_name) # Set up the pipeline pipe = pipeline( "text-generation", model=model, tokenizer=tokenizer, ) # Define the generation arguments generation_args = { "max_new_tokens": 150, "return_full_text": False, "temperature": 0.7, "do_sample": False, } # Simple HTML template for the website simple_website_template = """ Personalized Website

{title}

{content}

""" # Function to generate personalized content using Phi-3.5-mini-instruct def personalize_website_llm(persona_text): # Construct the conversation history messages = [ {"role": "system", "content": "You are a helpful AI assistant that personalizes content for websites."}, {"role": "user", "content": f"Persona: {persona_text}. Generate a personalized website content including a title and a paragraph."}, ] # Generate content using the pipeline output = pipe(messages, **generation_args) generated_text = output[0]['generated_text'].strip() # Simple heuristic to split title and content lines = generated_text.split('\n') title = lines[0] content = "\n".join(lines[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, content=content ) return personalized_website # Create the Gradio interface with gr.Blocks() as demo: with gr.Row(): with gr.Column(): gr.HTML('

Original Simple Website

') 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()