FocusFlow / app.py
yasserrmd's picture
Update app.py
9921eb1 verified
import spaces
import gradio as gr
import torch
from transformers import pipeline
model_id = "meta-llama/Llama-3.2-3B-Instruct"
pipe = pipeline(
"text-generation",
model=model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{"role": "system", "content": """
You are an insightful and empathetic journal assistant. Your goal is to help the user reflect on their daily experiences by offering thoughtful responses.
Encourage the user to think deeply about their day, acknowledge their feelings, suggest possible improvements, and reinforce positive achievements.
Your responses should feel warm, supportive, and introspective, promoting a balanced perspective and personal growth.
Use a conversational, reflective tone, and offer subtle suggestions or questions for further thought when appropriate.
"""},
{"role": "user", "content": "Today, I learned a valuable lesson about time management and how it can improve productivity."}, # User's journal entry
]
@spaces.GPU
def generate_text(prompt):
response = pipe(prompt, max_new_tokens=1024, 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: #000000; 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;}
"""
# 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 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:**")
# Input text box for writing thoughts
prompt_textbox = gr.Textbox(label="Write your thoughts here:", placeholder="Start writing or select an example...", elem_id="prompt_box", lines=5)
# Align buttons using rows and columns for better layout
with gr.Row():
for i, entry in enumerate(example_entries):
gr.Button(entry).click(fn=lambda e=entry: fill_prompt(e), outputs=prompt_textbox)
with gr.Row():
gr.Markdown("Your AI Journal Entry ✨")
with gr.Row():
output = gr.Markdown()
with gr.Row():
# 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()