diff --git a/agent_v0/server_v1/stream_processor.py b/agent_v0/server_v1/stream_processor.py index 74f113de2..9b2cbcbc0 100644 --- a/agent_v0/server_v1/stream_processor.py +++ b/agent_v0/server_v1/stream_processor.py @@ -502,14 +502,24 @@ def _vlm_identify_element(anchor_b64: str, window_title: str = "") -> str: if raw.lower().startswith(prefix.lower()): raw = raw[len(prefix):] 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 words = raw.split()[:5] 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) return label 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: logger.debug("VLM identify element échoué : %s", e)