File size: 3,405 Bytes
c78c3cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14a69a8
c78c3cb
14a69a8
c78c3cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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 = '<div style="text-align:center">This is a Space App for the Cover Letter</div>'
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)