import gradio as gr
import torch
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, pipeline
model_name = "nouamanetazi/cover-letter-t5-base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
def generate_cover_letter(
name, job, company, background, experiences, max_length=300, temperature=1.0, top_p=0.9, max_time=10
):
model_args = {
"max_length": max_length,
"temperature": temperature,
"top_p": top_p,
# "top_k": 120,
"early_stopping": True,
"max_time": max_time,
"do_sample": True, # do_sample=False to force deterministic output
"num_return_sequences": 1, # number of samples to return
"min_length": 100,
"num_beams": 4,
# "num_beam_groups": 1,
# "diversity_penalty": 0,
# "repetition_penalty": 5.0,
# "length_penalty": 0,
# "remove_invalid_values": True,
"no_repeat_ngram_size": 3,
}
# Load the tokenizer and the distilgpt2 model
# Set up the transformers pipeline
text_generator = pipeline(
"text2text-generation", model=model, tokenizer=tokenizer, device=0 if torch.cuda.is_available() else -1
)
# Generate the text
prompt = f"coverletter name: {name} job: {job} at {company} background: {background} experiences: {experiences}"
generated_text = text_generator(prompt, **model_args)[0]["generated_text"]
return generated_text
title = "A Cover Letter Generator for Jobs"
description = ""
article = '
This is a Space App for the Cover Letter
'
examples = None
interface = gr.Interface(
fn=generate_cover_letter,
inputs=[
gr.inputs.Textbox(
label="Your name",
default="Sakil Ansari",
),
gr.inputs.Textbox(
label="The job you want to apply for",
default="Data Scientist",
),
gr.inputs.Textbox(
label="The company you want to apply for",
default="Google",
),
gr.inputs.Textbox(
lines=2,
label="Your education/background",
default="Master of Technology in Machine learning",
),
gr.inputs.Textbox(
lines=3,
label="Your skills/previous experiences",
default="I am the Author of Book and MTech in Machine Learning and achievement-driven professional with an experience of 3+ years in Data Science/Machine Learning/NLP/ Deep Learning/Data analytics. I am highly skilled in libraries like Sklearn, Numpy, Pandas, Matplotlib, Seaborn, Tensorflow, Faster-RCNN, Keras, Pytorch, FastAI, PowerBI/Tableau for Data Visualization, SQL/Oracle/NoSQL for databases and experience in NLP use cases related to named entity recognition, text summarization, text similarity, text generation.",
),
gr.inputs.Slider(20, 2048, default=400, label="Max Length"),
gr.inputs.Slider(0, 3, default=1.2, label="Temperature"),
gr.inputs.Slider(0, 1, default=0.9, label="Top P"),
gr.inputs.Slider(1, 200, default=20, label="Max time"),
],
outputs=[gr.outputs.Textbox(type="str", label="Cover Letter")],
title=title,
description=description,
examples=examples,
article=article,
layout="horizontal",
)
interface.launch(inline=False, debug=False)