irhamni commited on
Commit
8f27c13
·
verified ·
1 Parent(s): b050c08

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -26
app.py CHANGED
@@ -84,11 +84,16 @@ TARGETS = {
84
  USE_LLM = True
85
 
86
  # Pilih salah satu model yang kompatibel
87
- LLM_MODEL_NAME = "HuggingFaceH4/zephyr-7b-beta"
 
88
  # Alternatif lain (juga kompatibel):
89
  # LLM_MODEL_NAME = "mistralai/Mistral-7B-Instruct-v0.2"
90
 
91
- HF_TOKEN = os.getenv("HF_TOKEN", None)
 
 
 
 
92
 
93
  _HF_CLIENT = None
94
 
@@ -1154,21 +1159,10 @@ def generate_llm_analysis(detail_df: pd.DataFrame,
1154
  kew_value: str) -> str:
1155
  """
1156
  Analisis otomatis:
1157
- - Jika HF_TOKEN belum diset -> langsung pakai rule-based (tidak dianggap error).
1158
- - Jika HF_TOKEN ada tapi pemanggilan LLM gagal -> fallback ke rule-based dengan pesan error ringkas.
1159
  """
1160
 
1161
- # MODE TANPA LLM: HF_TOKEN belum diset
1162
- if not HF_TOKEN:
1163
- rb = generate_rule_based_analysis(detail_df, agg_df, kab_name, kew_value)
1164
- return (
1165
- "ℹ️ Mode analisis berbasis LLM belum diaktifkan karena `HF_TOKEN` "
1166
- "tidak ditemukan di Environment / Secrets.\n\n"
1167
- "Analisis berikut menggunakan pendekatan **rule-based**.\n\n"
1168
- + rb
1169
- )
1170
-
1171
- # MODE LLM AKTIF
1172
  context = build_context_for_llm(detail_df, agg_df, verif_df, kab_name, kew_value)
1173
 
1174
  client = get_llm_client()
@@ -1196,8 +1190,8 @@ TULISKAN ANALISIS DALAM BAHASA INDONESIA FORMAL, DENGAN STRUKTUR:
1196
 
1197
  1. Gambaran umum kondisi perpustakaan di wilayah tersebut (1 paragraf).
1198
  2. Analisis capaian indeks: soroti kekuatan dan kelemahan utama, terutama perbedaan antar jenis perpustakaan (2 paragraf).
1199
- 3. Analisis risiko dan kesenjangan layanan, termasuk jika coverage perpustakaan terhadap satuan pendidikan atau wilayah administratif masih rendah (12 paragraf).
1200
- 4. Rekomendasi program dan kebijakan prioritas yang konkret untuk 35 tahun ke depan. Susun dalam bentuk paragraf naratif, bukan bullet list (2 paragraf).
1201
 
1202
  PANDUAN GAYA:
1203
  - Jangan hanya mengulang angka apa adanya, tetapi jelaskan maknanya.
@@ -1205,18 +1199,21 @@ PANDUAN GAYA:
1205
  - Hindari kalimat terlalu panjang; gunakan kalimat efektif dan jelas.
1206
  """
1207
 
1208
- prompt = f"{system_prompt}\n\n{user_prompt}"
1209
-
1210
  try:
1211
- response = client.text_generation(
1212
- prompt,
1213
- max_new_tokens=900,
 
 
 
 
 
 
1214
  temperature=0.35,
1215
  top_p=0.9,
1216
- do_sample=True,
1217
- repetition_penalty=1.05,
1218
  )
1219
- text = str(response).strip()
 
1220
  if not text:
1221
  raise ValueError("Respon LLM kosong.")
1222
 
@@ -1231,6 +1228,7 @@ PANDUAN GAYA:
1231
  f"{rb}"
1232
  )
1233
 
 
1234
  # ============================================================
1235
  # 8. WORD REPORT (Plotly Pie + Indeks + Agregat + LLM Narrative)
1236
  # ============================================================
@@ -1596,4 +1594,4 @@ with gr.Blocks() as demo:
1596
  ],
1597
  )
1598
 
1599
- demo.launch()
 
84
  USE_LLM = True
85
 
86
  # Pilih salah satu model yang kompatibel
87
+ LLM_MODEL_NAME = "meta-llama/Meta-Llama-3-8B-Instruct"
88
+ # LLM_MODEL_NAME = "mistralai/Mistral-7B-Instruct-v0.2"
89
  # Alternatif lain (juga kompatibel):
90
  # LLM_MODEL_NAME = "mistralai/Mistral-7B-Instruct-v0.2"
91
 
92
+ HF_TOKEN = (
93
+ os.getenv("HF_TOKEN")
94
+ or os.getenv("HUGGINGFACEHUB_API_TOKEN")
95
+ or os.getenv("HF_API_TOKEN")
96
+ )
97
 
98
  _HF_CLIENT = None
99
 
 
1159
  kew_value: str) -> str:
1160
  """
1161
  Analisis otomatis:
1162
+ - Jika pemanggilan LLM gagal -> fallback ke rule-based dengan pesan error ringkas.
 
1163
  """
1164
 
1165
+ # MODE LLM AKTIF: selalu coba, token bisa dari HF_TOKEN / HUGGINGFACEHUB_API_TOKEN
 
 
 
 
 
 
 
 
 
 
1166
  context = build_context_for_llm(detail_df, agg_df, verif_df, kab_name, kew_value)
1167
 
1168
  client = get_llm_client()
 
1190
 
1191
  1. Gambaran umum kondisi perpustakaan di wilayah tersebut (1 paragraf).
1192
  2. Analisis capaian indeks: soroti kekuatan dan kelemahan utama, terutama perbedaan antar jenis perpustakaan (2 paragraf).
1193
+ 3. Analisis risiko dan kesenjangan layanan, termasuk jika coverage perpustakaan terhadap satuan pendidikan atau wilayah administratif masih rendah (1-2 paragraf).
1194
+ 4. Rekomendasi program dan kebijakan prioritas yang konkret untuk 3-5 tahun ke depan. Susun dalam bentuk paragraf naratif, bukan bullet list (2 paragraf).
1195
 
1196
  PANDUAN GAYA:
1197
  - Jangan hanya mengulang angka apa adanya, tetapi jelaskan maknanya.
 
1199
  - Hindari kalimat terlalu panjang; gunakan kalimat efektif dan jelas.
1200
  """
1201
 
 
 
1202
  try:
1203
+ messages = [
1204
+ {"role": "system", "content": system_prompt},
1205
+ {"role": "user", "content": user_prompt},
1206
+ ]
1207
+
1208
+ resp = client.chat_completion(
1209
+ model=LLM_MODEL_NAME,
1210
+ messages=messages,
1211
+ max_tokens=900,
1212
  temperature=0.35,
1213
  top_p=0.9,
 
 
1214
  )
1215
+
1216
+ text = resp.choices[0].message.content.strip()
1217
  if not text:
1218
  raise ValueError("Respon LLM kosong.")
1219
 
 
1228
  f"{rb}"
1229
  )
1230
 
1231
+
1232
  # ============================================================
1233
  # 8. WORD REPORT (Plotly Pie + Indeks + Agregat + LLM Narrative)
1234
  # ============================================================
 
1594
  ],
1595
  )
1596
 
1597
+ demo.launch()