import spaces import gradio as gr import torch from transformers import pipeline # Set up the model model_id = "meta-llama/Llama-3.2-3B" pipe = pipeline( "text-generation", model=model_id, torch_dtype=torch.bfloat16, device_map="cuda" ) @spaces.GPU def generate_text(prompt): response = pipe(prompt, max_length=100, num_return_sequences=1) return response[0]['generated_text'] # Custom CSS for the app css = """ body {background-color: #f0f8ff; font-family: 'Arial', sans-serif;} .gradio-container {max-width: 900px; margin: 0 auto; border-radius: 15px; padding: 30px; background-color: white; box-shadow: 0 4px 8px rgba(0,0,0,0.1);} textarea {border-radius: 10px; padding: 15px; font-size: 16px; border: 2px solid #ddd; width: 100%;} button {background-color: #4caf50; color: white; border-radius: 10px; padding: 10px 15px; font-size: 16px; border: none; cursor: pointer; margin-top: 10px; margin-right: 5px;} button:hover {background-color: #45a049;} h1 {color: #333; font-size: 36px; text-align: center; margin-bottom: 20px;} h2 {color: #555; font-size: 24px; margin-bottom: 10px;} footer {text-align: center; padding: 20px; font-size: 14px;} .grid {display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; justify-items: stretch;} """ # Define example entries example_entries = [ "Today, I finished a major project that I’ve been working on for weeks. It felt great to finally get it done, and I’m proud of the effort I put in.", "I faced a tough challenge today when I had to give a presentation with very little preparation. Despite feeling nervous, I managed to pull through by staying calm and focused.", "Tomorrow, my goal is to focus on improving my communication skills during team meetings. I want to make sure I’m clear and concise in expressing my ideas.", "I’m grateful for the support I received from my coworkers today. Their encouragement really helped me push through a stressful moment.", "I learned a new approach to managing my time more effectively today. I’m going to apply this to my daily routine to see if it helps me stay more productive." ] # Function to return the selected prompt def fill_prompt(selected_prompt): return gr.update(value=selected_prompt) # Create the Gradio interface with gr.Blocks(css=css) as journal_app: # Header and introduction gr.Markdown("# 📝 Productivity Journal") gr.Markdown("Welcome to your personalized productivity journal. Click an example below or write your thoughts!") # Example journal entries section gr.Markdown("### **Select an example to start writing:**") # Align buttons in grid format for better layout with gr.Row(): prompt_textbox = gr.Textbox(label="Write your thoughts here:", placeholder="Start writing or select an example...", elem_id="prompt_box", lines=5) with gr.Column(): # Arrange example buttons in grid format with gr.Box(elem_classes="grid"): for i, entry in enumerate(example_entries): gr.Button(f"Example {i+1}").click(fn=lambda e=entry: fill_prompt(e), inputs=None, outputs=prompt_textbox) with gr.Row(): # Output for generated text output = gr.Textbox(label="Your AI Journal Entry ✨", lines=6) # Generate button generate_button = gr.Button("Generate Entry ✍️") # Define the click event for text generation generate_button.click(fn=generate_text, inputs=prompt_textbox, outputs=output) # Footer gr.Markdown("🌞 Keep your spirits high and stay productive! 😊") gr.Markdown("Made with ❤️ using Gradio and Llama-3.2") # Launch the app journal_app.launch()