@@ -1189,7 +1189,10 @@ def _parse_stream_event(event: Dict[str, Any]) -> Optional[BaseMessageChunk]:
1189
1189
index = event ["contentBlockStart" ]["contentBlockIndex" ],
1190
1190
)
1191
1191
)
1192
- return AIMessageChunk (content = [block ], tool_call_chunks = tool_call_chunks )
1192
+ # always keep block inside a list to preserve merging compatibility
1193
+ content = [block ]
1194
+
1195
+ return AIMessageChunk (content = content , tool_call_chunks = tool_call_chunks )
1193
1196
elif "contentBlockDelta" in event :
1194
1197
block = {
1195
1198
** _bedrock_to_lc ([event ["contentBlockDelta" ]["delta" ]])[0 ],
@@ -1205,19 +1208,20 @@ def _parse_stream_event(event: Dict[str, Any]) -> Optional[BaseMessageChunk]:
1205
1208
index = event ["contentBlockDelta" ]["contentBlockIndex" ],
1206
1209
)
1207
1210
)
1208
- return AIMessageChunk (content = [block ], tool_call_chunks = tool_call_chunks )
1211
+ # always keep block inside a list to preserve merging compatibility
1212
+ content = [block ]
1213
+
1214
+ return AIMessageChunk (content = content , tool_call_chunks = tool_call_chunks )
1209
1215
elif "contentBlockStop" in event :
1210
1216
# TODO: needed?
1211
- return AIMessageChunk (
1212
- content = [{"index" : event ["contentBlockStop" ]["contentBlockIndex" ]}]
1213
- )
1217
+ return AIMessageChunk (content = [])
1214
1218
elif "messageStop" in event :
1215
1219
# TODO: snake case response metadata?
1216
- return AIMessageChunk (content = [] , response_metadata = event ["messageStop" ])
1220
+ return AIMessageChunk (content = "" , response_metadata = event ["messageStop" ])
1217
1221
elif "metadata" in event :
1218
1222
usage = _extract_usage_metadata (event ["metadata" ])
1219
1223
return AIMessageChunk (
1220
- content = [] , response_metadata = event ["metadata" ], usage_metadata = usage
1224
+ content = "" , response_metadata = event ["metadata" ], usage_metadata = usage
1221
1225
)
1222
1226
elif "Exception" in list (event .keys ())[0 ]:
1223
1227
name , info = list (event .items ())[0 ]
0 commit comments