p72
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
# RetrieX Patch p72 - Exact Accessory Code Precision
|
||||
|
||||
## Ziel
|
||||
|
||||
p72 verhindert, dass bei Preis-/Verfügbarkeits-Follow-ups zu einer konkret referenzierten Zubehör-, Indikator- oder Reagenz-Code-Identität nahe Varianten als gleichwertige Treffer in die Antwort gelangen.
|
||||
|
||||
Konkreter Regressionsfall:
|
||||
|
||||
1. `Was ist der niedrigste Grenzwert für die Wasserhärte, welcher mit einem Testomaten überwacht werden kann?`
|
||||
2. `mit welchem indikator wird der wert gemessen`
|
||||
3. `was kostet der indikator`
|
||||
|
||||
Wenn der Verlauf auf `Indikatortyp 300` zeigt, dürfen Produkte wie `300 S` nicht als Preisantwort für `300` mit ausgegeben werden, sofern der Nutzer nicht explizit die vollständige Variante `300 S` angefragt hat.
|
||||
|
||||
## Umsetzung
|
||||
|
||||
- `AgentRunner` filtert Shop-Ergebnisse nach einer exakt angefragten Zubehör-/Code-Identität, bevor die Ergebnisse an den PromptBuilder gehen.
|
||||
- Die Erkennung ist generisch:
|
||||
- Code-Begriffe kommen aus `genre.yaml` / bestehender Konfiguration (`search_repair.requested_accessory_code_terms`).
|
||||
- Code-Token werden anhand bestehender Code-Patterns bzw. generischer alphanumerischer Code-Formen erkannt.
|
||||
- Ein reiner Code wie `300` matcht nicht mehr automatisch Varianten mit zusätzlichem Ein-Buchstaben-Suffix wie `300 S`.
|
||||
- Wird die Variante explizit angefragt, z. B. `300 S`, bleibt sie matchfähig.
|
||||
- `AgentRunnerConfig` stellt die bestehenden requested-accessory-code terms für den Runner bereit.
|
||||
- `genre.yaml` ergänzt eine generische Prompt-Regel, damit das LLM zusätzlich keine Code-Varianten zusammenführt, die nicht explizit angefragt wurden.
|
||||
|
||||
## Bewusst nicht geändert
|
||||
|
||||
- Kein Testomat-/Indikator-300-Sonderfall im PHP-Core.
|
||||
- Keine neue harte fachliche Tokenliste im PHP-Core.
|
||||
- Keine Änderung an Retrieval, Scoring, Shopware-Suche, Ranking oder Follow-up-Action-UI.
|
||||
|
||||
## Geänderte Dateien
|
||||
|
||||
- `src/Agent/AgentRunner.php`
|
||||
- `src/Config/AgentRunnerConfig.php`
|
||||
- `config/retriex/genre.yaml`
|
||||
|
||||
## Lokale Checks
|
||||
|
||||
Ausgeführt im Patch-Arbeitsverzeichnis:
|
||||
|
||||
```bash
|
||||
php -l src/Agent/AgentRunner.php
|
||||
php -l src/Config/AgentRunnerConfig.php
|
||||
python3 - <<'PY'
|
||||
import yaml
|
||||
for f in ['config/retriex/genre.yaml','config/retriex/chat-messages.yaml','config/retriex/agent.yaml']:
|
||||
with open(f, 'r', encoding='utf-8') as fh:
|
||||
yaml.safe_load(fh)
|
||||
print('YAML parse OK')
|
||||
PY
|
||||
```
|
||||
|
||||
`vendor/` ist im ZIP nicht enthalten; Symfony-Console-Checks bitte in der Zielumgebung ausführen.
|
||||
|
||||
## Empfohlene Regressionstests
|
||||
|
||||
```text
|
||||
Was ist der niedrigste Grenzwert für die Wasserhärte, welcher mit einem Testomaten überwacht werden kann?
|
||||
```
|
||||
|
||||
```text
|
||||
mit welchem indikator wird der wert gemessen
|
||||
```
|
||||
|
||||
```text
|
||||
was kostet der indikator
|
||||
```
|
||||
|
||||
Erwartung:
|
||||
|
||||
- Preisantwort für `Indikatortyp 300` bleibt bei exakt passenden `300`-Produkten.
|
||||
- `300 S` wird nicht als Preisvariante für `300` ausgegeben, solange `300 S` nicht explizit angefragt wurde.
|
||||
- Falls explizit nach `300 S` gefragt wird, darf `300 S` weiterhin gefunden werden.
|
||||
Reference in New Issue
Block a user