Spaces:
Build error
Build error
File size: 4,279 Bytes
3005655 | 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 | import os
import tempfile
from transformers import AutoTokenizer, AutoModelForCausalLM
from fpdf import FPDF
import gradio as gr
# Initialize GPT-2 model and tokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
def generate_cover_letter(job_title, job_description, hiring_manager, company_name, company_address, required_skills, company_trait, resume_text):
resume_data = {
"name": "[input your name]",
"address": "[input your address]",
"city": "[input your city]",
"email": "[your email]",
"phone": "+1234567890",
"skills": "[Change this with your actual relevant skills] Python, Flask, SQL",
"experience": "[input your experience]",
"achievements": "I managed to [input your projects]",
"interests": "contributing to open-source projects"
}
prompt = f"""
Dear {hiring_manager},
I am writing to express my interest in the {job_title} position at {company_name}. With a strong background in {resume_data["skills"]}, particularly my proficiency in {resume_data["skills"]}, I am enthusiastic about the opportunity to apply my expertise to the innovative work being done at your company.
Based on my resume, which includes {resume_data["experience"]}, I am confident that my skills and experiences make me a suitable candidate for this role.
The job description mentions that you are looking for someone with experience in {required_skills}. In my previous roles, I have successfully {resume_data["achievements"]}.
I am particularly drawn to {company_name} because of its commitment to {company_trait}. This commitment resonates with my own professional ethos and my passion for {resume_data["interests"]}.
I am excited about the opportunity to contribute to {company_name} and help achieve your goals.
Sincerely,
{resume_data["name"]}
"""
input_ids = tokenizer.encode(prompt, return_tensors='pt')
max_length = 500
generated_output = model.generate(input_ids, max_length=max_length, num_return_sequences=1, temperature=0.7)
cover_letter = tokenizer.decode(generated_output[0], skip_special_tokens=True)
return cover_letter
def save_pdf_cover_letter(cover_letter_text):
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Cover Letter", ln=True, align='C')
pdf.ln(10)
pdf.set_font("Arial", size=11)
pdf.multi_cell(0, 10, cover_letter_text)
temp_file_path = tempfile.mktemp(suffix='.pdf')
pdf.output(temp_file_path)
return temp_file_path
def process_resume_and_generate_cover_letter(resume, job_title, job_description, hiring_manager, company_name, company_address, required_skills, company_trait):
resume_text = resume.name # Directly get the text content
cover_letter_text = generate_cover_letter(job_title, job_description, hiring_manager, company_name, company_address, required_skills, company_trait, resume_text)
pdf_path = save_pdf_cover_letter(cover_letter_text)
return pdf_path
resume_input = gr.File(label="Upload your resume (text format)")
job_title_input = gr.Textbox(label="Job Title")
job_description_input = gr.Textbox(label="Job Description")
hiring_manager_input = gr.Textbox(label="Hiring Manager")
company_name_input = gr.Textbox(label="Company Name")
company_address_input = gr.Textbox(label="Company Address")
required_skills_input = gr.Textbox(label="Required Skills")
company_trait_input = gr.Textbox(label="Company Trait")
output = gr.File(label="Download Cover Letter")
iface = gr.Interface(
fn=process_resume_and_generate_cover_letter,
inputs=[
resume_input,
job_title_input,
job_description_input,
hiring_manager_input,
company_name_input,
company_address_input,
required_skills_input,
company_trait_input
],
outputs=output,
title="Cover Letter Generator",
description="Upload your resume and fill in the job qualifications to generate a personalized cover letter."
)
if __name__ == "__main__":
iface.launch()
|