Skip to content

Commit 3052cc8

Browse files
fix: Return ChatBedrockConverse streaming content as str instead of list (#589)
Fixes #486 Supersedes PR #491 - full credit goes to SYED-M-HUSSAIN for the original fix --------- Co-authored-by: Hussainbeam <[email protected]>
1 parent 09842d6 commit 3052cc8

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

libs/aws/langchain_aws/chat_models/bedrock_converse.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1189,7 +1189,10 @@ def _parse_stream_event(event: Dict[str, Any]) -> Optional[BaseMessageChunk]:
11891189
index=event["contentBlockStart"]["contentBlockIndex"],
11901190
)
11911191
)
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)
11931196
elif "contentBlockDelta" in event:
11941197
block = {
11951198
**_bedrock_to_lc([event["contentBlockDelta"]["delta"]])[0],
@@ -1205,19 +1208,20 @@ def _parse_stream_event(event: Dict[str, Any]) -> Optional[BaseMessageChunk]:
12051208
index=event["contentBlockDelta"]["contentBlockIndex"],
12061209
)
12071210
)
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)
12091215
elif "contentBlockStop" in event:
12101216
# TODO: needed?
1211-
return AIMessageChunk(
1212-
content=[{"index": event["contentBlockStop"]["contentBlockIndex"]}]
1213-
)
1217+
return AIMessageChunk(content=[])
12141218
elif "messageStop" in event:
12151219
# TODO: snake case response metadata?
1216-
return AIMessageChunk(content=[], response_metadata=event["messageStop"])
1220+
return AIMessageChunk(content="", response_metadata=event["messageStop"])
12171221
elif "metadata" in event:
12181222
usage = _extract_usage_metadata(event["metadata"])
12191223
return AIMessageChunk(
1220-
content=[], response_metadata=event["metadata"], usage_metadata=usage
1224+
content="", response_metadata=event["metadata"], usage_metadata=usage
12211225
)
12221226
elif "Exception" in list(event.keys())[0]:
12231227
name, info = list(event.items())[0]

libs/aws/tests/integration_tests/chat_models/test_bedrock_converse.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ def test_structured_output_thinking_force_tool_use() -> None:
455455
},
456456
}
457457
with pytest.raises(llm.client.exceptions.ValidationException):
458-
response = llm.client.converse(messages=messages, **params)
458+
llm.client.converse(messages=messages, **params)
459459

460460

461461
def test_bedrock_pdf_inputs() -> None:

0 commit comments

Comments
 (0)