Update app.py
Browse files
app.py
CHANGED
|
@@ -6,13 +6,14 @@ from weasyprint import HTML
|
|
| 6 |
from markitdown import MarkItDown
|
| 7 |
from cerebras.cloud.sdk import Cerebras
|
| 8 |
|
| 9 |
-
# Pastikan file style.css
|
|
|
|
| 10 |
|
| 11 |
# Dapatkan API key dari environment variables
|
| 12 |
api_key = os.environ.get("CEREBRAS_API_KEY")
|
| 13 |
|
| 14 |
-
# Inisialisasi MarkItDown
|
| 15 |
-
md_converter = MarkItDown(
|
| 16 |
|
| 17 |
def create_prompt(resume_string: str, jd_string: str) -> str:
|
| 18 |
"""
|
|
@@ -107,12 +108,16 @@ def process_resume(resume, jd_string):
|
|
| 107 |
Memproses file resume yang di-upload dan job description, lalu
|
| 108 |
menghasilkan resume yang telah dioptimasi + saran perbaikan.
|
| 109 |
"""
|
| 110 |
-
#
|
| 111 |
-
|
| 112 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 113 |
resume_string = result.text_content # konten Markdown hasil konversi
|
| 114 |
-
|
| 115 |
-
return
|
| 116 |
|
| 117 |
# Buat prompt untuk AI
|
| 118 |
prompt = create_prompt(resume_string, jd_string)
|
|
@@ -123,7 +128,6 @@ def process_resume(resume, jd_string):
|
|
| 123 |
# Pisahkan response menjadi "optimized resume" dan "additional suggestions"
|
| 124 |
response_list = response_string.split("## Additional Suggestions")
|
| 125 |
new_resume = response_list[0].strip()
|
| 126 |
-
# Ganti tanda asterisk di awal baris menjadi tanda "-" untuk bullet list standar
|
| 127 |
new_resume = re.sub(r'^\* ', '- ', new_resume, flags=re.MULTILINE)
|
| 128 |
suggestions = "## Additional Suggestions\n\n" + response_list[1].strip() if len(response_list) > 1 else ""
|
| 129 |
|
|
@@ -156,7 +160,7 @@ def export_resume(new_resume):
|
|
| 156 |
menggunakan WeasyPrint.
|
| 157 |
"""
|
| 158 |
try:
|
| 159 |
-
# Konversi Markdown ke HTML
|
| 160 |
html_content = markdown.markdown(new_resume, extensions=['extra', 'nl2br'])
|
| 161 |
|
| 162 |
# Path output PDF
|
|
@@ -165,7 +169,7 @@ def export_resume(new_resume):
|
|
| 165 |
# Gunakan stylesheet (pastikan path style.css benar)
|
| 166 |
HTML(string=html_content).write_pdf(
|
| 167 |
output_pdf_file,
|
| 168 |
-
stylesheets=["resumes/style.css"]
|
| 169 |
)
|
| 170 |
|
| 171 |
return output_pdf_file
|
|
@@ -214,4 +218,4 @@ with gr.Blocks() as app:
|
|
| 214 |
outputs=[export_result]
|
| 215 |
)
|
| 216 |
|
| 217 |
-
app.launch()
|
|
|
|
| 6 |
from markitdown import MarkItDown
|
| 7 |
from cerebras.cloud.sdk import Cerebras
|
| 8 |
|
| 9 |
+
# Pastikan Anda memiliki file style.css di direktori yang sama
|
| 10 |
+
# atau sesuaikan path 'stylesheets' di fungsi export_resume
|
| 11 |
|
| 12 |
# Dapatkan API key dari environment variables
|
| 13 |
api_key = os.environ.get("CEREBRAS_API_KEY")
|
| 14 |
|
| 15 |
+
# Inisialisasi MarkItDown
|
| 16 |
+
md_converter = MarkItDown()
|
| 17 |
|
| 18 |
def create_prompt(resume_string: str, jd_string: str) -> str:
|
| 19 |
"""
|
|
|
|
| 108 |
Memproses file resume yang di-upload dan job description, lalu
|
| 109 |
menghasilkan resume yang telah dioptimasi + saran perbaikan.
|
| 110 |
"""
|
| 111 |
+
# Format yang didukung
|
| 112 |
+
supported_extensions = ('.pptx', '.docx', '.pdf', '.jpg', '.jpeg', '.png', '.xlsx')
|
| 113 |
+
|
| 114 |
+
# Cek apakah file resume memiliki ekstensi yang didukung
|
| 115 |
+
if resume.name.lower().endswith(supported_extensions):
|
| 116 |
+
# Konversi file ke Markdown menggunakan MarkItDown
|
| 117 |
+
result = md_converter.convert(resume.name)
|
| 118 |
resume_string = result.text_content # konten Markdown hasil konversi
|
| 119 |
+
else:
|
| 120 |
+
return "File format not supported for conversion to Markdown.", "", "", "", ""
|
| 121 |
|
| 122 |
# Buat prompt untuk AI
|
| 123 |
prompt = create_prompt(resume_string, jd_string)
|
|
|
|
| 128 |
# Pisahkan response menjadi "optimized resume" dan "additional suggestions"
|
| 129 |
response_list = response_string.split("## Additional Suggestions")
|
| 130 |
new_resume = response_list[0].strip()
|
|
|
|
| 131 |
new_resume = re.sub(r'^\* ', '- ', new_resume, flags=re.MULTILINE)
|
| 132 |
suggestions = "## Additional Suggestions\n\n" + response_list[1].strip() if len(response_list) > 1 else ""
|
| 133 |
|
|
|
|
| 160 |
menggunakan WeasyPrint.
|
| 161 |
"""
|
| 162 |
try:
|
| 163 |
+
# Konversi Markdown ke HTML
|
| 164 |
html_content = markdown.markdown(new_resume, extensions=['extra', 'nl2br'])
|
| 165 |
|
| 166 |
# Path output PDF
|
|
|
|
| 169 |
# Gunakan stylesheet (pastikan path style.css benar)
|
| 170 |
HTML(string=html_content).write_pdf(
|
| 171 |
output_pdf_file,
|
| 172 |
+
stylesheets=["resumes/style.css"] # atau "resumes/style.css" jika style.css di folder "resumes"
|
| 173 |
)
|
| 174 |
|
| 175 |
return output_pdf_file
|
|
|
|
| 218 |
outputs=[export_result]
|
| 219 |
)
|
| 220 |
|
| 221 |
+
app.launch()
|