EmailGenie / app.py
abhilashnl2006's picture
Update app.py
32bfdde verified
raw
history blame contribute delete
No virus
2.93 kB
import os
import gradio as gr
from huggingface_hub import InferenceClient
import logging
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# Get the token from the environment variable set in HF Spaces
hf_token = os.environ.get("HUGGINGFACE_TOKEN")
if not hf_token:
logger.error("HUGGINGFACE_TOKEN environment variable is not set")
raise ValueError("HUGGINGFACE_TOKEN environment variable is not set")
# Model name
model_name = "meta-llama/Llama-2-7b-chat-hf"
# Create an InferenceClient
client = InferenceClient(model=model_name, token=hf_token)
def generate_text(prompt):
try:
logger.info(f"Generating text for prompt: {prompt[:50]}...")
response = client.text_generation(prompt, max_new_tokens=500, temperature=0.7)
return response
except Exception as e:
logger.error(f"Error in generate_text: {str(e)}")
return f"An error occurred: {str(e)}"
def generate_email(industry, recipient_role, company_details):
try:
logger.info(f"Generating email for {industry}, {recipient_role}")
prompt = f"Generate a personalized cold outreach email for a {recipient_role} in the {industry} industry. Company details: {company_details}"
return generate_text(prompt)
except Exception as e:
logger.error(f"Error in generate_email: {str(e)}")
return f"An error occurred in generate_email: {str(e)}"
def refine_email(email, tone, context):
try:
logger.info(f"Refining email with tone: {tone}")
prompt = f"Refine the following email to match a {tone} tone and consider this context: {context}\n\nEmail: {email}"
return generate_text(prompt)
except Exception as e:
logger.error(f"Error in refine_email: {str(e)}")
return f"An error occurred in refine_email: {str(e)}"
# Gradio interface
with gr.Blocks() as demo:
gr.Markdown("# EmailGenie: AI-Powered Cold Email Generator")
with gr.Tab("Generate Email"):
industry = gr.Textbox(label="Industry")
recipient_role = gr.Textbox(label="Recipient Role")
company_details = gr.Textbox(label="Company/Personal Details", lines=5)
generate_button = gr.Button("Generate Email")
output = gr.Textbox(label="Generated Email", lines=10)
generate_button.click(generate_email, inputs=[industry, recipient_role, company_details], outputs=output)
with gr.Tab("Refine Email"):
email_input = gr.Textbox(label="Input Email", lines=10)
tone = gr.Dropdown(["Formal", "Casual", "Enthusiastic"], label="Desired Tone")
context = gr.Textbox(label="Additional Context", lines=3)
refine_button = gr.Button("Refine Email")
refined_output = gr.Textbox(label="Refined Email", lines=10)
refine_button.click(refine_email, inputs=[email_input, tone, context], outputs=refined_output)
demo.launch()