diff --git a/libs/aws/langchain_aws/chat_models/bedrock_converse.py b/libs/aws/langchain_aws/chat_models/bedrock_converse.py index 95e1beea..fff14d9e 100644 --- a/libs/aws/langchain_aws/chat_models/bedrock_converse.py +++ b/libs/aws/langchain_aws/chat_models/bedrock_converse.py @@ -1189,7 +1189,10 @@ def _parse_stream_event(event: Dict[str, Any]) -> Optional[BaseMessageChunk]: index=event["contentBlockStart"]["contentBlockIndex"], ) ) - return AIMessageChunk(content=[block], tool_call_chunks=tool_call_chunks) + # always keep block inside a list to preserve merging compatibility + content = [block] + + return AIMessageChunk(content=content, tool_call_chunks=tool_call_chunks) elif "contentBlockDelta" in event: block = { **_bedrock_to_lc([event["contentBlockDelta"]["delta"]])[0], @@ -1205,19 +1208,20 @@ def _parse_stream_event(event: Dict[str, Any]) -> Optional[BaseMessageChunk]: index=event["contentBlockDelta"]["contentBlockIndex"], ) ) - return AIMessageChunk(content=[block], tool_call_chunks=tool_call_chunks) + # always keep block inside a list to preserve merging compatibility + content = [block] + + return AIMessageChunk(content=content, tool_call_chunks=tool_call_chunks) elif "contentBlockStop" in event: # TODO: needed? - return AIMessageChunk( - content=[{"index": event["contentBlockStop"]["contentBlockIndex"]}] - ) + return AIMessageChunk(content=[]) elif "messageStop" in event: # TODO: snake case response metadata? - return AIMessageChunk(content=[], response_metadata=event["messageStop"]) + return AIMessageChunk(content="", response_metadata=event["messageStop"]) elif "metadata" in event: usage = _extract_usage_metadata(event["metadata"]) return AIMessageChunk( - content=[], response_metadata=event["metadata"], usage_metadata=usage + content="", response_metadata=event["metadata"], usage_metadata=usage ) elif "Exception" in list(event.keys())[0]: name, info = list(event.items())[0] diff --git a/libs/aws/tests/integration_tests/chat_models/test_bedrock_converse.py b/libs/aws/tests/integration_tests/chat_models/test_bedrock_converse.py index f0a1c515..2977e629 100644 --- a/libs/aws/tests/integration_tests/chat_models/test_bedrock_converse.py +++ b/libs/aws/tests/integration_tests/chat_models/test_bedrock_converse.py @@ -455,7 +455,7 @@ def test_structured_output_thinking_force_tool_use() -> None: }, } with pytest.raises(llm.client.exceptions.ValidationException): - response = llm.client.converse(messages=messages, **params) + llm.client.converse(messages=messages, **params) def test_bedrock_pdf_inputs() -> None: