@@ -180,7 +180,7 @@ def get_config(self) -> BedrockConfig:
180180    def  _should_include_tool_result_status (self ) ->  bool :
181181        """Determine whether to include tool result status based on current config.""" 
182182        include_status  =  self .config .get ("include_tool_result_status" , "auto" )
183-          
183+ 
184184        if  include_status  is  True :
185185            return  True 
186186        elif  include_status  is  False :
@@ -275,6 +275,7 @@ def _format_bedrock_messages(self, messages: Messages) -> Messages:
275275        """Format messages for Bedrock API compatibility. 
276276
277277        This function ensures messages conform to Bedrock's expected format by: 
278+         - Filtering out SDK_UNKNOWN_MEMBER content blocks 
278279        - Cleaning tool result content blocks by removing additional fields that may be 
279280          useful for retaining information in hooks but would cause Bedrock validation 
280281          exceptions when presented with unexpected fields 
@@ -292,11 +293,17 @@ def _format_bedrock_messages(self, messages: Messages) -> Messages:
292293            https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolResultBlock.html 
293294        """ 
294295        cleaned_messages  =  []
296+         filtered_unknown_members  =  False 
295297
296298        for  message  in  messages :
297299            cleaned_content : list [ContentBlock ] =  []
298300
299301            for  content_block  in  message ["content" ]:
302+                 # Filter out SDK_UNKNOWN_MEMBER content blocks 
303+                 if  "SDK_UNKNOWN_MEMBER"  in  content_block :
304+                     filtered_unknown_members  =  True 
305+                     continue 
306+ 
300307                if  "toolResult"  in  content_block :
301308                    # Create a new content block with only the cleaned toolResult 
302309                    tool_result : ToolResult  =  content_block ["toolResult" ]
@@ -323,6 +330,12 @@ def _format_bedrock_messages(self, messages: Messages) -> Messages:
323330            # Create new message with cleaned content 
324331            cleaned_message : Message  =  Message (content = cleaned_content , role = message ["role" ])
325332            cleaned_messages .append (cleaned_message )
333+ 
334+         if  filtered_unknown_members :
335+             logger .warning (
336+                 "Filtered out SDK_UNKNOWN_MEMBER content blocks from messages, consider upgrading boto3 version" 
337+             )
338+ 
326339        return  cleaned_messages 
327340
328341    def  _has_blocked_guardrail (self , guardrail_data : dict [str , Any ]) ->  bool :
0 commit comments