From f19d1183d81ece5c453b7f6552fab5f37475cf56 Mon Sep 17 00:00:00 2001 From: Paul Kompfner Date: Mon, 30 Mar 2026 23:00:22 -0400 Subject: [PATCH] Clean up TTFB metrics and previous_response state on retry failure --- src/pipecat/services/openai/responses/llm.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/pipecat/services/openai/responses/llm.py b/src/pipecat/services/openai/responses/llm.py index 63d0c71ee..f0b95a1fb 100644 --- a/src/pipecat/services/openai/responses/llm.py +++ b/src/pipecat/services/openai/responses/llm.py @@ -789,10 +789,15 @@ class OpenAIResponsesLLMService(_BaseOpenAIResponsesLLMService, WebsocketLLMServ params = self._build_response_params(invocation_params) params.pop("stream", None) - await self._ensure_connected() - await self.start_ttfb_metrics() - await self._ws_send({"type": "response.create", **params}) - await self._receive_response_events(context, full_input) + try: + await self._ensure_connected() + await self.start_ttfb_metrics() + await self._ws_send({"type": "response.create", **params}) + await self._receive_response_events(context, full_input) + except Exception: + self._clear_previous_response_state() + await self.stop_ttfb_metrics() + raise async def _receive_response_events(self, context: LLMContext, full_input: list): """Receive and process WebSocket events until the response completes.