Update app.py
Browse files
app.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
import gradio as gr
|
2 |
-
import cohere
|
3 |
import os
|
|
|
4 |
from docx import Document as DocxDocument
|
5 |
from docx.shared import Pt
|
6 |
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
|
@@ -10,13 +10,14 @@ import fitz # PyMuPDF
|
|
10 |
from docx import Document
|
11 |
import zipfile
|
12 |
|
13 |
-
#
|
14 |
-
|
15 |
-
if not
|
16 |
-
raise ValueError("Bitte setzen Sie die Umgebungsvariable
|
17 |
|
18 |
-
#
|
19 |
-
|
|
|
20 |
|
21 |
def extract_text_from_file(file_path):
|
22 |
if file_path.endswith('.docx'):
|
@@ -41,31 +42,19 @@ def extract_text_from_zip(zip_path):
|
|
41 |
return extracted_text
|
42 |
|
43 |
def generate_body(job_description, language, cv_text=None, certificates_text=None):
|
44 |
-
model = 'command-xlarge-nightly'
|
45 |
-
|
46 |
cv_text = f"Hier ist der Lebenslauf des Kandidaten:\n{cv_text}\n" if cv_text else ""
|
47 |
certificates_text = f"Hier sind die Zertifikate des Kandidaten:\n{certificates_text}\n" if certificates_text else ""
|
48 |
|
49 |
prompt = f"{cv_text}{certificates_text}Schreiben Sie ein professionelles Bewerbungsschreiben auf {language} ohne Anrede. Erstellen Sie nur den Textkörper basierend auf dieser Stellenbeschreibung:\n{job_description}"
|
50 |
|
51 |
-
response =
|
52 |
-
|
53 |
-
prompt=prompt,
|
54 |
-
max_tokens=250,
|
55 |
-
temperature=0.7,
|
56 |
-
)
|
57 |
-
return response.generations[0].text.strip()
|
58 |
|
59 |
def evaluate_match(job_description, cv_text, language):
|
60 |
prompt = f"Bewerten Sie, wie gut der folgende Lebenslauf zur Stellenbeschreibung passt:\n\nStellenbeschreibung:\n{job_description}\n\nLebenslauf:\n{cv_text}\n\nGeben Sie eine Zusammenfassung der Stärken und Schwächen sowie eine Übereinstimmungsbewertung zwischen 0 und 100 ab, auf {language}."
|
61 |
|
62 |
-
response =
|
63 |
-
|
64 |
-
prompt=prompt,
|
65 |
-
max_tokens=150,
|
66 |
-
temperature=0.7,
|
67 |
-
)
|
68 |
-
return response.generations[0].text.strip()
|
69 |
|
70 |
def create_application_letter(name, sender_street, sender_zip, sender_city, email, phone, job_position, employer_name, employer_street, employer_zip, employer_city, greeting_option, employer_contact_name, job_id, start_date, job_description, language, output_format, cv_file=None, certificates_file=None):
|
71 |
cv_text = extract_text_from_file(cv_file) if cv_file else None
|
@@ -132,10 +121,8 @@ def create_application_letter(name, sender_street, sender_zip, sender_city, emai
|
|
132 |
return output_filename_docx
|
133 |
|
134 |
def generate_and_download(name, sender_street, sender_zip, sender_city, email, phone, job_position, employer_name, employer_street, employer_zip, employer_city, greeting_option, employer_contact_name, job_id, start_date, job_description, language, output_format, cv_file, certificates_file, perform_evaluation):
|
135 |
-
# Generate application letter
|
136 |
output_filename = create_application_letter(name, sender_street, sender_zip, sender_city, email, phone, job_position, employer_name, employer_street, employer_zip, employer_city, greeting_option, employer_contact_name, job_id, start_date, job_description, language, output_format, cv_file=cv_file, certificates_file=certificates_file)
|
137 |
|
138 |
-
# Perform evaluation if requested
|
139 |
evaluation_result = ""
|
140 |
if perform_evaluation and cv_file:
|
141 |
cv_text = extract_text_from_file(cv_file)
|
@@ -146,7 +133,7 @@ def generate_and_download(name, sender_street, sender_zip, sender_city, email, p
|
|
146 |
description = """
|
147 |
# Professioneller Bewerbungsschreiben-Generator
|
148 |
|
149 |
-
Willkommen beim ultimativen Tool zum Erstellen professioneller Bewerbungsschreiben mit Leichtigkeit. Dieses Tool nutzt die Kraft von **
|
150 |
|
151 |
Sie können optional Ihren Lebenslauf im DOCX- oder PDF-Format hochladen und Ihre Zertifikate als ZIP-Datei, um ein persönlicheres Bewerbungsschreiben zu erstellen. Sie können auch wählen, ob Sie eine Bewertung darüber erhalten möchten, wie gut Ihr Lebenslauf zur Stellenbeschreibung passt. Füllen Sie einfach die erforderlichen Felder aus und in wenigen Sekunden erhalten Sie ein wunderschön formatiertes Bewerbungsschreiben, das Sie entweder im DOCX- oder PDF-Format herunterladen können.
|
152 |
|
|
|
1 |
import gradio as gr
|
|
|
2 |
import os
|
3 |
+
import google.generativeai as genai
|
4 |
from docx import Document as DocxDocument
|
5 |
from docx.shared import Pt
|
6 |
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
|
|
|
10 |
from docx import Document
|
11 |
import zipfile
|
12 |
|
13 |
+
# Gemini API-Key aus Umgebungsvariablen holen
|
14 |
+
gemini_api_key = os.getenv('GEMINI_API_KEY')
|
15 |
+
if not gemini_api_key:
|
16 |
+
raise ValueError("Bitte setzen Sie die Umgebungsvariable GEMINI_API_KEY.")
|
17 |
|
18 |
+
# Gemini initialisieren
|
19 |
+
genai.configure(api_key=gemini_api_key)
|
20 |
+
model = genai.GenerativeModel('gemini-pro')
|
21 |
|
22 |
def extract_text_from_file(file_path):
|
23 |
if file_path.endswith('.docx'):
|
|
|
42 |
return extracted_text
|
43 |
|
44 |
def generate_body(job_description, language, cv_text=None, certificates_text=None):
|
|
|
|
|
45 |
cv_text = f"Hier ist der Lebenslauf des Kandidaten:\n{cv_text}\n" if cv_text else ""
|
46 |
certificates_text = f"Hier sind die Zertifikate des Kandidaten:\n{certificates_text}\n" if certificates_text else ""
|
47 |
|
48 |
prompt = f"{cv_text}{certificates_text}Schreiben Sie ein professionelles Bewerbungsschreiben auf {language} ohne Anrede. Erstellen Sie nur den Textkörper basierend auf dieser Stellenbeschreibung:\n{job_description}"
|
49 |
|
50 |
+
response = model.generate_content(prompt)
|
51 |
+
return response.text.strip()
|
|
|
|
|
|
|
|
|
|
|
52 |
|
53 |
def evaluate_match(job_description, cv_text, language):
|
54 |
prompt = f"Bewerten Sie, wie gut der folgende Lebenslauf zur Stellenbeschreibung passt:\n\nStellenbeschreibung:\n{job_description}\n\nLebenslauf:\n{cv_text}\n\nGeben Sie eine Zusammenfassung der Stärken und Schwächen sowie eine Übereinstimmungsbewertung zwischen 0 und 100 ab, auf {language}."
|
55 |
|
56 |
+
response = model.generate_content(prompt)
|
57 |
+
return response.text.strip()
|
|
|
|
|
|
|
|
|
|
|
58 |
|
59 |
def create_application_letter(name, sender_street, sender_zip, sender_city, email, phone, job_position, employer_name, employer_street, employer_zip, employer_city, greeting_option, employer_contact_name, job_id, start_date, job_description, language, output_format, cv_file=None, certificates_file=None):
|
60 |
cv_text = extract_text_from_file(cv_file) if cv_file else None
|
|
|
121 |
return output_filename_docx
|
122 |
|
123 |
def generate_and_download(name, sender_street, sender_zip, sender_city, email, phone, job_position, employer_name, employer_street, employer_zip, employer_city, greeting_option, employer_contact_name, job_id, start_date, job_description, language, output_format, cv_file, certificates_file, perform_evaluation):
|
|
|
124 |
output_filename = create_application_letter(name, sender_street, sender_zip, sender_city, email, phone, job_position, employer_name, employer_street, employer_zip, employer_city, greeting_option, employer_contact_name, job_id, start_date, job_description, language, output_format, cv_file=cv_file, certificates_file=certificates_file)
|
125 |
|
|
|
126 |
evaluation_result = ""
|
127 |
if perform_evaluation and cv_file:
|
128 |
cv_text = extract_text_from_file(cv_file)
|
|
|
133 |
description = """
|
134 |
# Professioneller Bewerbungsschreiben-Generator
|
135 |
|
136 |
+
Willkommen beim ultimativen Tool zum Erstellen professioneller Bewerbungsschreiben mit Leichtigkeit. Dieses Tool nutzt die Kraft von **Google Gemini**, einem hochmodernen Sprachmodell, um automatisch einen maßgeschneiderten Bewerbungstext basierend auf der von Ihnen bereitgestellten Stellenbeschreibung zu erstellen.
|
137 |
|
138 |
Sie können optional Ihren Lebenslauf im DOCX- oder PDF-Format hochladen und Ihre Zertifikate als ZIP-Datei, um ein persönlicheres Bewerbungsschreiben zu erstellen. Sie können auch wählen, ob Sie eine Bewertung darüber erhalten möchten, wie gut Ihr Lebenslauf zur Stellenbeschreibung passt. Füllen Sie einfach die erforderlichen Felder aus und in wenigen Sekunden erhalten Sie ein wunderschön formatiertes Bewerbungsschreiben, das Sie entweder im DOCX- oder PDF-Format herunterladen können.
|
139 |
|