Importe

Wir beginnen mit dem Import einiger manueller Python-Bibliotheken. Die wichtigsten sind openai für den Zugriff auf GPT-4o-mini, sowie Abschlag Und weeasyprint um eine PDF-Model des endgültigen Lebenslaufs zu erstellen. Hinweis: Für dieses Projekt ist ein OpenAI-API-Schlüssel erforderlich, den ich aus einem separaten Python-Skript importiert habe.

from IPython.show import show, Markdown
from openai import OpenAI
from top_secret import my_sk

from markdown import markdown
from weasyprint import HTML

Schritt 1: Geben Sie Lebenslauf und JD ein

Als Nächstes laden wir unseren Eingabe-Resume als String in Python und verwenden den von Python Eingang() Funktion, damit wir sie kopieren und in jede Stellenbeschreibung einfügen können, wenn wir das Skript ausführen.

# open and skim the markdown file
with open("resumes/resume.md", "r", encoding="utf-8") as file:
resume_string = file.learn()

# enter job description
jd_string = enter()

Ein Element hier ist, dass die Der Lebenslauf wird in einem Markdown-Format gespeichert. Dies ist wichtig, da GPT-4o-mini dadurch dazu angeregt wird, einen neuen Lebenslauf im Markdown zu erstellen, den wir problemlos in ein PDF umwandeln können. Hinweis: ChatGPT (oder ähnliches) kann Ihren PDF-Lebenslauf in Markdown konvertieren.

Schritt 2: Eingabeaufforderung erstellen

Nachdem wir unseren Lebenslauf und JD importiert haben, können wir nun eine Eingabeaufforderung erstellen, um das Modell anzuweisen, den Lebenslauf zu optimieren. Ein Profi-Tipp hier ist: Verwenden Sie ChatGPT, um eine erste Model dieser Eingabeaufforderung zu schreiben weil 1) es ziemlich lang ist und 2) LLMs dazu neigen, Anweisungen zu schreiben, die eher auf die Erwartungen anderer LLMs abgestimmt sind.

Nach einigem Experimentieren bin ich bei der folgenden Eingabeaufforderungsvorlage gelandet, die den Lebenslauf umschreibt und zusätzliche Verbesserungsvorschläge macht, falls Qualifikationslücken bestehen.

prompt_template = lambda resume_string, jd_string : f"""
You're a skilled resume optimization knowledgeable specializing in tailoring
resumes to particular job descriptions. Your purpose is to optimize my resume and
present actionable solutions for enchancment to align with the goal position.

### Pointers:
1. **Relevance**:
- Prioritize experiences, abilities, and achievements **most related to the
job description**.
- Take away or de-emphasize irrelevant particulars to make sure a **concise** and
**focused** resume.
- Restrict work expertise part to 2-3 most related roles
- Restrict bullet factors below every position to 2-3 most related impacts

2. **Motion-Pushed Outcomes**:
- Use **robust motion verbs** and **quantifiable outcomes** (e.g.,
percentages, income, effectivity enhancements) to focus on impression.

3. **Key phrase Optimization**:
- Combine **key phrases** and phrases from the job description naturally to
optimize for ATS (Applicant Monitoring Methods).

4. **Extra Solutions** *(If Gaps Exist)*:
- If the resume doesn't absolutely align with the job description, counsel:
1. **Extra technical or mushy abilities** that I might add to make my
profile stronger.
2. **Certifications or programs** I might pursue to bridge the hole.
3. **Undertaking concepts or experiences** that will higher align with the position.

5. **Formatting**:
- Output the tailor-made resume in **clear Markdown format**.
- Embrace an **"Extra Solutions"** part on the finish with
actionable enchancment suggestions.

---

### Enter:
- **My resume**:
{resume_string}

- **The job description**:
{jd_string}

---

### Output:
1. **Tailor-made Resume**:
- A resume in **Markdown format** that emphasizes related expertise,
abilities, and achievements.
- Incorporates job description **key phrases** to optimize for ATS.
- Makes use of robust language and is not than **one web page**.

2. **Extra Solutions** *(if relevant)*:
- Listing **abilities** that would strengthen alignment with the position.
- Suggest **certifications or programs** to pursue.
- Counsel **particular tasks or experiences** to develop.
"""

Schritt 3: API-Aufruf durchführen

Mithilfe der obigen Eingabeaufforderungsvorlage können wir mithilfe der Eingabe „Lebenslauf“ und JD dynamisch eine Eingabeaufforderung erstellen und diese dann über deren API an OpenAI senden.

# create immediate
immediate = prompt_template(resume_string, jd_string)

# setup api consumer
consumer = OpenAI(api_key=my_sk)

# make api name
response = consumer.chat.completions.create(
mannequin="gpt-4o-mini",
messages=(
{"position": "system", "content material": "Knowledgeable resume author"},
{"position": "person", "content material": immediate}
),
temperature = 0.7
)

# extract response
response_string = response.selections(0).message.content material

Schritt 4: Neuen Lebenslauf speichern

Abschließend können wir den optimierten Lebenslauf und Verbesserungsvorschläge extrahieren.

# separate new resume from enchancment solutions
response_list = response_string.cut up("## Extra Solutions")

Für den Lebenslauf können wir die Markdown-Ausgabe mithilfe der Markdown-Bibliothek in HTML konvertieren. Konvertieren Sie dann den HTML-Code mit weasyprint in ein PDF.

# save as PDF
output_pdf_file = "resumes/resume_new.pdf"

# Convert Markdown to HTML
html_content = markdown(response_list(0))

# Convert HTML to PDF and save
HTML(string=html_content).write_pdf(output_pdf_file,
stylesheets=('resumes/fashion.css'))

So sieht das Endergebnis aus.

Endgültige PDF-Model des Lebenslaufs. Bild vom Autor.

Verbesserungsvorschläge können wir direkt ausdrucken.

show(Markdown(response_list(1)))
Verbesserungsvorschläge. Bild vom Autor.

Bonus: Erstellen Sie eine GUI

Obwohl der obige Code diesen Prozess bis zu einem gewissen Grad rationalisiert, können wir es noch besser machen. Wir können die Benutzerfreundlichkeit dieses Instruments verbessern Erstellen Sie mit Gradio eine einfache Weboberfläche.

Das Endprodukt ist unten dargestellt. Ein Benutzer kann eine Markdown-Datei seines Lebenslaufs hochladen und diese einfacher in jede Stellenbeschreibung einfügen. Ich habe außerdem einen Bereich hinzugefügt, in dem Benutzer den neuen Lebenslauf bearbeiten können, bevor sie ihn als PDF exportieren.

Demo der endgültigen GUI. GIF des Autors.

Der Beispielcode ist auf GitHub verfügbar Repository Hier. Schauen Sie sich das an YouTube-Video um zu sehen, wie ich den Code durchspreche.

Die Anpassung des Lebenslaufs an bestimmte Stellenbeschreibungen ist zwar eine wirksame Möglichkeit, eine Bewerbung hervorzuheben, kann jedoch recht mühsam sein. Hier gehen wir durch die Implementierung eines KI-gestützten Instruments zur Lebenslaufoptimierung unter Verwendung von Python und der OpenAI-API.

Wenn Sie Fragen haben oder tiefer in eines der behandelten Themen eintauchen möchten, lassen Sie es mich in den Kommentaren wissen 🙂

y2b.io hat mir geholfen, diesen Artikel zu schreiben.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert