mobenta commited on
Commit
36ff3a8
·
verified ·
1 Parent(s): d333bab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -26
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
- # Get the API key from environment variables
14
- cohere_api_key = os.getenv('COHERE_API_KEY')
15
- if not cohere_api_key:
16
- raise ValueError("Bitte setzen Sie die Umgebungsvariable COHERE_API_KEY.")
17
 
18
- # Initialize Cohere client with your API key
19
- co = cohere.Client(cohere_api_key)
 
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 = co.generate(
52
- model=model,
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 = co.generate(
63
- model='command-xlarge-nightly',
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 **Cohere**, einem hochmodernen Sprachmodell, um automatisch einen maßgeschneiderten Bewerbungstext basierend auf der von Ihnen bereitgestellten Stellenbeschreibung zu erstellen.
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