bep40 commited on
Commit
2ef4f2f
·
verified ·
1 Parent(s): 25723f0

Cache last-working LLM to avoid retrying unavailable models (faster subsequent rewrites)

Browse files
Files changed (1) hide show
  1. ai_ext.py +9 -0
ai_ext.py CHANGED
@@ -73,6 +73,8 @@ QWEN_TEXT_MODELS = [m.strip() for m in os.getenv(
73
  "QWEN_TEXT_MODELS",
74
  "Qwen/Qwen2.5-72B-Instruct,meta-llama/Llama-3.3-70B-Instruct,Qwen/Qwen2.5-7B-Instruct"
75
  ).split(",") if m.strip()]
 
 
76
  DATA_DIR = "/data" if os.path.isdir("/data") else "/app/data"
77
  SHORTS_DIR = os.path.join(DATA_DIR, "ai_shorts")
78
  HEADERS = {
@@ -544,6 +546,11 @@ async def qwen_generate(prompt: str, image_url: Optional[str] = None, max_tokens
544
  else:
545
  # Text-only summary -> FAST text models first, VL only as last resort.
546
  candidate = QWEN_TEXT_MODELS + [QWEN_VL_MODEL]
 
 
 
 
 
547
  for m in candidate:
548
  if m and m not in models:
549
  models.append(m)
@@ -580,6 +587,8 @@ async def qwen_generate(prompt: str, image_url: Optional[str] = None, max_tokens
580
  txt = (resp.choices[0].message.content or "").strip()
581
  if txt:
582
  LAST_QWEN_ERROR = ""
 
 
583
  return txt
584
  except Exception as e:
585
  errors.append(f"{model}: {type(e).__name__}: {str(e)[:220]}")
 
73
  "QWEN_TEXT_MODELS",
74
  "Qwen/Qwen2.5-72B-Instruct,meta-llama/Llama-3.3-70B-Instruct,Qwen/Qwen2.5-7B-Instruct"
75
  ).split(",") if m.strip()]
76
+ _WORKING_MODEL_TEXT = None # cached last-working text model
77
+ _WORKING_MODEL_VL = None # cached last-working vision model
78
  DATA_DIR = "/data" if os.path.isdir("/data") else "/app/data"
79
  SHORTS_DIR = os.path.join(DATA_DIR, "ai_shorts")
80
  HEADERS = {
 
546
  else:
547
  # Text-only summary -> FAST text models first, VL only as last resort.
548
  candidate = QWEN_TEXT_MODELS + [QWEN_VL_MODEL]
549
+ # Use the last-known-working model first to avoid wasting time on unavailable models.
550
+ global _WORKING_MODEL_TEXT, _WORKING_MODEL_VL
551
+ cached_ok = _WORKING_MODEL_VL if has_images else _WORKING_MODEL_TEXT
552
+ if cached_ok and cached_ok in candidate:
553
+ candidate = [cached_ok] + [m for m in candidate if m != cached_ok]
554
  for m in candidate:
555
  if m and m not in models:
556
  models.append(m)
 
587
  txt = (resp.choices[0].message.content or "").strip()
588
  if txt:
589
  LAST_QWEN_ERROR = ""
590
+ if has_images: _WORKING_MODEL_VL = model
591
+ else: _WORKING_MODEL_TEXT = model
592
  return txt
593
  except Exception as e:
594
  errors.append(f"{model}: {type(e).__name__}: {str(e)[:220]}")