@@ -1170,9 +1170,9 @@ def _parse_stream_event(event: Dict[str, Any]) -> Optional[BaseMessageChunk]:
1170
1170
if "messageStart" in event :
1171
1171
# TODO: needed?
1172
1172
return (
1173
- AIMessageChunk (content = "" )
1173
+ AIMessageChunk (content = [] )
1174
1174
if event ["messageStart" ]["role" ] == "assistant"
1175
- else HumanMessageChunk (content = "" )
1175
+ else HumanMessageChunk (content = [] )
1176
1176
)
1177
1177
elif "contentBlockStart" in event :
1178
1178
block = {
@@ -1189,8 +1189,9 @@ def _parse_stream_event(event: Dict[str, Any]) -> Optional[BaseMessageChunk]:
1189
1189
index = event ["contentBlockStart" ]["contentBlockIndex" ],
1190
1190
)
1191
1191
)
1192
- # Keep content as list during streaming to preserve merging compatibility
1192
+ # always keep block inside a list to preserve merging compatibility
1193
1193
content = [block ]
1194
+
1194
1195
return AIMessageChunk (content = content , tool_call_chunks = tool_call_chunks )
1195
1196
elif "contentBlockDelta" in event :
1196
1197
block = {
@@ -1207,12 +1208,13 @@ def _parse_stream_event(event: Dict[str, Any]) -> Optional[BaseMessageChunk]:
1207
1208
index = event ["contentBlockDelta" ]["contentBlockIndex" ],
1208
1209
)
1209
1210
)
1210
- # Keep content as list during streaming to preserve merging compatibility
1211
+ # always keep block inside a list to preserve merging compatibility
1211
1212
content = [block ]
1213
+
1212
1214
return AIMessageChunk (content = content , tool_call_chunks = tool_call_chunks )
1213
1215
elif "contentBlockStop" in event :
1214
1216
# TODO: needed?
1215
- return AIMessageChunk (content = "" )
1217
+ return AIMessageChunk (content = [] )
1216
1218
elif "messageStop" in event :
1217
1219
# TODO: snake case response metadata?
1218
1220
return AIMessageChunk (content = "" , response_metadata = event ["messageStop" ])
0 commit comments