File size: 4,976 Bytes
37185e0 052a8fc 37185e0 c0d54a6 37185e0 2bd7b24 37185e0 052a8fc 37185e0 c0d54a6 37185e0 c0d54a6 37185e0 c0d54a6 37185e0 c0d54a6 37185e0 c0d54a6 37185e0 2bd7b24 052a8fc 2bd7b24 052a8fc 2bd7b24 052a8fc 2bd7b24 12d8a5c 052a8fc 2bd7b24 12d8a5c 2bd7b24 052a8fc 2bd7b24 12d8a5c 2bd7b24 052a8fc 2bd7b24 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
import gradio as gr
import requests
import language_tool_python
from bs4 import BeautifulSoup
import os
from datetime import datetime # Import datetime for date validation
# Load Groq Cloud API key securely from environment variables
groq_api_key = os.getenv("GROQ_CLOUD_API_KEY")
# Scraping function to fetch user public data (for demo purposes, we will simulate this)
def fetch_public_data(name, dob, city):
# Simulate fetched bio data for demonstration purposes
bio = f"{name} is a software engineer from {city} with over 10 years of experience. Known for work in AI, cloud computing, and leadership in various engineering teams."
# Simulate LinkedIn profile scraping (replace this with actual scraping logic)
linkedin_profile = f"https://linkedin.com/in/{name.replace(' ', '').lower()}"
return bio, linkedin_profile
# Helper function to call Groq Cloud LLM API to generate email
def generate_email_from_groq(bio, company_name, role):
url = "https://api.groq.cloud/generate" # Replace with the correct Groq Cloud API URL
headers = {
"Authorization": f"Bearer {groq_api_key}", # Use the API key securely from environment
"Content-Type": "application/json",
}
prompt = f"Write a professional email applying for a {role} position at {company_name}. Use this bio: {bio}. The email should include an introduction, relevant experience, skills, and a closing."
data = {
"model": "groq-model", # Adjust model name based on Groq documentation
"prompt": prompt,
"max_tokens": 300
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
return response.json().get("choices")[0].get("text").strip()
else:
# Print or log the error for debugging
print(f"Error: {response.status_code}, {response.text}")
return "Error generating email. Please check your API key or try again later."
# Grammar and Tone Checker Function
def check_grammar(email_text):
tool = language_tool_python.LanguageTool('en-US')
matches = tool.check(email_text)
corrected_text = language_tool_python.utils.correct(email_text, matches)
return corrected_text
# Function to validate the DOB format (DD-MM-YYYY)
def validate_dob(dob):
try:
# Attempt to parse the DOB to the expected format
datetime.strptime(dob, "%d-%m-%Y")
return True
except ValueError:
# Return False if the format is invalid
return False
# Main function to create the email and allow for saving, editing, or copying
def create_email(name, dob, city, company_name, role, email, phone):
# Validate the DOB format (DD-MM-YYYY)
if not validate_dob(dob):
return "Invalid Date of Birth format. Please use DD-MM-YYYY."
# Step 1: Fetch public data based on user info
bio, linkedin_profile = fetch_public_data(name, dob, city)
# Step 2: Generate the email using Groq Cloud LLM
generated_email = generate_email_from_groq(bio, company_name, role)
# Step 3: Add the user's email, phone number, and LinkedIn profile to the signature
signature = f"\n\nBest regards,\n{name}\nEmail: {email}\nPhone: {phone}\nLinkedIn: {linkedin_profile}"
# Step 4: Run grammar and tone check
polished_email = check_grammar(generated_email + signature)
# Return the final polished email with the signature
return polished_email
# Define interface with Gradio
def gradio_ui():
# Define inputs
name_input = gr.Textbox(label="Name", placeholder="Enter your name")
dob_input = gr.Textbox(label="Date of Birth", placeholder="Enter your date of birth (DD-MM-YYYY)")
city_input = gr.Textbox(label="City", placeholder="Enter your city of residence")
company_name_input = gr.Textbox(label="Company Name", placeholder="Enter the name of the company you are applying to")
role_input = gr.Textbox(label="Role", placeholder="Enter the role you are applying for")
email_input = gr.Textbox(label="Email Address", placeholder="Enter your email address")
phone_input = gr.Textbox(label="Phone Number", placeholder="Enter your phone number")
# Define output for the generated email
email_output = gr.Textbox(label="Generated Email", placeholder="Your generated email will appear here", lines=10)
# Create the Gradio interface
demo = gr.Interface(
fn=create_email, # Function to call when the user submits
inputs=[name_input, dob_input, city_input, company_name_input, role_input, email_input, phone_input],
outputs=[email_output],
title="Email Writing AI Agent",
description="Generate a professional email for a job application by providing your basic info.",
allow_flagging="never" # Disable flagging
)
# Launch the Gradio app
demo.launch()
# Start the Gradio app when running the script
if __name__ == "__main__":
gradio_ui()
|