Spaces:
Sleeping
Sleeping
import os | |
import gradio as gr | |
from groq import Groq | |
client = Groq( | |
api_key=os.environ.get("GROQ_API_KEY"), | |
) | |
def structure_info(info): | |
prompt = f"Please just structure and summarize the following information about a person or company and just simply give the result directly: {info}" | |
chat_completion = client.chat.completions.create( | |
messages=[ | |
{ | |
"role": "user", | |
"content": prompt, | |
} | |
], | |
model="llama-3.1-8b-instant", | |
) | |
return chat_completion.choices[0].message.content | |
def generate_email(sender_name, email_subject, recipient, structured_info): | |
prompt = f"""I'm {sender_name}. Write a personalized email to {recipient} about {email_subject} which will be personalized to {recipient} by understanding {structured_info}. The email should introduce the sender, briefly describe the subject, and highlight its key benefits or relevance to the recipient's profile or company.""" | |
chat_completion = client.chat.completions.create( | |
messages=[ | |
{ | |
"role": "user", | |
"content": prompt, | |
} | |
], | |
model="llama-3.1-8b-instant", | |
) | |
return chat_completion.choices[0].message.content | |
def email_interface(name, subject, recipient, recipient_info): | |
structured_info = structure_info(recipient_info) | |
return generate_email(name, subject, recipient, structured_info) | |
with gr.Blocks(theme=gr.themes.Monochrome()) as demo: | |
gr.Markdown( | |
""" | |
# 📧 EmailGenie | |
Generate personalized emails based on recipient information using AI. | |
""" | |
) | |
with gr.Row(): | |
with gr.Column(scale=1): | |
name = gr.Textbox(label="Your Name", placeholder="John Doe") | |
subject = gr.Textbox(label="Email Subject", placeholder="Collaboration on AI Project") | |
with gr.Column(scale=1): | |
recipient = gr.Textbox(label="Recipient Name/Company", placeholder="TechCorp") | |
recipient_info = gr.Textbox( | |
label="Recipient Information", | |
placeholder="e.g., Name, Motive, What they do", | |
lines=3 | |
) | |
generate_button = gr.Button("Generate Email", variant="primary") | |
output = gr.Textbox(label="Generated Email", lines=10) | |
generate_button.click( | |
email_interface, | |
inputs=[name, subject, recipient, recipient_info], | |
outputs=output | |
) | |
gr.Examples( | |
[ | |
["John Doe", "Collaboration on AI Project", "TechCorp", "TechCorp is a leading AI research company focused on developing cutting-edge machine learning algorithms."], | |
["Jane Smith", "AI Workshop Invitation", "Dr. Alex Johnson", "Dr. Alex Johnson is a renowned AI researcher specializing in natural language processing at Stanford University."] | |
], | |
inputs=[name, subject, recipient, recipient_info], | |
outputs=output, | |
fn=email_interface, | |
cache_examples=True, | |
) | |
# Add a slider for email formality | |
formality = gr.Slider(minimum=1, maximum=5, value=3, step=1, label="Email Formality (1: Casual, 5: Formal)") | |
# Add a checkbox for including a call-to-action | |
include_cta = gr.Checkbox(label="Include Call-to-Action") | |
# Add a dropdown for email tone | |
tone = gr.Dropdown(["Friendly", "Professional", "Enthusiastic", "Neutral"], label="Email Tone", value="Professional") | |
# Add an accordion with tips | |
with gr.Accordion("Tips for Effective Emails"): | |
gr.Markdown(""" | |
1. Keep it concise and to the point | |
2. Use a clear and descriptive subject line | |
3. Personalize the email based on the recipient's background | |
4. Proofread before sending | |
5. Include a clear call-to-action if necessary | |
""") | |
if __name__ == "__main__": | |
demo.launch() |