|
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."}, |
|
] |
|
|
|
@spaces.GPU |
|
def generate_text(prompt): |
|
response = pipe(prompt, max_new_tokens=1024, num_return_sequences=1) |
|
return response[0]['generated_text'] |
|
|
|
|
|
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;} |
|
""" |
|
|
|
|
|
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." |
|
] |
|
|
|
|
|
def fill_prompt(selected_prompt): |
|
return selected_prompt |
|
|
|
|
|
with gr.Blocks(css=css) as journal_app: |
|
|
|
|
|
gr.Markdown("# 📝 Productivity Journal") |
|
gr.Markdown("Welcome to your personalized productivity journal. Click an example below or write your thoughts!") |
|
|
|
|
|
gr.Markdown("### **Select an example to start writing:**") |
|
|
|
|
|
prompt_textbox = gr.Textbox(label="Write your thoughts here:", placeholder="Start writing or select an example...", elem_id="prompt_box", lines=5) |
|
|
|
|
|
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 = gr.Button("Generate Entry ✍️") |
|
|
|
generate_button.click(fn=generate_text, inputs=prompt_textbox, outputs=output) |
|
|
|
|
|
gr.Markdown("🌞 Keep your spirits high and stay productive! 😊") |
|
gr.Markdown("Made with ❤️ using Gradio and Llama-3.2") |
|
|
|
|
|
journal_app.launch() |
|
|