howard9963 commited on
Commit
935326a
·
verified ·
1 Parent(s): 78fcf69

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -16
app.py CHANGED
@@ -10,6 +10,7 @@ import os
10
  import io
11
  import re
12
  import json
 
13
  from typing import List, Dict, Tuple, Optional
14
 
15
  import gradio as gr
@@ -189,6 +190,7 @@ def call_llm(messages: List[dict], model: str, logs: List[str]) -> dict:
189
  保留原名稱 call_llm,但改為本地 LLaMA。
190
  嚴格要求僅輸出 JSON;若混入其他文本,會正則擷取第一個 {...}。
191
  """
 
192
  try:
193
  _ensure_local_model(logs)
194
  # 準備 chat prompt(加上 JSON 輸出約束)
@@ -220,31 +222,23 @@ def call_llm(messages: List[dict], model: str, logs: List[str]) -> dict:
220
  full_text = _hf_tok.decode(out_ids[0], skip_special_tokens=True)
221
  gen_text = full_text[len(prompt):] if full_text.startswith(prompt) else full_text
222
  logs.append(f"[LOCAL LLM] raw_len={len(gen_text)}")
223
- logs.append(f"[LOCAL LLM] raw_head={gen_text[:200].replace(chr(10),' ')}") # 前 200 字方便 Debug
224
 
225
  # ★ 強韌解析:剝掉前置描述,只取第一個 {...}
226
- try:
227
- data = safe_parse_json(gen_text)
228
- logs.append("[LOCAL LLM] JSON 解析成功")
229
- return data
230
- except Exception as jerr:
231
- logs.append(f"[LOCAL LLM] JSON 解析失敗:{jerr}")
232
- # 回傳結構化錯誤,避免整個流程中斷
233
- return {
234
- "符合情況": "部分符合",
235
- "原因": [f"模型輸出非合法 JSON:{str(jerr)}"],
236
- "改進建議": ["請調整提示詞,要求嚴格輸出 JSON(雙引號、無註解、無多餘文字)。"],
237
- "規則逐點檢核": []
238
- }
239
  except Exception as e:
240
- logs.append(f"[LOCAL LLM][ERROR] {e}")
241
  return {
242
  "符合情況": "部分符合",
243
  "原因": [f"本地模型錯誤:{e}"],
244
  "改進建議": ["請檢查 Hugging Face 權杖與模型權限、或改用較小模型。"],
245
  "規則逐點檢核": []
246
  }
247
-
 
 
248
  # -----------------------------
249
  # 檔案讀取:TXT / PDF(含 OCR fallback)
250
  # -----------------------------
 
10
  import io
11
  import re
12
  import json
13
+ import time
14
  from typing import List, Dict, Tuple, Optional
15
 
16
  import gradio as gr
 
190
  保留原名稱 call_llm,但改為本地 LLaMA。
191
  嚴格要求僅輸出 JSON;若混入其他文本,會正則擷取第一個 {...}。
192
  """
193
+ start_time = time.time() # 計時開始
194
  try:
195
  _ensure_local_model(logs)
196
  # 準備 chat prompt(加上 JSON 輸出約束)
 
222
  full_text = _hf_tok.decode(out_ids[0], skip_special_tokens=True)
223
  gen_text = full_text[len(prompt):] if full_text.startswith(prompt) else full_text
224
  logs.append(f"[LOCAL LLM] raw_len={len(gen_text)}")
225
+ logs.append(f"[LOCAL LLM] raw_head={gen_text}")
226
 
227
  # ★ 強韌解析:剝掉前置描述,只取第一個 {...}
228
+ data = safe_parse_json(gen_text)
229
+ logs.append("[LOCAL LLM] JSON 解析成功")
230
+ return data
 
 
 
 
 
 
 
 
 
 
231
  except Exception as e:
232
+ logs.append(f"[LOCAL LLM] JSON 解析失敗:{e}")
233
  return {
234
  "符合情況": "部分符合",
235
  "原因": [f"本地模型錯誤:{e}"],
236
  "改進建議": ["請檢查 Hugging Face 權杖與模型權限、或改用較小模型。"],
237
  "規則逐點檢核": []
238
  }
239
+ finally:
240
+ elapsed = time.time() - start_time
241
+ logs.append(f"[LOCAL LLM] 本次執行耗時:{elapsed:.2f} 秒")
242
  # -----------------------------
243
  # 檔案讀取:TXT / PDF(含 OCR fallback)
244
  # -----------------------------