From fe79de8f27a3c54c3868a04314bba289a1d4b1ea Mon Sep 17 00:00:00 2001 From: Paul Kompfner Date: Tue, 9 Sep 2025 15:50:03 -0400 Subject: [PATCH] When converting universal `LLMContext` messages to AWS Bedrock expected format, automatically update non-initial "system"-role messages to "user"-role messages, as we do in other non-OpenAI LLM services --- src/pipecat/adapters/services/bedrock_adapter.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pipecat/adapters/services/bedrock_adapter.py b/src/pipecat/adapters/services/bedrock_adapter.py index 7f1b5138b..3e99edf6e 100644 --- a/src/pipecat/adapters/services/bedrock_adapter.py +++ b/src/pipecat/adapters/services/bedrock_adapter.py @@ -116,6 +116,12 @@ class AWSBedrockLLMAdapter(BaseLLMAdapter[AWSBedrockLLMInvocationParams]): system = messages[0]["content"] messages.pop(0) + # Convert any subsequent "system"-role messages to "user"-role + # messages, as AWS Bedrock doesn't support system input messages. + for message in messages: + if message["role"] == "system": + message["role"] = "user" + # Merge consecutive messages with the same role. i = 0 while i < len(messages) - 1: