Skip to content

Commit f4d1677

Browse files
ja-botmoonbox3
authored andcommitted
Python: Add missing index in Bedrock FunctionCallContent instantiation (microsoft#12203)
### Motivation and Context The current implementation of `BedrockChatCompletion` does not correctly initialize `FunctionCallContent` instances when using the Converse Stream API, as the index is not set. As a result, when adding two consecutive `FunctionCallContent` instances that belong to different function calls, the `__add__` method does not raise a `ContentAdditionException` exception, and the parameters are incorrectly merged. ### Description This PR ensures proper initialization of the index in `FunctionCallContent` instances by using the `contentBlockIndex` value returned by the Converse Stream API in both delta and start content block messages. This prevents parameters from different function calls from being merged. See: - https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlockDeltaEvent.html - https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlockStartEvent.html Closes microsoft#12202 ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄 Co-authored-by: Javier Cruz <[email protected]> Co-authored-by: Evan Mattson <[email protected]>
1 parent 3ab31c3 commit f4d1677

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

python/semantic_kernel/connectors/ai/bedrock/services/bedrock_chat_completion.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,7 @@ def _parse_content_block_start_event(self, event: dict[str, Any]) -> StreamingCh
381381
FunctionCallContent(
382382
id=event["contentBlockStart"]["start"]["toolUse"]["toolUseId"],
383383
name=event["contentBlockStart"]["start"]["toolUse"]["name"],
384+
index=event["contentBlockStart"]["contentBlockIndex"],
384385
)
385386
)
386387

0 commit comments

Comments
 (0)