fix: rejeter bavardage VLM dans _vlm_identify_element
Le VLM 8B répond souvent avec "several UI elements", "I can see", etc. au lieu d'un label court. Ces réponses remplissaient by_text avec du non-sens, empêchant le som_anchor_match de se déclencher pour les icônes sans texte (disquette, fermer, etc.). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -502,14 +502,24 @@ def _vlm_identify_element(anchor_b64: str, window_title: str = "") -> str:
|
|||||||
if raw.lower().startswith(prefix.lower()):
|
if raw.lower().startswith(prefix.lower()):
|
||||||
raw = raw[len(prefix):]
|
raw = raw[len(prefix):]
|
||||||
break
|
break
|
||||||
|
# Rejeter les réponses qui sont du bavardage, pas un label
|
||||||
|
reject_patterns = (
|
||||||
|
"several", "multiple", "various", "image",
|
||||||
|
"I can", "there are", "there is", "elements",
|
||||||
|
"the following", "here are",
|
||||||
|
)
|
||||||
|
if any(p in raw.lower()[:30] for p in reject_patterns):
|
||||||
|
logger.debug("VLM identify : réponse bavarde rejetée (raw='%s')", raw[:60])
|
||||||
|
return ""
|
||||||
|
|
||||||
# Prendre les 5 premiers mots utiles
|
# Prendre les 5 premiers mots utiles
|
||||||
words = raw.split()[:5]
|
words = raw.split()[:5]
|
||||||
label = " ".join(words).strip('",.\' ').rstrip(".")
|
label = " ".join(words).strip('",.\' ').rstrip(".")
|
||||||
if label and 2 <= len(label) <= 60:
|
if label and 2 <= len(label) <= 40:
|
||||||
logger.info("VLM identify element : '%s'", label)
|
logger.info("VLM identify element : '%s'", label)
|
||||||
return label
|
return label
|
||||||
else:
|
else:
|
||||||
logger.debug("VLM identify : label trop court ou vide après nettoyage (raw='%s')", raw[:80])
|
logger.debug("VLM identify : label trop court/long après nettoyage (raw='%s')", raw[:80])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug("VLM identify element échoué : %s", e)
|
logger.debug("VLM identify element échoué : %s", e)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user