Spaces:
Runtime error
Runtime error
import gradio as gr | |
import groq | |
import os | |
from typing import List, Tuple | |
from dotenv import load_dotenv | |
load_dotenv() | |
# Initialize the Groq client | |
client = groq.Groq(api_key=os.getenv("GROQ_API_KEY")) | |
# Initialize an empty list to store chat history | |
chat_history = [] | |
def generate_email(name: str, job_title: str, company_name: str, purpose: str, tone: str, length: str, jargon: str): | |
prompt = f"""Write a cold email with the following details: | |
Recipient: {name}, {job_title} at {company_name} | |
Purpose: {purpose} | |
Tone: {tone} | |
Length: {length} | |
Include industry jargon: {jargon} | |
Please write the email now:""" | |
# Add user input to chat history | |
chat_history.append(("User", prompt)) | |
# Generate email using Groq API | |
chat_completion = client.chat.completions.create( | |
messages=[ | |
{ | |
"role": "system", | |
"content": "You are an expert cold email writer. Your task is to write personalized and effective cold emails based on the given information. The email should always have a clear and concise subject line." | |
}, | |
{ | |
"role": "user", | |
"content": prompt | |
} | |
], | |
model="llama-3.1-8b-instant", | |
max_tokens=1000, | |
) | |
# Extract the generated email | |
generated_email = chat_completion.choices[0].message.content | |
# Add generated email to chat history | |
chat_history.append(("Assistant", generated_email)) | |
return generated_email | |
# Define the Gradio interface | |
with gr.Blocks() as app: | |
gr.Markdown("# Cold Email Generator") | |
with gr.Row(): | |
with gr.Column(): | |
name = gr.Textbox(label="Recipient Name") | |
job_title = gr.Textbox(label="Job Title") | |
company_name = gr.Textbox(label="Company Name") | |
with gr.Column(): | |
purpose = gr.Textbox(label="Purpose of the Email") | |
tone = gr.Radio(["Formal", "Casual", "Friendly"], label="Desired Tone") | |
length = gr.Radio(["Short", "Medium", "Long"], label="Preferred Email Length") | |
jargon = gr.Radio(["Yes", "No"], label="Include Industry-Specific Jargon") | |
generate_button = gr.Button("Generate Email") | |
output = gr.Textbox(label="Generated Email") | |
generate_button.click( | |
generate_email, | |
inputs=[name, job_title, company_name, purpose, tone, length, jargon], | |
outputs=[output] | |
) | |
app.launch() |