p81+81
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# RetrieX Patch 81 - Shop Query Noise Cleanup and Brauwasser Fallback Guard
|
||||
|
||||
## Ziel
|
||||
|
||||
Direkte Shop-Suchen aus natürlich formulierten Nutzeranfragen sollen keine Füllwörter, Mess-Verben oder Meta-/Think-Tokens in die finale Shopware-Suchquery übernehmen.
|
||||
|
||||
Beispiel vor dem Patch:
|
||||
|
||||
```text
|
||||
ich möchte für brauerei das brauwasser messen
|
||||
Gesendete Suchquery: möchte brauerei brauwasser messen think
|
||||
```
|
||||
|
||||
Zusätzlich soll die Antwortqualität bei breiten Anwendungs-/Medium-Fragen mit nur Shopdaten verbessert werden. Shop-only Treffer dürfen nicht als technisch geprüfte Eignung für eine Branche, Anwendung oder ein Medium wirken, wenn kein konkreter Messparameter genannt ist und die Shopdaten die Anwendung nicht explizit belegen.
|
||||
|
||||
## Änderung
|
||||
|
||||
### `config/retriex/genre.yaml`
|
||||
|
||||
Die bestehende genre-native Shopquery-Bereinigung wurde erweitert:
|
||||
|
||||
- `shop_query_runtime.current_input_preservation_terms` schützt jetzt auch anwendungsbezogene Shop-Tokens:
|
||||
- `brauerei`
|
||||
- `brauereien`
|
||||
- `brauwasser`
|
||||
- `shop_query_runtime.stopword_cleanup.terms` entfernt jetzt typische höfliche Formulierungen, Mess-Verben und den Meta-Token `think`, z. B.:
|
||||
- `möchte`, `moechte`, `würde`, `wuerde`, `brauche`, `gern`, `gerne`
|
||||
- `messen`, `messe`, `messung`, `überwachen`, `ueberwachen`, `kontrollieren`
|
||||
- `think`
|
||||
- `shop_query_runtime.positive_token_filter.allowed_terms` erlaubt `brauerei`, `brauereien`, `brauwasser` als positive Shop-Tokens, damit der Positive-Filter nicht auf die ungefilterte Query zurückfallen muss.
|
||||
- `shop_query_runtime.positive_token_filter.blocked_terms` blockt zusätzlich höfliche Formulierungen und `think`, falls sie nach einem Optimizer-Lauf noch in der Query stehen.
|
||||
|
||||
### `config/retriex/prompt.yaml`
|
||||
|
||||
Die Shop-only-Fallback-Regeln wurden geschärft:
|
||||
|
||||
- Bei Branchen-/Anwendungs-/Medium-Fragen ohne konkreten Messparameter soll keine technische Eignung aus generischen Shopdaten abgeleitet werden.
|
||||
- Produktlisten im Shop-only-Fallback sollen kurz bleiben und keine langen Messbereichs-, Einsatzgebiets-, Vorteil- oder Wiederholungsblöcke ausgeben, solange diese Felder nicht der direkte Beleg für die angefragte Eignung sind.
|
||||
|
||||
## Erwartetes Verhalten nach dem Patch
|
||||
|
||||
```text
|
||||
ich möchte für brauerei das brauwasser messen
|
||||
Gesendete Suchquery: brauerei brauwasser
|
||||
```
|
||||
|
||||
Die Antwort sollte außerdem transparenter bleiben, z. B. sinngemäß:
|
||||
|
||||
```text
|
||||
Für Brauwasser/Brauerei finde ich in den Shopdaten Treffer, aber keine belastbar geprüfte technische Eignung ohne konkreten Messparameter. Bitte grenze ein, ob Härte, Carbonathärte, pH, Leitfähigkeit, Chlor/Desinfektion o. Ä. gemessen werden soll.
|
||||
|
||||
Shop-Treffer (technische Eignung nicht sicher belegt): ...
|
||||
```
|
||||
|
||||
## Bewusst nicht geändert
|
||||
|
||||
- keine PHP-Core-Änderung
|
||||
- keine neue Retrieval-, Ranking-, Scoring- oder Shop-Matching-Logik
|
||||
- keine Änderung an Follow-up-Actions
|
||||
- keine Änderung an bestehenden Produkt-/Variantentoken-Guards aus v1.5.6/p80
|
||||
|
||||
Der Patch bleibt damit YAML-/Prompt-seitig und folgt der bestehenden Konfigurationslinie.
|
||||
|
||||
## Lokale Prüfungen
|
||||
|
||||
Im ZIP ohne `vendor/` wurden ausführbare lokale Prüfungen gemacht:
|
||||
|
||||
```bash
|
||||
python3 -c "import yaml; yaml.safe_load(open('config/retriex/genre.yaml')); yaml.safe_load(open('config/retriex/prompt.yaml'))"
|
||||
php -l src/Agent/AgentRunner.php
|
||||
php -l src/Config/AgentRunnerConfig.php
|
||||
```
|
||||
|
||||
Zusätzlich wurde die Query-Pipeline logisch simuliert:
|
||||
|
||||
```text
|
||||
möchte brauerei brauwasser messen think -> brauerei brauwasser
|
||||
ich möchte für brauerei das brauwasser messen -> brauerei brauwasser
|
||||
chlor select sensor -> chlor select sensor
|
||||
```
|
||||
|
||||
## In der Zielumgebung ausführen
|
||||
|
||||
```bash
|
||||
bin/console cache:clear
|
||||
bin/console mto:agent:config:validate
|
||||
bin/console mto:agent:regression:test
|
||||
bin/console mto:agent:config:audit-source --details
|
||||
bin/console mto:agent:config:audit-patterns --details
|
||||
```
|
||||
|
||||
## Manueller Regressionstest
|
||||
|
||||
```text
|
||||
ich möchte für brauerei das brauwasser messen
|
||||
```
|
||||
|
||||
Erwartung:
|
||||
|
||||
- Gesendete Suchquery enthält `brauerei brauwasser`
|
||||
- `möchte`, `messen` und `think` erscheinen nicht in der gesendeten Shopquery
|
||||
- Antwort macht transparent, dass ohne konkreten Messparameter keine geprüfte Brauwasser-Eignung abgeleitet werden soll
|
||||
- Shop-only Ausgabe bleibt kurz und wird nicht durch lange wiederholte Produktprofile abgeschnitten
|
||||
|
||||
Zusätzliche kurze Smoke-Checks:
|
||||
|
||||
```text
|
||||
ich suche den chlor select sensor
|
||||
was kostet der indikator
|
||||
Testomat 2000 THCL 100276
|
||||
```
|
||||
|
||||
Erwartung:
|
||||
|
||||
- `chlor select sensor` bleibt erhalten
|
||||
- bisherige Zubehör-/Preis-/Variantentoken-Flows aus v1.5.6 bleiben unverändert stabil
|
||||
@@ -0,0 +1,76 @@
|
||||
# RetrieX Patch 82 - Follow-up Action Self-loop Guard
|
||||
|
||||
## Ziel
|
||||
|
||||
Verhindert Folgeaktions-Loops, bei denen nach einem bereits ausgeführten Shoplauf erneut dieselbe Shop-Suche angeboten wird.
|
||||
|
||||
Beispiel vor dem Patch:
|
||||
|
||||
1. `brauerei brauwasser`
|
||||
2. Folgeaktion `Nur Zubehör anzeigen`
|
||||
3. Shopquery `brauerei brauwasser zubehör` liefert `0` Shop-Treffer
|
||||
4. Folgeaktion `Im Shop suchen` erzeugt wieder `brauerei brauwasser zubehör`
|
||||
5. Wiederholung ohne fachliche Änderung
|
||||
|
||||
## Änderung
|
||||
|
||||
- `config/retriex/chat-messages.yaml`
|
||||
- Die Commerce-Folgeaktion `Im Shop suchen` erhält eine materialisierte Query-Signatur:
|
||||
- `material_query_template: '{shop_query}'`
|
||||
- `hide_when_material_query_matches_current: true`
|
||||
- `src/Agent/AgentRunner.php`
|
||||
- Ergänzt einen Guard nach dem Rendern der Folgeaktion.
|
||||
- Wenn die materialisierte Action-Query nach Normalisierung identisch mit der aktuellen Shopquery ist, wird die Action unterdrückt.
|
||||
- `src/Config/ChatMessagesConfig.php`
|
||||
- Reicht die neuen optionalen Action-Felder aus `chat-messages.yaml` an den AgentRunner durch.
|
||||
|
||||
## Bewusst nicht geändert
|
||||
|
||||
- Kein Retrieval-/Scoring-/Ranking-Fix.
|
||||
- Keine Änderung an Shop-Matching oder Query-Optimierung.
|
||||
- Keine fachlichen Tokenlisten im PHP-Core.
|
||||
- Role-Filter-Actions wie `Nur Zubehör anzeigen` bleiben erlaubt, solange sie eine echte fachliche Eingrenzung darstellen.
|
||||
|
||||
## Erwartetes Verhalten
|
||||
|
||||
Nach einem ergebnislosen Lauf mit:
|
||||
|
||||
```text
|
||||
brauerei brauwasser zubehör
|
||||
```
|
||||
|
||||
wird nicht erneut angeboten:
|
||||
|
||||
```text
|
||||
Im Shop suchen -> Suche im Shop nach brauerei brauwasser zubehör.
|
||||
```
|
||||
|
||||
Die Action wird nur versteckt, wenn ihre materialisierte Query identisch mit der aktuellen Shopquery ist. Andere Actions mit anderer materialisierter Query können weiterhin angezeigt werden.
|
||||
|
||||
## Lokale Checks
|
||||
|
||||
```bash
|
||||
php -l src/Agent/AgentRunner.php
|
||||
php -l src/Config/ChatMessagesConfig.php
|
||||
python3 - <<'PY'
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
for rel in [
|
||||
'config/retriex/chat-messages.yaml',
|
||||
'config/retriex/genre.yaml',
|
||||
'config/retriex/prompt.yaml',
|
||||
]:
|
||||
yaml.safe_load(Path(rel).read_text())
|
||||
print('yaml ok', rel)
|
||||
PY
|
||||
```
|
||||
|
||||
## Empfohlene Checks in Zielumgebung
|
||||
|
||||
```bash
|
||||
bin/console cache:clear
|
||||
bin/console mto:agent:config:validate
|
||||
bin/console mto:agent:regression:test
|
||||
bin/console mto:agent:config:audit-source --details
|
||||
bin/console mto:agent:config:audit-patterns --details
|
||||
```
|
||||
Reference in New Issue
Block a user