feat(fillers): zufällige, übersetzte Senioren-Beruhigungssätze + Geduld-Schleife
Ersetzt die statischen 3-Satz-Filler durch einen kreativen, weniger roboterhaften Mechanismus für schnelles Feedback waehrend der Web-Suche. - app/pipeline/fillers.py: EINZIGE Pflege-Stelle. Englische Master-Listen (12 OPENING + 16 PATIENCE). Zur Laufzeit einmal je Sprache uebersetzt und gecacht (durchgaengig hoefliche Anrede "Sie"/"vous"/"usted"...), Fallback Englisch. Zufaellige Auswahl statt fester Reihenfolge. - Geduld-Schleife: bei laengerer Recherche schiebt ein Hintergrund-Task alle FILLER_PATIENCE_INTERVAL Sekunden einen zufaelligen PATIENCE-Satz nach; Abbruch beim ersten Antwort-Delta und im finally (keine verwaisten Tasks). - Ephemer wie bisher: laeuft ueber on_token/_dispatch, nie in semantic_response/History. - Standardsprache wird beim Start vorgewaermt (warmup.py) -> erster Such-Turn ohne Uebersetzungs-Latenz. dependencies: get_fillers()-Singleton. Doc: Docs/weg2-tool-calling.md §5.4. Tests: 290 gruen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
c36b884aab
commit
96dcd87ca8
5 changed files with 237 additions and 41 deletions
|
|
@ -29,6 +29,7 @@ from app.providers.fallback import (
|
|||
FallbackTTSProvider,
|
||||
)
|
||||
from app.pipeline.decontextualizer import Decontextualizer
|
||||
from app.pipeline.fillers import FillerPhrases, make_openrouter_translator
|
||||
from app.pipeline.input_cleaner import InputCleaner
|
||||
from app.pipeline.spoken_response_adapter import SpokenResponseAdapter
|
||||
from app.pipeline.tts_normalizer import TTSNormalizer
|
||||
|
|
@ -48,6 +49,20 @@ def get_store() -> Store:
|
|||
_store = SQLiteStore(settings.db_path)
|
||||
return _store
|
||||
|
||||
|
||||
# Filler-Sätze (Web-Suche): Modul-Singleton mit Übersetzungs-Cache.
|
||||
_fillers: FillerPhrases | None = None
|
||||
|
||||
|
||||
def get_fillers(cfg=None) -> FillerPhrases:
|
||||
global _fillers
|
||||
if _fillers is None:
|
||||
cfg = cfg or runtime_settings
|
||||
_fillers = FillerPhrases(
|
||||
translate_pool=make_openrouter_translator(cfg.openrouter_api_key, cfg.openrouter_llm_model)
|
||||
)
|
||||
return _fillers
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Provider-Registries: Modul austauschbar via Name, ohne Kern-Code zu aendern.
|
||||
# Ein neuer Provider = ein Eintrag. Unbekannter Name -> UnknownComponentError.
|
||||
|
|
@ -378,6 +393,7 @@ def build_orchestrator(route: ResolvedRoute, cfg=None) -> Orchestrator:
|
|||
spoken_adapter=SpokenResponseAdapter(),
|
||||
tts_normalizer=TTSNormalizer(),
|
||||
normalize_level=_resolve_normalize_level(route.tts_provider, cfg),
|
||||
fillers=get_fillers(cfg),
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue