firmanaziz commited on
Commit
9b39287
Β·
verified Β·
1 Parent(s): d6edb46

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -22
app.py CHANGED
@@ -1,14 +1,7 @@
1
  # ============================================================
2
- # πŸ’Ό CETHA - AI CV REVIEW (JSON OUTPUT VERSION)
3
- # ============================================================
4
- # Aplikasi ini akan:
5
- # 1. Membaca file CV (PDF)
6
- # 2. Mengekstrak teks dengan PyMuPDF
7
- # 3. Mengirim prompt ke model Gemini
8
- # 4. Menghasilkan hasil JSON berisi poin kelebihan & perbaikan dengan penjelasan
9
  # ============================================================
10
 
11
- # --- INSTALL DEPENDENCIES (Hanya aktif di Hugging Face atau Colab) ---
12
  # !pip install -q gradio google-generativeai pymupdf
13
 
14
  import gradio as gr
@@ -60,11 +53,11 @@ def clean_and_parse_json(raw_text):
60
 
61
 
62
  # ============================================================
63
- # 🎯 FUNGSI UTAMA: PENILAIAN CV KE DALAM JSON
64
  # ============================================================
65
 
66
  def score_cv_json(cv_file):
67
- """Menilai CV dan mengembalikan hasil dalam format JSON dengan detail poin."""
68
  if not API_CONFIGURED:
69
  raise gr.Error("API Key Gemini belum terkonfigurasi. Periksa Logs aplikasi di Hugging Face.")
70
  if cv_file is None:
@@ -90,14 +83,24 @@ def score_cv_json(cv_file):
90
  ---
91
 
92
  Tugas Anda:
93
- - Temukan 3 poin utama yang menjadi KELEBIHAN (highlights) dari CV ini.
94
- - Temukan 3 poin yang dapat DITINGKATKAN (improvements).
95
- - Setiap poin harus memiliki:
96
- - "point": kalimat ringkas yang mewakili temuan utama.
97
- - "explanation": penjelasan singkat (1–3 kalimat) yang menjelaskan konteks atau alasan.
98
-
99
- Format JSON yang harus dikembalikan:
 
 
 
 
100
  {{
 
 
 
 
 
 
101
  "highlights": [
102
  {{
103
  "point": "judul kelebihan singkat",
@@ -114,7 +117,7 @@ def score_cv_json(cv_file):
114
  ]
115
  }}
116
 
117
- Pastikan output **hanya berisi JSON valid** tanpa tambahan teks lain.
118
  """
119
 
120
  print("πŸ“€ Mengirim prompt ke Gemini...")
@@ -135,17 +138,18 @@ def score_cv_json(cv_file):
135
  # ============================================================
136
 
137
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
138
- gr.Markdown("# πŸ€– CETHA - AI CV Review (JSON Output)")
139
  gr.Markdown(
140
  """
141
- Upload CV Anda (format **PDF**) untuk mendapatkan hasil analisis otomatis berbasis AI.
142
- Sistem akan memberikan 3 poin kelebihan dan 3 poin perbaikan, masing-masing dengan penjelasan detail dalam format **JSON**.
 
143
  """
144
  )
145
 
146
  cv_pdf = gr.File(label="πŸ“„ Upload CV Anda (PDF)", file_types=[".pdf"])
147
  score_button = gr.Button("πŸš€ Analisis CV Sekarang", variant="primary")
148
- output_json = gr.JSON(label="πŸ“Š Hasil Analisis (JSON)")
149
 
150
  score_button.click(
151
  fn=score_cv_json,
 
1
  # ============================================================
2
+ # πŸ’Ό CETHA - AI CV REVIEW (FINAL JSON VERSION with SCORE)
 
 
 
 
 
 
3
  # ============================================================
4
 
 
5
  # !pip install -q gradio google-generativeai pymupdf
6
 
7
  import gradio as gr
 
53
 
54
 
55
  # ============================================================
56
+ # 🎯 FUNGSI UTAMA: PENILAIAN CV DENGAN SKOR DAN DETAIL
57
  # ============================================================
58
 
59
  def score_cv_json(cv_file):
60
+ """Menilai CV dan mengembalikan hasil dalam format JSON dengan skor dan penjelasan detail."""
61
  if not API_CONFIGURED:
62
  raise gr.Error("API Key Gemini belum terkonfigurasi. Periksa Logs aplikasi di Hugging Face.")
63
  if cv_file is None:
 
83
  ---
84
 
85
  Tugas Anda:
86
+ 1. Nilai CV berdasarkan 3 kategori (0–100):
87
+ - "kelengkapan_informasi": Apakah CV mencakup nama, kontak, pengalaman, pendidikan, dan keterampilan?
88
+ - "keterbacaan_dan_format": Apakah struktur, urutan, dan tampilan CV rapi dan mudah dibaca?
89
+ - "dampak_pengalaman_kerja": Apakah deskripsi pengalaman menonjolkan hasil terukur (angka, pencapaian)?
90
+ 2. Hitung "skor_keseluruhan" sebagai rata-rata dari ketiga kategori.
91
+ 3. Temukan 3 KELEBIHAN utama dan 3 HAL YANG DAPAT DITINGKATKAN.
92
+ Setiap poin memiliki:
93
+ - "point": kalimat ringkas yang mewakili kelebihan/perbaikan.
94
+ - "explanation": penjelasan singkat (1–3 kalimat) tentang konteks atau alasannya.
95
+
96
+ Format output JSON yang harus dikembalikan:
97
  {{
98
+ "skor_keseluruhan": <angka>,
99
+ "penilaian_per_kategori": {{
100
+ "kelengkapan_informasi": <angka>,
101
+ "keterbacaan_dan_format": <angka>,
102
+ "dampak_pengalaman_kerja": <angka>
103
+ }},
104
  "highlights": [
105
  {{
106
  "point": "judul kelebihan singkat",
 
117
  ]
118
  }}
119
 
120
+ Pastikan output hanya berupa JSON valid tanpa tambahan teks lain.
121
  """
122
 
123
  print("πŸ“€ Mengirim prompt ke Gemini...")
 
138
  # ============================================================
139
 
140
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
141
+ gr.Markdown("# πŸ€– CETHA - AI CV Review (JSON Output with Score)")
142
  gr.Markdown(
143
  """
144
+ Upload CV Anda dalam format **PDF** untuk mendapatkan hasil analisis otomatis berbasis AI.
145
+ Sistem akan memberikan **skor keseluruhan**, **penilaian per kategori**,
146
+ serta **3 poin kelebihan dan 3 poin perbaikan lengkap dengan penjelasan.**
147
  """
148
  )
149
 
150
  cv_pdf = gr.File(label="πŸ“„ Upload CV Anda (PDF)", file_types=[".pdf"])
151
  score_button = gr.Button("πŸš€ Analisis CV Sekarang", variant="primary")
152
+ output_json = gr.JSON(label="πŸ“Š Hasil Analisis (JSON Lengkap)")
153
 
154
  score_button.click(
155
  fn=score_cv_json,