firmanaziz commited on
Commit
d571565
Β·
verified Β·
1 Parent(s): 57206cf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -6
app.py CHANGED
@@ -20,6 +20,9 @@ try:
20
  except Exception as e:
21
  print(f"πŸ›‘ Terjadi error saat inisialisasi: {e}")
22
 
 
 
 
23
  # --- FUNGSI-FUNGSI UTAMA ---
24
 
25
  def ekstrak_teks_dari_pdf(path_file_pdf):
@@ -44,6 +47,21 @@ def generate_search_links(keywords):
44
  }
45
  return links
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  def analyze_career_path(cv_file):
48
  """Fungsi utama pipeline: Analisis CV -> Buat Laporan JSON -> Buat Link -> Gabungkan."""
49
  if not API_CONFIGURED:
@@ -73,8 +91,15 @@ def analyze_career_path(cv_file):
73
  Pastikan output hanya berupa JSON saja.
74
  """
75
 
76
- generation_config = genai.types.GenerationConfig(response_mime_type="application/json")
 
 
 
 
77
  response = model.generate_content(prompt_analisis_karir, generation_config=generation_config)
 
 
 
78
 
79
  response_json = json.loads(response.text)
80
  print("βœ… Laporan karir komprehensif berhasil diterima.")
@@ -83,14 +108,10 @@ def analyze_career_path(cv_file):
83
  keywords_from_analysis = response_json.get("jabatan_ideal", "")
84
  search_links = generate_search_links(keywords_from_analysis)
85
 
86
- # ==================================================================
87
- # PERUBAHAN PENTING: Menambahkan link ke dalam JSON
88
- # ==================================================================
89
  response_json["tautan_pencarian"] = search_links
90
  print("βœ… Tautan pencarian ditambahkan ke JSON.")
91
 
92
  print("--- Proses Selesai ---")
93
- # Mengembalikan dictionary/JSON mentah
94
  return response_json
95
 
96
  except Exception as e:
@@ -108,7 +129,6 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
108
  analyze_button = gr.Button("πŸ” Analisis Karir Saya", variant="primary")
109
 
110
  with gr.Column(scale=2):
111
- # Menggunakan gr.JSON untuk menampilkan dan menghasilkan data JSON sebagai output API
112
  output_analysis = gr.JSON(label="Output JSON dari API")
113
 
114
  analyze_button.click(
 
20
  except Exception as e:
21
  print(f"πŸ›‘ Terjadi error saat inisialisasi: {e}")
22
 
23
+ # --- KONSTANTA BATAS TOKEN OUTPUT ---
24
+ MAX_OUTPUT_TOKENS = 1024
25
+
26
  # --- FUNGSI-FUNGSI UTAMA ---
27
 
28
  def ekstrak_teks_dari_pdf(path_file_pdf):
 
47
  }
48
  return links
49
 
50
+ def log_token_usage(usage_metadata):
51
+ """Log penggunaan token dari usage_metadata ke console."""
52
+ if usage_metadata is None:
53
+ print("⚠️ Token usage: data tidak tersedia.")
54
+ return
55
+ prompt_tokens = getattr(usage_metadata, 'prompt_token_count', 'N/A')
56
+ candidate_tokens = getattr(usage_metadata, 'candidates_token_count', 'N/A')
57
+ total_tokens = getattr(usage_metadata, 'total_token_count', 'N/A')
58
+ print("=" * 40)
59
+ print("πŸ“Š TOKEN USAGE")
60
+ print(f" πŸ”Ό Input (prompt) : {prompt_tokens}")
61
+ print(f" πŸ”½ Output (response): {candidate_tokens} [limit: {MAX_OUTPUT_TOKENS}]")
62
+ print(f" βž• Total : {total_tokens}")
63
+ print("=" * 40)
64
+
65
  def analyze_career_path(cv_file):
66
  """Fungsi utama pipeline: Analisis CV -> Buat Laporan JSON -> Buat Link -> Gabungkan."""
67
  if not API_CONFIGURED:
 
91
  Pastikan output hanya berupa JSON saja.
92
  """
93
 
94
+ # βœ… Tambahan: max_output_tokens untuk membatasi token output
95
+ generation_config = genai.types.GenerationConfig(
96
+ response_mime_type="application/json",
97
+ max_output_tokens=MAX_OUTPUT_TOKENS,
98
+ )
99
  response = model.generate_content(prompt_analisis_karir, generation_config=generation_config)
100
+
101
+ # βœ… Tambahan: log penggunaan token ke console
102
+ log_token_usage(getattr(response, 'usage_metadata', None))
103
 
104
  response_json = json.loads(response.text)
105
  print("βœ… Laporan karir komprehensif berhasil diterima.")
 
108
  keywords_from_analysis = response_json.get("jabatan_ideal", "")
109
  search_links = generate_search_links(keywords_from_analysis)
110
 
 
 
 
111
  response_json["tautan_pencarian"] = search_links
112
  print("βœ… Tautan pencarian ditambahkan ke JSON.")
113
 
114
  print("--- Proses Selesai ---")
 
115
  return response_json
116
 
117
  except Exception as e:
 
129
  analyze_button = gr.Button("πŸ” Analisis Karir Saya", variant="primary")
130
 
131
  with gr.Column(scale=2):
 
132
  output_analysis = gr.JSON(label="Output JSON dari API")
133
 
134
  analyze_button.click(