From 6dad42a8c08797fef9d605ad37c87820495aa0cd Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Fri, 22 May 2026 21:55:23 +0200 Subject: [PATCH] =?UTF-8?q?perf(llm):=20reduce=20vendor-extract=20excerpt?= =?UTF-8?q?=2050k=20=E2=86=92=2020k=20chars?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VW-Loop-Iteration 1: LLM cascade lieferte 14 vendors (Lucky-Hit via Direct-Fallback). VW-Loop-Iteration 2: 0 vendors — qwen2.5:14b ReadTimeout auch im 420s-Direct-Fallback (50k input + 16k output output dauert > 7min auf M4 Pro). Fix: max_text_chars 50000 → 20000. Erfasst die ersten ~3000 Worte der Cookie-Tabelle (Tabellen-Kopf komplett). Vollstaendige Tabelle wird ohnehin deterministisch von parse_flat_cookie_text geparsed. LLM ist nur fuer Vendor-Namen die NICHT in der Tabelle stehen (z.B. aus Prosa) und Inferenz-faehiger. Erwartung: 60-120s LLM-call statt Timeout, reproduzierbar 10-15 LLM- Vendors → Vendor-Normalizer-Total bleibt stabil bei 20+ statt 17. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../compliance/services/vendor_llm_extractor.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/backend-compliance/compliance/services/vendor_llm_extractor.py b/backend-compliance/compliance/services/vendor_llm_extractor.py index 13acb14b..54b5bcf2 100644 --- a/backend-compliance/compliance/services/vendor_llm_extractor.py +++ b/backend-compliance/compliance/services/vendor_llm_extractor.py @@ -49,14 +49,17 @@ _SYSTEM_PROMPT = ( async def extract_vendors_via_llm( cookie_text: str, - max_text_chars: int = 50000, + max_text_chars: int = 20000, ) -> list[dict]: """Run the Qwen → OVH cascade. Returns vendor records (possibly empty). - max_text_chars: VW-Cookie-Richtlinie hat ~60k chars mit ~100 Cookies in - der Tabelle. Bei 12k waren wir auf die ersten ~5 Cookies begrenzt und - haben nur 1 Vendor extrahiert. 50k deckt VW/BMW/Mercedes komplett ab - und passt in Qwen3-30b-a3b (128k Context) sowie OVH 120B. + max_text_chars: P-fix 2026-05-22 — auf 20000 reduziert. Vorher 50000 + hat qwen2.5:14b ReadTimeout (auch bei 420s — Output 16000 tokens fuer + 50k input dauert > 7min). 20000 chars erfassen die ersten ~3000 Worte + der Cookie-Tabelle (bei VW deckt das den Tabellen-Kopf komplett ab). + Vollstaendige Tabelle wird vom deterministischen parse_flat erfasst, + LLM ist nur fuer Vendor-Namen die NICHT in der Tabelle stehen (z.B. + aus Prosa-Text). Schneller + zuverlaessiger. """ if not cookie_text or len(cookie_text) < 500: logger.info(