fix p44
This commit is contained in:
134
RETRIEX_PATCH_44_RUNTIME_ANSWER_GUARD_README.md
Normal file
134
RETRIEX_PATCH_44_RUNTIME_ANSWER_GUARD_README.md
Normal file
@@ -0,0 +1,134 @@
|
||||
# RetrieX Patch 44 - Runtime Answer Guard / Shop Follow-up Cleanup
|
||||
|
||||
## Ziel
|
||||
|
||||
Dieser Patch behandelt drei Fehler außerhalb der p43 YAML-/Listen-/Maps-Konsolidierung:
|
||||
|
||||
1. Sporadische endlos lange Produktlisten, bei denen ein letztes Shop-Produkt wiederholt wird.
|
||||
2. Falscher einleitender Satz bei direkten Zubehör-/Kabel-Shopfragen wie `zeige mir Anschlusskabel für pH/Redox`.
|
||||
3. Falsche Shop-Follow-up-Query `schaue` bei `schaue im shop` nach einer vorherigen fachlichen Frage.
|
||||
|
||||
## Änderungen
|
||||
|
||||
### 1. Runtime-Schutz gegen Endlosantworten
|
||||
|
||||
Dateien:
|
||||
|
||||
- `src/Agent/AgentRunner.php`
|
||||
- `src/Config/AgentRunnerConfig.php`
|
||||
- `config/retriex/agent.yaml`
|
||||
|
||||
Änderung:
|
||||
|
||||
- Neuer konfigurierbarer `final_answer_guard`.
|
||||
- Stoppt die finale LLM-Ausgabe, wenn eine Antwort zu lang wird oder dieselbe relevante Antwortzeile zu oft wiederholt wird.
|
||||
- Der Guard läuft im finalen Streaming-Pfad und ist generisch: keine Chlor-, Schwimmbad-, Testomat- oder Produkt-Sonderlogik.
|
||||
- Bei Abbruch wird ein kurzer Hinweis ausgegeben statt endlos weiterzustreamen.
|
||||
|
||||
### 2. Ollama Output-Cap
|
||||
|
||||
Dateien:
|
||||
|
||||
- `src/Infrastructure/OllamaClient.php`
|
||||
- `config/retriex/model.yaml`
|
||||
- `config/services.yaml`
|
||||
- `src/Config/RetriexEffectiveConfigProvider.php`
|
||||
|
||||
Änderung:
|
||||
|
||||
- Neuer Parameter `retriex.llm.num_predict: 2048`.
|
||||
- Wird als Ollama-Option `num_predict` gesendet.
|
||||
- Wichtig für Installationen mit blockierender Ollama-Generierung (`stream=false`), damit Runaway-Ausgaben bereits auf Modellseite begrenzt werden.
|
||||
|
||||
### 3. `schaue im shop` als Meta-Shop-Follow-up
|
||||
|
||||
Datei:
|
||||
|
||||
- `config/retriex/language.yaml`
|
||||
|
||||
Änderung:
|
||||
|
||||
- Ergänzt zentrale User-Instruction-Terme: `schaue`, `schau`, `schauen`, `nachschauen`.
|
||||
- Dadurch wird `schaue im shop` wie `suche im shop` als Meta-Shop-Follow-up behandelt und kann den vorherigen Kontext verwenden, statt die Suchquery `schaue` zu senden.
|
||||
|
||||
### 4. Zubehörantwort-Hardening
|
||||
|
||||
Datei:
|
||||
|
||||
- `config/retriex/prompt.yaml`
|
||||
|
||||
Änderung:
|
||||
|
||||
- Verstärkt Antwortregeln für direkte Zubehör-/Kabel-Shopfragen.
|
||||
- Bei passenden Shop-Treffern soll nicht mit einer fehlenden Hauptgerät-/Messgeräte-Aussage begonnen werden.
|
||||
- Das verhindert Sätze wie sinngemäß „kein sicher belegter Testomat für pH-Messung“, wenn der Nutzer Anschlusskabel für pH/Redox angefragt hat.
|
||||
|
||||
## Geänderte Dateien
|
||||
|
||||
- `config/retriex/agent.yaml`
|
||||
- `config/retriex/language.yaml`
|
||||
- `config/retriex/model.yaml`
|
||||
- `config/retriex/prompt.yaml`
|
||||
- `config/services.yaml`
|
||||
- `src/Agent/AgentRunner.php`
|
||||
- `src/Config/AgentRunnerConfig.php`
|
||||
- `src/Config/RetriexEffectiveConfigProvider.php`
|
||||
- `src/Infrastructure/OllamaClient.php`
|
||||
|
||||
## Lokale Prüfungen
|
||||
|
||||
Ausgeführt:
|
||||
|
||||
```bash
|
||||
php -l src/Agent/AgentRunner.php
|
||||
php -l src/Config/AgentRunnerConfig.php
|
||||
php -l src/Infrastructure/OllamaClient.php
|
||||
php -l src/Config/RetriexEffectiveConfigProvider.php
|
||||
python3 -c 'YAML parse check for changed YAML files'
|
||||
```
|
||||
|
||||
Ergebnis:
|
||||
|
||||
- PHP-Syntax der geänderten PHP-Dateien: grün.
|
||||
- YAML-Parsing der geänderten YAML-Dateien: grün.
|
||||
- Konfigurations-Sanity für `schaue/schau` und `shop`: grün.
|
||||
|
||||
Nicht vollständig lokal ausführbar:
|
||||
|
||||
```bash
|
||||
php bin/console mto:agent:config:validate
|
||||
```
|
||||
|
||||
Grund: Im entpackten ZIP ist kein `vendor/` enthalten; `bin/console` bricht mit `Dependencies are missing. Try running "composer install".` ab.
|
||||
|
||||
## Nach dem Einspielen bitte prüfen
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Manuelle Regressionen
|
||||
|
||||
1. `ich würde gern chlor im schwinnbad messen`
|
||||
- Erwartung: keine endlose Wiederholung des letzten Produkts.
|
||||
- Falls das Modell trotzdem wiederholt, muss die Antwort durch den Guard abbrechen.
|
||||
|
||||
2. `zeige mir Anschlusskabel für pH/Redox`
|
||||
- Erwartung: Zubehör-/Kabeltreffer direkt listen.
|
||||
- Kein einleitender Satz über fehlenden Testomat oder fehlendes pH-Messgerät.
|
||||
|
||||
3. Dialog:
|
||||
- `welche indikatoren gibt es für die messung von freiem chlor`
|
||||
- danach: `schaue im shop`
|
||||
- Erwartung: Shop-Follow-up nutzt den vorherigen Kontext, nicht die Query `schaue`.
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Keine Retrieval-, Ranking- oder Produktmatching-Logik wurde geändert.
|
||||
- Keine neuen fachlichen Token-/Produktlisten im PHP-Core.
|
||||
- Neue fachliche/sprachliche Begriffe liegen in YAML.
|
||||
- Der Runtime-Guard ist bewusst generisch und konfigurierbar.
|
||||
Reference in New Issue
Block a user