Cut smart-turn INCOMPLETE wait 3s -> 1.5s (SMART_TURN_STOP_SECS)
Follow-up test call: no more cancelled replies, but 3-5s response gaps on
turns the smart-turn model judged INCOMPLETE ("I'm due to my annual exam.") -
it waited the library-default 3s of silence before triggering the LLM. Build
the stop strategy explicitly with SmartTurnParams(stop_secs=1.5), env-tunable.
A caller who really does resume just yields a follow-up turn, which is safe
now that interruption broadcasts are off.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -96,6 +96,15 @@ interruption broadcasts at all (there's nothing legitimate for them to do in a n
|
||||
bot). `UserStartedSpeakingFrame` is still emitted, so the watchdog reset keeps working. If
|
||||
the caller talks over generation, both replies play in order instead of one being dropped.
|
||||
|
||||
**Smart-turn INCOMPLETE wait tuned 3s → 1.5s (2026-07-04, `SMART_TURN_STOP_SECS`).** The
|
||||
follow-up test call had no cancellations but still 3–5s gaps on some turns: the smart-turn
|
||||
model judged utterances like "I'm due to my annual exam." INCOMPLETE and then waited the
|
||||
library-default 3s of silence ("End of Turn complete due to stop_secs. Silence in ms: 3032")
|
||||
before triggering the LLM. The stop strategy is now built explicitly with
|
||||
`LocalSmartTurnAnalyzerV3(params=SmartTurnParams(stop_secs=1.5))`. Worst-case perceived
|
||||
response gap drops from ~3.5s+synthesis to ~2s+synthesis; a caller who really does resume
|
||||
just produces a follow-up turn (safe now that interruptions are off).
|
||||
|
||||
**`CallStateGroomer` (`callstate.py`) — deterministic slot memory (2026-07-03).** Fixes the
|
||||
8B re-asking for things the caller already gave (name, reason, phone — seen repeatedly in the
|
||||
historical call logs: "Didn't you say you had my phone number?", "I already gave you my full
|
||||
|
||||
Reference in New Issue
Block a user