From 73020be511c64e2026f1ed95730686198929b3df Mon Sep 17 00:00:00 2001 From: Paul Kompfner Date: Tue, 6 May 2025 12:25:25 -0400 Subject: [PATCH] [WIP] AWS Nova Sonic service - minor fix: only try to read received JSON if we have it --- src/pipecat/services/aws_nova_sonic/aws.py | 48 +++++++++++----------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/pipecat/services/aws_nova_sonic/aws.py b/src/pipecat/services/aws_nova_sonic/aws.py index aa264155c..c2b56ef74 100644 --- a/src/pipecat/services/aws_nova_sonic/aws.py +++ b/src/pipecat/services/aws_nova_sonic/aws.py @@ -519,7 +519,7 @@ class AWSNovaSonicLLMService(LLMService): ''' await self._send_client_event(text_content_start) - escaped_text = json.dumps(text) # includes quotes + escaped_text = json.dumps(text) # includes quotes text_input = f''' {{ "event": {{ @@ -673,29 +673,29 @@ class AWSNovaSonicLLMService(LLMService): response_data = result.value.bytes_.decode("utf-8") json_data = json.loads(response_data) - if "event" in json_data: - event_json = json_data["event"] - if "completionStart" in event_json: - # Handle the LLM completion starting - await self._handle_completion_start_event(event_json) - elif "contentStart" in event_json: - # Handle a piece of content starting - await self._handle_content_start_event(event_json) - elif "textOutput" in event_json: - # Handle text output content - await self._handle_text_output_event(event_json) - elif "audioOutput" in event_json: - # Handle audio output content - await self._handle_audio_output_event(event_json) - elif "toolUse" in event_json: - # Handle tool use - await self._handle_tool_use_event(event_json) - elif "contentEnd" in event_json: - # Handle a piece of content ending - await self._handle_content_end_event(event_json) - elif "completionEnd" in event_json: - # Handle the LLM completion ending - await self._handle_completion_end_event(event_json) + if "event" in json_data: + event_json = json_data["event"] + if "completionStart" in event_json: + # Handle the LLM completion starting + await self._handle_completion_start_event(event_json) + elif "contentStart" in event_json: + # Handle a piece of content starting + await self._handle_content_start_event(event_json) + elif "textOutput" in event_json: + # Handle text output content + await self._handle_text_output_event(event_json) + elif "audioOutput" in event_json: + # Handle audio output content + await self._handle_audio_output_event(event_json) + elif "toolUse" in event_json: + # Handle tool use + await self._handle_tool_use_event(event_json) + elif "contentEnd" in event_json: + # Handle a piece of content ending + await self._handle_content_end_event(event_json) + elif "completionEnd" in event_json: + # Handle the LLM completion ending + await self._handle_completion_end_event(event_json) except Exception as e: logger.error(f"{self} error processing responses: {e}")