Skip to content

Commit 06b3ecd

Browse files
committed
In AWS Nova Sonic service, send the "interactive" user message (which triggers the bot response) only after sending the audio input start event, per the AWS team's recommendation
1 parent b4d143e commit 06b3ecd

1 file changed

Lines changed: 16 additions & 7 deletions

File tree

  • src/pipecat/services/aws/nova_sonic

src/pipecat/services/aws/nova_sonic/llm.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -533,21 +533,30 @@ async def _finish_connecting_if_context_available(self):
533533
if system_instruction:
534534
await self._send_text_event(text=system_instruction, role=Role.SYSTEM)
535535

536-
# Send conversation history
536+
# Send conversation history (except for the last message if it's from the
537+
# user, which we'll send as interactive after starting audio input)
537538
messages = llm_connection_params["messages"]
539+
last_user_message = None
538540
for i, message in enumerate(messages):
539541
# logger.debug(f"Seeding conversation history with message: {message}")
540-
# If last message is from user, mark it as interactive to trigger
541-
# bot response
542542
is_last_message = i == len(messages) - 1
543-
interactive = is_last_message and message.role == Role.USER
544-
await self._send_text_event(
545-
text=message.text, role=message.role, interactive=interactive
546-
)
543+
if is_last_message and message.role == Role.USER:
544+
# Save for sending after audio input starts
545+
last_user_message = message
546+
else:
547+
await self._send_text_event(text=message.text, role=message.role)
547548

548549
# Start audio input
549550
await self._send_audio_input_start_event()
550551

552+
# Now send the last user message as interactive to trigger bot response
553+
if last_user_message:
554+
# logger.debug(
555+
# f"Sending last user message as interactive to trigger bot response: {last_user_message}")
556+
await self._send_text_event(
557+
text=last_user_message.text, role=last_user_message.role, interactive=True
558+
)
559+
551560
# Start receiving events
552561
self._receive_task = self.create_task(self._receive_task_handler())
553562

0 commit comments

Comments
 (0)