The WebSocket loop triggers an LLM turn whenever an interim result is marked is_final (server.py:625, :652) rather than at end-of-utterance. is_final fires per finalized segment, so the AI tends to respond to half-sentences.
Fix: use Deepgram speech_final / UtteranceEnd with endpointing to detect the end of the caller's turn before calling the LLM.
The WebSocket loop triggers an LLM turn whenever an interim result is marked
is_final(server.py:625,:652) rather than at end-of-utterance.is_finalfires per finalized segment, so the AI tends to respond to half-sentences.Fix: use Deepgram
speech_final/UtteranceEndwithendpointingto detect the end of the caller's turn before calling the LLM.