diff --git a/CHANGELOG.md b/CHANGELOG.md index d92c56e3d1..0dac42cb01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,8 +11,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + - `opentelemetry-instrumentation-asyncclick`: new instrumentation to trace asyncclick commands ([#3319](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3319)) +- `opentelemetry-instrumentation-botocore` Add support for GenAI tool events using Amazon Nova models and `InvokeModel*` APIs + ([#3385](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3385)) ### Fixed diff --git a/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/__init__.py b/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/__init__.py index e8c0326d5b..2a161fe16a 100644 --- a/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/__init__.py @@ -109,7 +109,9 @@ def response_hook(span, service_name, operation_name, result): - Amazon Nova models - Anthropic Claude -There is no support for tool calls with Amazon Models for the InvokeModel and InvokeModelWithResponseStream APIs. +Tool calls with InvokeModel and InvokeModelWithResponseStream APIs are supported with: +- Amazon Nova models +- Anthropic Claude 3+ """ import logging diff --git a/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/extensions/bedrock_utils.py b/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/extensions/bedrock_utils.py index 2020d80805..08d7a0820b 100644 --- a/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/extensions/bedrock_utils.py +++ b/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/extensions/bedrock_utils.py @@ -216,7 +216,6 @@ def _process_amazon_titan_chunk(self, chunk): def _process_amazon_nova_chunk(self, chunk): # pylint: disable=too-many-branches - # TODO: handle tool calls! if "messageStart" in chunk: # {'messageStart': {'role': 'assistant'}} if chunk["messageStart"].get("role") == "assistant": @@ -224,17 +223,40 @@ def _process_amazon_nova_chunk(self, chunk): self._message = {"role": "assistant", "content": []} return + if "contentBlockStart" in chunk: + # {'contentBlockStart': {'start': {'toolUse': {'toolUseId': 'id', 'name': 'name'}}, 'contentBlockIndex': 31}} + if self._record_message: + self._message["content"].append(self._content_block) + + start = chunk["contentBlockStart"].get("start", {}) + if "toolUse" in start: + self._content_block = start + else: + self._content_block = {} + return + if "contentBlockDelta" in chunk: # {'contentBlockDelta': {'delta': {'text': "Hello"}, 'contentBlockIndex': 0}} + # {'contentBlockDelta': {'delta': {'toolUse': {'input': '{"location":"San Francisco"}'}}, 'contentBlockIndex': 31}} if self._record_message: delta = chunk["contentBlockDelta"].get("delta", {}) if "text" in delta: self._content_block.setdefault("text", "") self._content_block["text"] += delta["text"] + elif "toolUse" in delta: + self._content_block.setdefault("toolUse", {}) + self._content_block["toolUse"]["input"] = json.loads( + delta["toolUse"]["input"] + ) return if "contentBlockStop" in chunk: # {'contentBlockStop': {'contentBlockIndex': 0}} + if self._record_message: + # create a new content block only for tools + if "toolUse" in self._content_block: + self._message["content"].append(self._content_block) + self._content_block = {} return if "messageStop" in chunk: diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_no_content_tool_call[amazon.nova].yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_no_content_tool_call[amazon.nova].yaml new file mode 100644 index 0000000000..b2938c44e9 --- /dev/null +++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_no_content_tool_call[amazon.nova].yaml @@ -0,0 +1,291 @@ +interactions: +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco" + } + ] + } + ], + "inferenceConfig": { + "max_new_tokens": 1000 + }, + "schemaVersion": "messages-v1", + "toolConfig": { + "tools": [ + { + "toolSpec": { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "inputSchema": { + "json": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + } + } + ] + } + } + headers: + Content-Length: + - '552' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T130901Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-2541300b-2dbeda14c09ccd3d3b041879;Parent=1fc006fd156b7383;Sampled=1 + amz-sdk-invocation-id: + - 09f5a7ed-4163-46ec-a974-000c5662062a + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.nova-micro-v1%3A0/invoke + response: + body: + string: |- + { + "output": { + "message": { + "content": [ + { + "text": " To provide the current weather information for both Seattle and San Francisco, I will need to use the `get_current_weather` tool separately for each city. I will start by calling the tool for Seattle and then proceed to call it for San Francisco.\n" + }, + { + "toolUse": { + "name": "get_current_weather", + "toolUseId": "4d8acf92-6a04-42b6-aaf7-f68937a339ef", + "input": { + "location": "Seattle" + } + } + }, + { + "toolUse": { + "name": "get_current_weather", + "toolUseId": "db27bd9d-9f7d-4783-aa8b-59871e00e0bc", + "input": { + "location": "San Francisco" + } + } + } + ], + "role": "assistant" + } + }, + "stopReason": "tool_use", + "usage": { + "inputTokens": 427, + "outputTokens": 172, + "totalTokens": 599, + "cacheReadInputTokenCount": 0, + "cacheWriteInputTokenCount": 0 + } + } + headers: + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 25 Mar 2025 13:09:02 GMT + Set-Cookie: test_set_cookie + X-Amzn-Bedrock-Cache-Read-Input-Token-Count: + - '0' + X-Amzn-Bedrock-Cache-Write-Input-Token-Count: + - '0' + X-Amzn-Bedrock-Input-Token-Count: + - '427' + X-Amzn-Bedrock-Invocation-Latency: + - '430' + X-Amzn-Bedrock-Output-Token-Count: + - '172' + x-amzn-RequestId: + - adebeba4-5940-4c34-87a1-46cd45646bbe + status: + code: 200 + message: OK +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco" + } + ] + }, + { + "content": [ + { + "text": " To provide the current weather information for both Seattle and San Francisco, I will need to use the `get_current_weather` tool separately for each city. I will start by calling the tool for Seattle and then proceed to call it for San Francisco.\n" + }, + { + "toolUse": { + "name": "get_current_weather", + "toolUseId": "4d8acf92-6a04-42b6-aaf7-f68937a339ef", + "input": { + "location": "Seattle" + } + } + }, + { + "toolUse": { + "name": "get_current_weather", + "toolUseId": "db27bd9d-9f7d-4783-aa8b-59871e00e0bc", + "input": { + "location": "San Francisco" + } + } + } + ], + "role": "assistant" + }, + { + "role": "user", + "content": [ + { + "toolResult": { + "toolUseId": "4d8acf92-6a04-42b6-aaf7-f68937a339ef", + "content": [ + { + "json": { + "weather": "50 degrees and raining" + } + } + ] + } + }, + { + "toolResult": { + "toolUseId": "db27bd9d-9f7d-4783-aa8b-59871e00e0bc", + "content": [ + { + "json": { + "weather": "70 degrees and sunny" + } + } + ] + } + } + ] + } + ], + "inferenceConfig": { + "max_new_tokens": 1000 + }, + "schemaVersion": "messages-v1", + "toolConfig": { + "tools": [ + { + "toolSpec": { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "inputSchema": { + "json": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + } + } + ] + } + } + headers: + Content-Length: + - '1439' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T130902Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-2592d804-d8515e92a6320e1d293c3643;Parent=5406f9af558aaabe;Sampled=1 + amz-sdk-invocation-id: + - 4ad9ba7e-df5a-4a01-a3a1-40fce5d29ef2 + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.nova-micro-v1%3A0/invoke + response: + body: + string: |- + { + "output": { + "message": { + "content": [ + { + "text": " I have received the weather information for both cities. Now I will compile this information and present it to the User.\n\nThe current weather in Seattle is 50 degrees and it is raining. In San Francisco, the weather is 70 degrees and sunny." + } + ], + "role": "assistant" + } + }, + "stopReason": "end_turn", + "usage": { + "inputTokens": 576, + "outputTokens": 57, + "totalTokens": 633, + "cacheReadInputTokenCount": 0, + "cacheWriteInputTokenCount": 0 + } + } + headers: + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 25 Mar 2025 13:09:03 GMT + Set-Cookie: test_set_cookie + X-Amzn-Bedrock-Cache-Read-Input-Token-Count: + - '0' + X-Amzn-Bedrock-Cache-Write-Input-Token-Count: + - '0' + X-Amzn-Bedrock-Input-Token-Count: + - '576' + X-Amzn-Bedrock-Invocation-Latency: + - '417' + X-Amzn-Bedrock-Output-Token-Count: + - '57' + x-amzn-RequestId: + - cedb9b10-f794-4ec4-ac67-f3e237511e62 + status: + code: 200 + message: OK +version: 1 diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_content_tool_call.yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_no_content_tool_call[anthropic.claude].yaml similarity index 79% rename from instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_content_tool_call.yaml rename to instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_no_content_tool_call[anthropic.claude].yaml index 08e65b4edb..d88b275cef 100644 --- a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_content_tool_call.yaml +++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_no_content_tool_call[anthropic.claude].yaml @@ -41,13 +41,13 @@ interactions: - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 X-Amz-Date: - - 20250226T143024Z + - 20250325T130903Z X-Amz-Security-Token: - test_aws_security_token X-Amzn-Trace-Id: - - Root=1-38bb047d-8e135e7b4c7c165862a664a1;Parent=ab16e771e2f2d78d;Sampled=1 + - Root=1-8d12ecff-5ad6ccf1b77b1190770e7184;Parent=4b902787e2994328;Sampled=1 amz-sdk-invocation-id: - - dbf36675-5cd7-4a56-9bf8-8a2d9a5a34e5 + - 67f1613f-e740-4deb-b887-a6fa61e21fa2 amz-sdk-request: - attempt=1 authorization: @@ -58,7 +58,7 @@ interactions: body: string: |- { - "id": "msg_bdrk_01Y6wb6bR2NWTWgiivTxHcro", + "id": "msg_bdrk_01VBpy5uMQLnyfKbPQskaPH3", "type": "message", "role": "assistant", "model": "claude-3-5-sonnet-20240620", @@ -69,7 +69,7 @@ interactions: }, { "type": "tool_use", - "id": "toolu_bdrk_01SiKnuixXFeF3NtmWdbwVJq", + "id": "toolu_bdrk_019pyFnRNCLD8eRrPFryV45k", "name": "get_current_weather", "input": { "location": "Seattle" @@ -77,7 +77,7 @@ interactions: }, { "type": "tool_use", - "id": "toolu_bdrk_01DXENHuRw9nVyE42MKRoVe5", + "id": "toolu_bdrk_01DtdjkUePw2E5bVHGifpu3j", "name": "get_current_weather", "input": { "location": "San Francisco" @@ -97,16 +97,16 @@ interactions: Content-Type: - application/json Date: - - Wed, 26 Feb 2025 14:30:28 GMT + - Tue, 25 Mar 2025 13:09:07 GMT Set-Cookie: test_set_cookie X-Amzn-Bedrock-Input-Token-Count: - '392' X-Amzn-Bedrock-Invocation-Latency: - - '3733' + - '3788' X-Amzn-Bedrock-Output-Token-Count: - '135' x-amzn-RequestId: - - 6e567b9f-286e-4749-a406-6517faf9fb65 + - f4badbe2-968d-4ec7-a7c9-0b6b53c1da8c status: code: 200 message: OK @@ -132,7 +132,7 @@ interactions: }, { "type": "tool_use", - "id": "toolu_bdrk_01SiKnuixXFeF3NtmWdbwVJq", + "id": "toolu_bdrk_019pyFnRNCLD8eRrPFryV45k", "name": "get_current_weather", "input": { "location": "Seattle" @@ -140,7 +140,7 @@ interactions: }, { "type": "tool_use", - "id": "toolu_bdrk_01DXENHuRw9nVyE42MKRoVe5", + "id": "toolu_bdrk_01DtdjkUePw2E5bVHGifpu3j", "name": "get_current_weather", "input": { "location": "San Francisco" @@ -153,12 +153,12 @@ interactions: "content": [ { "type": "tool_result", - "tool_use_id": "toolu_bdrk_01SiKnuixXFeF3NtmWdbwVJq", + "tool_use_id": "toolu_bdrk_019pyFnRNCLD8eRrPFryV45k", "content": "50 degrees and raining" }, { "type": "tool_result", - "tool_use_id": "toolu_bdrk_01DXENHuRw9nVyE42MKRoVe5", + "tool_use_id": "toolu_bdrk_01DtdjkUePw2E5bVHGifpu3j", "content": "70 degrees and sunny" } ] @@ -192,13 +192,13 @@ interactions: - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 X-Amz-Date: - - 20250226T143028Z + - 20250325T130907Z X-Amz-Security-Token: - test_aws_security_token X-Amzn-Trace-Id: - - Root=1-128d42ac-8f5e3d864a1b0fc0bc6780bd;Parent=bf82ed08ab52ae1b;Sampled=1 + - Root=1-c68ede29-e6b06012c6c4c9f2f1b1e4b5;Parent=39c2a2da849c36cb;Sampled=1 amz-sdk-invocation-id: - - 2ea0920e-088b-4558-9c8d-1195d19fae2f + - 6d49de72-fb0f-453c-93d9-2c0b8290f7d0 amz-sdk-request: - attempt=1 authorization: @@ -209,21 +209,21 @@ interactions: body: string: |- { - "id": "msg_bdrk_01VcLiX4qiCGKdQiTCW1dTPL", + "id": "msg_bdrk_01CTxAJ2MbeWdBb3r5SAyprB", "type": "message", "role": "assistant", "model": "claude-3-5-sonnet-20240620", "content": [ { "type": "text", - "text": "Thank you for providing the weather information. Here's the current weather for Seattle and San Francisco:\n\n1. Seattle: The current weather in Seattle is 50 degrees and raining.\n2. San Francisco: The current weather in San Francisco is 70 degrees and sunny.\n\nAs you can see, there's quite a difference in the weather between these two West Coast cities today. Seattle is experiencing cooler temperatures with rain, which is fairly typical for the Pacific Northwest. On the other hand, San Francisco is enjoying warmer temperatures with sunny skies, making for a pleasant day in the Bay Area.\n\nIs there anything else you'd like to know about the weather in these cities or any other locations?" + "text": "Thank you for providing the weather information for both cities. Here's the current weather for Seattle and San Francisco today:\n\n1. Seattle: The current weather in Seattle is 50 degrees and raining.\n2. San Francisco: The current weather in San Francisco is 70 degrees and sunny.\n\nAs you can see, there's quite a difference in the weather between these two West Coast cities today. Seattle is experiencing cooler temperatures with rain, which is fairly typical for the Pacific Northwest. On the other hand, San Francisco is enjoying a warm, sunny day, which is pleasant for outdoor activities.\n\nIs there anything else you'd like to know about the weather in these cities or any other locations?" } ], "stop_reason": "end_turn", "stop_sequence": null, "usage": { "input_tokens": 604, - "output_tokens": 150 + "output_tokens": 149 } } headers: @@ -232,16 +232,16 @@ interactions: Content-Type: - application/json Date: - - Wed, 26 Feb 2025 14:30:33 GMT + - Tue, 25 Mar 2025 13:09:12 GMT Set-Cookie: test_set_cookie X-Amzn-Bedrock-Input-Token-Count: - '604' X-Amzn-Bedrock-Invocation-Latency: - - '4549' + - '4208' X-Amzn-Bedrock-Output-Token-Count: - - '150' + - '149' x-amzn-RequestId: - - c6ea96ea-758f-4af8-bbdb-2204d91eddfe + - 9e07abe1-4450-41af-b2f1-ecd82d66493d status: code: 200 message: OK diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_content_tool_call[amazon.nova].yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_content_tool_call[amazon.nova].yaml new file mode 100644 index 0000000000..fcb549aebb --- /dev/null +++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_content_tool_call[amazon.nova].yaml @@ -0,0 +1,291 @@ +interactions: +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco" + } + ] + } + ], + "inferenceConfig": { + "max_new_tokens": 1000 + }, + "schemaVersion": "messages-v1", + "toolConfig": { + "tools": [ + { + "toolSpec": { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "inputSchema": { + "json": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + } + } + ] + } + } + headers: + Content-Length: + - '552' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T104304Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-718e449f-1e7fbb291880eb98876a4cc3;Parent=fad0d08c42fc3875;Sampled=1 + amz-sdk-invocation-id: + - aecefc62-8b85-45ab-8191-e8449cd2762d + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.nova-micro-v1%3A0/invoke + response: + body: + string: |- + { + "output": { + "message": { + "content": [ + { + "text": " To provide the current weather in both Seattle and San Francisco, I will use the `get_current_weather` tool for each city separately. I will start with Seattle and then proceed to San Francisco.\n" + }, + { + "toolUse": { + "name": "get_current_weather", + "toolUseId": "a385bacb-2011-4f60-b0d3-1455602f4438", + "input": { + "location": "Seattle" + } + } + }, + { + "toolUse": { + "name": "get_current_weather", + "toolUseId": "9b02c6fa-4676-4ab5-b2e4-015e86994df7", + "input": { + "location": "San Francisco" + } + } + } + ], + "role": "assistant" + } + }, + "stopReason": "tool_use", + "usage": { + "inputTokens": 427, + "outputTokens": 162, + "totalTokens": 589, + "cacheReadInputTokenCount": 0, + "cacheWriteInputTokenCount": 0 + } + } + headers: + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 25 Mar 2025 10:43:05 GMT + Set-Cookie: test_set_cookie + X-Amzn-Bedrock-Cache-Read-Input-Token-Count: + - '0' + X-Amzn-Bedrock-Cache-Write-Input-Token-Count: + - '0' + X-Amzn-Bedrock-Input-Token-Count: + - '427' + X-Amzn-Bedrock-Invocation-Latency: + - '433' + X-Amzn-Bedrock-Output-Token-Count: + - '162' + x-amzn-RequestId: + - e2d1ae4d-3b03-47d1-b527-647a923c3844 + status: + code: 200 + message: OK +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco" + } + ] + }, + { + "content": [ + { + "text": " To provide the current weather in both Seattle and San Francisco, I will use the `get_current_weather` tool for each city separately. I will start with Seattle and then proceed to San Francisco.\n" + }, + { + "toolUse": { + "name": "get_current_weather", + "toolUseId": "a385bacb-2011-4f60-b0d3-1455602f4438", + "input": { + "location": "Seattle" + } + } + }, + { + "toolUse": { + "name": "get_current_weather", + "toolUseId": "9b02c6fa-4676-4ab5-b2e4-015e86994df7", + "input": { + "location": "San Francisco" + } + } + } + ], + "role": "assistant" + }, + { + "role": "user", + "content": [ + { + "toolResult": { + "toolUseId": "a385bacb-2011-4f60-b0d3-1455602f4438", + "content": [ + { + "json": { + "weather": "50 degrees and raining" + } + } + ] + } + }, + { + "toolResult": { + "toolUseId": "9b02c6fa-4676-4ab5-b2e4-015e86994df7", + "content": [ + { + "json": { + "weather": "70 degrees and sunny" + } + } + ] + } + } + ] + } + ], + "inferenceConfig": { + "max_new_tokens": 1000 + }, + "schemaVersion": "messages-v1", + "toolConfig": { + "tools": [ + { + "toolSpec": { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "inputSchema": { + "json": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + } + } + ] + } + } + headers: + Content-Length: + - '1387' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T104305Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-d911cb99-61b0e8799bdc802df78a2c16;Parent=fe95b1cfeecf2dcd;Sampled=1 + amz-sdk-invocation-id: + - d7528c91-631f-459f-9d4b-ba4cceb1e08f + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.nova-micro-v1%3A0/invoke + response: + body: + string: |- + { + "output": { + "message": { + "content": [ + { + "text": " I have received the weather information for both Seattle and San Francisco. Now I will compile this information and present it to the User.\n\nThe current weather in Seattle is 50 degrees and it is raining. In San Francisco, the weather is 70 degrees and sunny." + } + ], + "role": "assistant" + } + }, + "stopReason": "end_turn", + "usage": { + "inputTokens": 566, + "outputTokens": 60, + "totalTokens": 626, + "cacheReadInputTokenCount": 0, + "cacheWriteInputTokenCount": 0 + } + } + headers: + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 25 Mar 2025 10:43:06 GMT + Set-Cookie: test_set_cookie + X-Amzn-Bedrock-Cache-Read-Input-Token-Count: + - '0' + X-Amzn-Bedrock-Cache-Write-Input-Token-Count: + - '0' + X-Amzn-Bedrock-Input-Token-Count: + - '566' + X-Amzn-Bedrock-Invocation-Latency: + - '402' + X-Amzn-Bedrock-Output-Token-Count: + - '60' + x-amzn-RequestId: + - 085cca26-6cd7-4a4a-84bb-dbedfc44d806 + status: + code: 200 + message: OK +version: 1 diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_no_content_tool_call.yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_content_tool_call[anthropic.claude].yaml similarity index 73% rename from instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_no_content_tool_call.yaml rename to instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_content_tool_call[anthropic.claude].yaml index d17a7650e7..448d71ba60 100644 --- a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_no_content_tool_call.yaml +++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_content_tool_call[anthropic.claude].yaml @@ -41,13 +41,13 @@ interactions: - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 X-Amz-Date: - - 20250226T151736Z + - 20250325T104306Z X-Amz-Security-Token: - test_aws_security_token X-Amzn-Trace-Id: - - Root=1-be4db93b-959d2ec8903f2762e5f37cbd;Parent=b5141bf00d68433b;Sampled=1 + - Root=1-707dba6e-fd8c6f2155d8bb2cca4f2be9;Parent=4b0c1b6755b4ba5f;Sampled=1 amz-sdk-invocation-id: - - c3a88d0a-aa88-4b5a-8863-57a1244ad6dc + - d352356d-f036-41bb-9089-fc9401621c09 amz-sdk-request: - attempt=1 authorization: @@ -58,18 +58,18 @@ interactions: body: string: |- { - "id": "msg_bdrk_01QWPpNurHqPGh95Hw2trJHi", + "id": "msg_bdrk_01Vcemt76oWJo739rm2hmaxn", "type": "message", "role": "assistant", "model": "claude-3-5-sonnet-20240620", "content": [ { "type": "text", - "text": "Certainly! I'll check the current weather for both Seattle and San Francisco using the available tool. I'll make two separate calls to the `get_current_weather` function, one for each city." + "text": "Certainly! I'll check the current weather for both Seattle and San Francisco using the available tool. I'll make two separate calls to the get_current_weather function, one for each city." }, { "type": "tool_use", - "id": "toolu_bdrk_014GpWZJt1rkFqZa7mHk2aJq", + "id": "toolu_bdrk_01Y5MJKoHE4VJ5ZrhcVfM1gP", "name": "get_current_weather", "input": { "location": "Seattle" @@ -77,7 +77,7 @@ interactions: }, { "type": "tool_use", - "id": "toolu_bdrk_01L38gxST8wiG9nGDCWk2C65", + "id": "toolu_bdrk_014yQPSMntXHRmzGYxCbmBHE", "name": "get_current_weather", "input": { "location": "San Francisco" @@ -88,7 +88,7 @@ interactions: "stop_sequence": null, "usage": { "input_tokens": 392, - "output_tokens": 137 + "output_tokens": 135 } } headers: @@ -97,16 +97,16 @@ interactions: Content-Type: - application/json Date: - - Wed, 26 Feb 2025 15:17:41 GMT + - Tue, 25 Mar 2025 10:43:10 GMT Set-Cookie: test_set_cookie X-Amzn-Bedrock-Input-Token-Count: - '392' X-Amzn-Bedrock-Invocation-Latency: - - '5525' + - '3712' X-Amzn-Bedrock-Output-Token-Count: - - '137' + - '135' x-amzn-RequestId: - - ffb07f8d-164c-43e0-991f-646773dd645f + - e35fc4e1-e704-4785-985d-684916e41fd1 status: code: 200 message: OK @@ -128,11 +128,11 @@ interactions: "content": [ { "type": "text", - "text": "Certainly! I'll check the current weather for both Seattle and San Francisco using the available tool. I'll make two separate calls to the `get_current_weather` function, one for each city." + "text": "Certainly! I'll check the current weather for both Seattle and San Francisco using the available tool. I'll make two separate calls to the get_current_weather function, one for each city." }, { "type": "tool_use", - "id": "toolu_bdrk_014GpWZJt1rkFqZa7mHk2aJq", + "id": "toolu_bdrk_01Y5MJKoHE4VJ5ZrhcVfM1gP", "name": "get_current_weather", "input": { "location": "Seattle" @@ -140,7 +140,7 @@ interactions: }, { "type": "tool_use", - "id": "toolu_bdrk_01L38gxST8wiG9nGDCWk2C65", + "id": "toolu_bdrk_014yQPSMntXHRmzGYxCbmBHE", "name": "get_current_weather", "input": { "location": "San Francisco" @@ -153,12 +153,12 @@ interactions: "content": [ { "type": "tool_result", - "tool_use_id": "toolu_bdrk_014GpWZJt1rkFqZa7mHk2aJq", + "tool_use_id": "toolu_bdrk_01Y5MJKoHE4VJ5ZrhcVfM1gP", "content": "50 degrees and raining" }, { "type": "tool_result", - "tool_use_id": "toolu_bdrk_01L38gxST8wiG9nGDCWk2C65", + "tool_use_id": "toolu_bdrk_014yQPSMntXHRmzGYxCbmBHE", "content": "70 degrees and sunny" } ] @@ -187,18 +187,18 @@ interactions: } headers: Content-Length: - - '1301' + - '1299' User-Agent: - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 X-Amz-Date: - - 20250226T151741Z + - 20250325T104310Z X-Amz-Security-Token: - test_aws_security_token X-Amzn-Trace-Id: - - Root=1-11ab3305-1fc481b7382fb201231fc60f;Parent=f67d918ec897fe1d;Sampled=1 + - Root=1-60501822-2add5a653af51ee5ebd4ee49;Parent=66a9d0972d34fef2;Sampled=1 amz-sdk-invocation-id: - - 9a379a0a-1d36-407c-9cfb-40ed5a06671c + - 011563b5-68d3-49d6-8951-87739673b32c amz-sdk-request: - attempt=1 authorization: @@ -209,21 +209,21 @@ interactions: body: string: |- { - "id": "msg_bdrk_01F9DN3P4FcAd295FfvbW4Lf", + "id": "msg_bdrk_0177fGp1jEHWhhQXD31c6BEm", "type": "message", "role": "assistant", "model": "claude-3-5-sonnet-20240620", "content": [ { "type": "text", - "text": "Thank you for providing the weather information. Based on the tool results, here's the current weather for Seattle and San Francisco:\n\nSeattle: The current weather in Seattle is 50 degrees and raining.\n\nSan Francisco: The current weather in San Francisco is 70 degrees and sunny.\n\nAs you can see, there's quite a difference in the weather between these two West Coast cities today. Seattle is experiencing cooler temperatures with rain, which is not uncommon for the city. On the other hand, San Francisco is enjoying a warmer, sunny day. If you're planning any activities in either city, you might want to dress accordingly \u2013 perhaps bring a rain jacket and umbrella in Seattle, while in San Francisco, you could comfortably enjoy outdoor activities in the pleasant weather.\n\nIs there anything else you'd like to know about the weather in these cities or any other locations?" + "text": "Based on the results from our weather tool, here's the current weather for Seattle and San Francisco:\n\n1. Seattle: The current weather in Seattle is 50 degrees and raining.\n2. San Francisco: The current weather in San Francisco is 70 degrees and sunny.\n\nAs you can see, the two cities are experiencing quite different weather conditions today. Seattle is having a cooler, rainy day, which is fairly typical for the Pacific Northwest. On the other hand, San Francisco is enjoying warmer temperatures and sunshine, making for a pleasant day in the Bay Area.\n\nIs there anything else you'd like to know about the weather in these cities or any other locations?" } ], "stop_reason": "end_turn", "stop_sequence": null, "usage": { - "input_tokens": 606, - "output_tokens": 187 + "input_tokens": 604, + "output_tokens": 146 } } headers: @@ -232,16 +232,16 @@ interactions: Content-Type: - application/json Date: - - Wed, 26 Feb 2025 15:17:50 GMT + - Tue, 25 Mar 2025 10:43:15 GMT Set-Cookie: test_set_cookie X-Amzn-Bedrock-Input-Token-Count: - - '606' + - '604' X-Amzn-Bedrock-Invocation-Latency: - - '8333' + - '4047' X-Amzn-Bedrock-Output-Token-Count: - - '187' + - '146' x-amzn-RequestId: - - f78980c5-06c8-4684-8eee-da4a0f847a82 + - b34cbc84-44fe-4217-84f1-0b897a6880e0 status: code: 200 message: OK diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_no_content_tool_call.yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_no_content_tool_call.yaml deleted file mode 100644 index 79f4542141..0000000000 --- a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_no_content_tool_call.yaml +++ /dev/null @@ -1,468 +0,0 @@ -interactions: -- request: - body: |- - { - "messages": [ - { - "role": "user", - "content": [ - { - "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco", - "type": "text" - } - ] - } - ], - "anthropic_version": "bedrock-2023-05-31", - "tools": [ - { - "name": "get_current_weather", - "description": "Get the current weather in a given location.", - "input_schema": { - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "The name of the city" - } - }, - "required": [ - "location" - ] - } - } - ], - "max_tokens": 1000 - } - headers: - Content-Length: - - '515' - User-Agent: - - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 - lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 - X-Amz-Date: - - 20250226T162651Z - X-Amz-Security-Token: - - test_aws_security_token - X-Amzn-Trace-Id: - - Root=1-10a25b27-b954e11442909a0f803e1ac4;Parent=a390cc92f9828a56;Sampled=1 - amz-sdk-invocation-id: - - beb75a8c-d5ba-4a82-8c80-4ddfb471dd52 - amz-sdk-request: - - attempt=1 - authorization: - - Bearer test_aws_authorization - method: POST - uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-sonnet-20240620-v1%3A0/invoke-with-response-stream - response: - body: - string: !!binary | - AAAB+wAAAEtwlPWYCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 - aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj - MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVRVM2Iy - SmFaV3BNVldsV1dsVlVZMVJqWmtGeGVIRWlMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV - aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHpMVFV0YzI5dWJtVjBMVEl3 - TWpRd05qSXdJaXdpWTI5dWRHVnVkQ0k2VzEwc0luTjBiM0JmY21WaGMyOXVJanB1ZFd4c0xDSnpk - Rzl3WDNObGNYVmxibU5sSWpwdWRXeHNMQ0oxYzJGblpTSTZleUpwYm5CMWRGOTBiMnRsYm5NaU9q - TTVNaXdpYjNWMGNIVjBYM1J2YTJWdWN5STZNVEI5ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w - cXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4In1vN6vvAAABBwAA - AEv9UEjECzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pz - b24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5 - aWJHOWphMTl6ZEdGeWRDSXNJbWx1WkdWNElqb3dMQ0pqYjI1MFpXNTBYMkpzYjJOcklqcDdJblI1 - Y0dVaU9pSjBaWGgwSWl3aWRHVjRkQ0k2SWlKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFy - c3R1dnd4eXpBQkNERUZHSElKS0xNTk8ifXB7QbUAAAFEAAAAS+IDal0LOmV2ZW50LXR5cGUHAAVj - aHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZl - bnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVa - R1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9p - SkRaWEowWVdsdWJIa2hJRWtuYkd3Z1kyaGxZMnNnZEdobElHTjFjbkpsYm5RZ2QyVmhkR2hsY2lC - bWIzSWlmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5P - UFFSU1QifZeoBF8AAAEWAAAAS6DQ9vYLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl - BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVY - QmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJ - NmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdZbTkwYUNCVFpXRjBkR3hs - SUdGdVpDQlRZVzRnUm5KaGJtTnBjMk52SUhWemFXNW5JbjE5IiwicCI6ImFiY2RlZmdoaWprbCJ9 - W9VIygAAAPsAAABLu8gmPQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs - aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZ - Mjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVY - QmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ2RHaGxJR0YyWVdsc1lXSnNaU0IwYjI5 - c0xpQkpJbjE5IiwicCI6ImFiY2RlIn14bAq8AAABDgAAAEvwQCq1CzpldmVudC10eXBlBwAFY2h1 - bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50 - eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdW - NElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlu - Ykd3Z2JXRnJaU0IwZDI4Z2MyVndZWEpoZEdVZ1kyRnNiSE1nZEc4Z2RHaGxJbjE5IiwicCI6ImFi - Y2RlZmdoIn2OxI3cAAABNQAAAEsmsaMiCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw - ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBl - WEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlT - STZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnWjJWMFgyTjFjbkpsYm5S - ZmQyVmhkR2hsY2lCbWRXNWpkR2x2Yml3Z2IyNWxJR1p2Y2lCbFlXTm9JbjE5IiwicCI6ImFiY2Rl - ZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJIn3aQuB7AAABGwAAAEtYQDJHCzpldmVudC10 - eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlw - ZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlT - SXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5S - bGVIUWlPaUlnWTJsMGVTNGlmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJD - REVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNCJ94RZuCgAAALoAAABL3ltXxAs6ZXZlbnQtdHlw - ZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUH - AAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5emRHOXdJaXdp - YVc1a1pYZ2lPakI5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eCJ9Rwp15AAAAWoAAABL - nPL7OAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u - DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWli - RzlqYTE5emRHRnlkQ0lzSW1sdVpHVjRJam94TENKamIyNTBaVzUwWDJKc2IyTnJJanA3SW5SNWNH - VWlPaUowYjI5c1gzVnpaU0lzSW1sa0lqb2lkRzl2YkhWZlltUnlhMTh3TVRkTFF6UklRVFJrYjBR - elVXUjNPRmMxV0VKS01qVWlMQ0p1WVcxbElqb2laMlYwWDJOMWNuSmxiblJmZDJWaGRHaGxjaUlz - SW1sdWNIVjBJanA3ZlgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdI - SUpLTE1OIn2gPuNzAAABCgAAAEsFwIx1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw - ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBl - WEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3hMQ0prWld4MFlT - STZleUowZVhCbElqb2lhVzV3ZFhSZmFuTnZibDlrWld4MFlTSXNJbkJoY25ScFlXeGZhbk52YmlJ - NklpSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUIifUMf/SwAAAEXAAAA - S52w30YLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNv - bg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlp - Ykc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpveExDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWFXNXdk - WFJmYW5OdmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFuTnZiaUk2SW50Y0lteHZZeUo5ZlE9PSIs - InAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkcifVxwRWoAAAEIAAAAS38A3xUL - OmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz - c2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amEx - OWtaV3gwWVNJc0ltbHVaR1Y0SWpveExDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWFXNXdkWFJmYW5O - dmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFuTnZiaUk2SW1GMGFXOXVYQ0k2SW4xOSIsInAiOiJh - YmNkZWZnaGlqa2xtbm9wcXIiffdXeowAAAExAAAAS9MxBeILOmV2ZW50LXR5cGUHAAVjaHVuaw06 - Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 - dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpv - eExDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWFXNXdkWFJmYW5OdmJsOWtaV3gwWVNJc0luQmhjblJw - WVd4ZmFuTnZiaUk2SWlCY0lsTmxZWFIwYkdWY0luMGlmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1u - b3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWSJ9cveECgAAALYAAABLG6u6xQs6 - ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNz - YWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5 - emRHOXdJaXdpYVc1a1pYZ2lPakY5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0In0U0UJnAAAB - ZwAAAEtkYj+JCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u - L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1 - ZEY5aWJHOWphMTl6ZEdGeWRDSXNJbWx1WkdWNElqb3lMQ0pqYjI1MFpXNTBYMkpzYjJOcklqcDdJ - blI1Y0dVaU9pSjBiMjlzWDNWelpTSXNJbWxrSWpvaWRHOXZiSFZmWW1SeWExOHdNVkp4Y0hGNFMx - STVOa1ptVmxoRmIyZDFSRlZ6ZUVzaUxDSnVZVzFsSWpvaVoyVjBYMk4xY25KbGJuUmZkMlZoZEdo - bGNpSXNJbWx1Y0hWMElqcDdmWDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJD - REVGR0hJSksifSwusWQAAAENAAAAS7fgUGULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10 - eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlK - MGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpveUxDSmtaV3gw - WVNJNmV5SjBlWEJsSWpvaWFXNXdkWFJmYW5OdmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFuTnZi - aUk2SWlKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERSJ9o+JMHQAA - ATEAAABL0zEF4gs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv - bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdW - dWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam95TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9p - YVc1d2RYUmZhbk52Ymw5a1pXeDBZU0lzSW5CaGNuUnBZV3hmYW5OdmJpSTZJbnRjSW14dlkyRjBh - Vzl1WENJNkluMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xN - Tk9QUVJTVFVWV1hZIn0IhzoSAAABJgAAAEsB8U5wCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl - bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6 - ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3lMQ0pr - Wld4MFlTSTZleUowZVhCbElqb2lhVzV3ZFhSZmFuTnZibDlrWld4MFlTSXNJbkJoY25ScFlXeGZh - bk52YmlJNklpQmNJaUo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RF - RkdISUpLTE1OT1BRUlNUVVZXWFlaIn3YiXbxAAABAgAAAEs1sMe0CzpldmVudC10eXBlBwAFY2h1 - bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50 - eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdW - NElqb3lMQ0prWld4MFlTSTZleUowZVhCbElqb2lhVzV3ZFhSZmFuTnZibDlrWld4MFlTSXNJbkJo - Y25ScFlXeGZhbk52YmlJNklsTmhiaUJHSW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wIn3s8BjJ - AAABKgAAAEvEAaNxCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 - aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVk - R1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3lMQ0prWld4MFlTSTZleUowZVhCbElq - b2lhVzV3ZFhSZmFuTnZibDlrWld4MFlTSXNJbkJoY25ScFlXeGZhbk52YmlJNkluSmhJbjE5Iiwi - cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVow - MTIzNDU2NyJ9t/dh+wAAAQEAAABLchC9ZAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5 - cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUow - ZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam95TENKa1pXeDBZ - U0k2ZXlKMGVYQmxJam9pYVc1d2RYUmZhbk52Ymw5a1pXeDBZU0lzSW5CaGNuUnBZV3hmYW5OdmJp - STZJbTVqYVhOakluMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vIn0iAVpXAAABJAAAAEt7MR0QCzpl - dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh - Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlr - Wld4MFlTSXNJbWx1WkdWNElqb3lMQ0prWld4MFlTSTZleUowZVhCbElqb2lhVzV3ZFhSZmFuTnZi - bDlrWld4MFlTSXNJbkJoY25ScFlXeGZhbk52YmlJNkltOWNJbjBpZlgwPSIsInAiOiJhYmNkZWZn - aGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWCJ9PDiR6QAAAMkAAABL - YCnN2ws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u - DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWli - RzlqYTE5emRHOXdJaXdpYVc1a1pYZ2lPako5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3 - eHl6QUJDREVGR0hJSktMTSJ95d+LbAAAASUAAABLRlE0oAs6ZXZlbnQtdHlwZQcABWNodW5rDTpj - b250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0 - ZXMiOiJleUowZVhCbElqb2liV1Z6YzJGblpWOWtaV3gwWVNJc0ltUmxiSFJoSWpwN0luTjBiM0Jm - Y21WaGMyOXVJam9pZEc5dmJGOTFjMlVpTENKemRHOXdYM05sY1hWbGJtTmxJanB1ZFd4c2ZTd2lk - WE5oWjJVaU9uc2liM1YwY0hWMFgzUnZhMlZ1Y3lJNk1UTTFmWDA9IiwicCI6ImFiY2RlZmdoaWpr - bG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJIn0Q5e/OAAABcQAAAEuLwl2rCzpldmVudC10eXBlBwAF - Y2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2 - ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpjMkZuWlY5emRHOXdJaXdpWVcxaGVtOXVMV0ps - WkhKdlkyc3RhVzUyYjJOaGRHbHZiazFsZEhKcFkzTWlPbnNpYVc1d2RYUlViMnRsYmtOdmRXNTBJ - am96T1RJc0ltOTFkSEIxZEZSdmEyVnVRMjkxYm5RaU9qazBMQ0pwYm5adlkyRjBhVzl1VEdGMFpX - NWplU0k2TXpjMk55d2labWx5YzNSQ2VYUmxUR0YwWlc1amVTSTZNVEUwTkgxOSIsInAiOiJhYmNk - ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyIn34qdlr - headers: - Connection: - - keep-alive - Content-Type: - - application/vnd.amazon.eventstream - Date: - - Wed, 26 Feb 2025 16:26:52 GMT - Set-Cookie: test_set_cookie - Transfer-Encoding: - - chunked - X-Amzn-Bedrock-Content-Type: - - application/json - x-amzn-RequestId: - - 40f5bf06-a873-484c-80ba-b9d614f44e5a - status: - code: 200 - message: OK -- request: - body: |- - { - "messages": [ - { - "role": "user", - "content": [ - { - "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco", - "type": "text" - } - ] - }, - { - "role": "assistant", - "content": [ - { - "type": "text", - "text": "Certainly! I'll check the current weather for both Seattle and San Francisco using the available tool. I'll make two separate calls to the get_current_weather function, one for each city." - }, - { - "type": "tool_use", - "id": "toolu_bdrk_017KC4HA4doD3Qdw8W5XBJ25", - "name": "get_current_weather", - "input": { - "location": "Seattle" - } - }, - { - "type": "tool_use", - "id": "toolu_bdrk_01RqpqxKR96FfVXEoguDUsxK", - "name": "get_current_weather", - "input": { - "location": "San Francisco" - } - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "tool_result", - "tool_use_id": "toolu_bdrk_017KC4HA4doD3Qdw8W5XBJ25", - "content": "50 degrees and raining" - }, - { - "type": "tool_result", - "tool_use_id": "toolu_bdrk_01RqpqxKR96FfVXEoguDUsxK", - "content": "70 degrees and sunny" - } - ] - } - ], - "anthropic_version": "bedrock-2023-05-31", - "tools": [ - { - "name": "get_current_weather", - "description": "Get the current weather in a given location.", - "input_schema": { - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "The name of the city" - } - }, - "required": [ - "location" - ] - } - } - ], - "max_tokens": 1000 - } - headers: - Content-Length: - - '1299' - User-Agent: - - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 - lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 - X-Amz-Date: - - 20250226T162655Z - X-Amz-Security-Token: - - test_aws_security_token - X-Amzn-Trace-Id: - - Root=1-b99116bf-027ad914d67e36aa0f68b847;Parent=8bdc2a89cc7b923e;Sampled=1 - amz-sdk-invocation-id: - - 3dbe9e81-fcf4-47b2-ae14-08094b20ec68 - amz-sdk-request: - - attempt=1 - authorization: - - Bearer test_aws_authorization - method: POST - uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-sonnet-20240620-v1%3A0/invoke-with-response-stream - response: - body: - string: !!binary | - AAABzgAAAEsZVcJuCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 - aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj - MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVRjeWVH - Z3hielF5ZGtaR1VVMTJPV2huVkZGYWVXRWlMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV - aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHpMVFV0YzI5dWJtVjBMVEl3 - TWpRd05qSXdJaXdpWTI5dWRHVnVkQ0k2VzEwc0luTjBiM0JmY21WaGMyOXVJanB1ZFd4c0xDSnpk - Rzl3WDNObGNYVmxibU5sSWpwdWRXeHNMQ0oxYzJGblpTSTZleUpwYm5CMWRGOTBiMnRsYm5NaU9q - WXdOQ3dpYjNWMGNIVjBYM1J2YTJWdWN5STZNbjE5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w - In3eAWLTAAAA9wAAAEt+OMs8CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw - cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpv - aVkyOXVkR1Z1ZEY5aWJHOWphMTl6ZEdGeWRDSXNJbWx1WkdWNElqb3dMQ0pqYjI1MFpXNTBYMkpz - YjJOcklqcDdJblI1Y0dVaU9pSjBaWGgwSWl3aWRHVjRkQ0k2SWlKOWZRPT0iLCJwIjoiYWJjZGVm - Z2hpamtsbW5vcHFyc3R1dnd4eSJ9dAbelAAAAR4AAABLkKC9Nws6ZXZlbnQtdHlwZQcABWNodW5r - DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi - Ynl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJ - am93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lKY2Js - eHVRbUZ6WlNKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElK - S0xNTk9QUVJTVFVWV1hZWjAxMjMifWw4RscAAAEQAAAASy+QA1YLOmV2ZW50LXR5cGUHAAVjaHVu - aw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7 - ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0 - SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSmtJ - Rzl1SUhSb1pTQnlaWE4xYkhSeklHWnliMjBnZEdobElIUnZiMndnWTJGc2JITXNJbjE5IiwicCI6 - ImFiY2RlZiJ97LWTEwAAATgAAABL3iFnkws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5 - cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUow - ZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZ - U0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ2FHVnlaU2R6SUhSb1pT - QmpkWEp5Wlc1MElIZGxZWFJvWlhJZ1ptOXlJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0 - dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMSJ9r2OqxAAAATQAAABLG9GKkgs6ZXZl - bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl - LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pX - eDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJ - c0luUmxlSFFpT2lJZ1ltOTBhQ0JqYVhScFpYTTZYRzVjYmpFdUlGTmxZWFIwYkdVNklGUm9aU0o5 - ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNU - In0xAZLVAAABKAAAAEu+wfARCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw - cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpv - aVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUow - ZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnWTNWeWNtVnVkQ0IzWldGMGFHVnlJ - R2x1SUZObFlYUjBiR1VnYVhNZ05UQWdJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3 - eHl6QUJDREVGR0gifY3Qt0kAAAEAAAAAS09wlNQLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu - dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi - ZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmta - V3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSmtaV2R5WldWeklH - RnVaQ0J5WVdsdWFXNW5MaUo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqIn3cZ9VMAAABKQAAAEuDodmh - CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l - c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWph - MTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pX - eDBZU0lzSW5SbGVIUWlPaUpjYmx4dU1pNGdVMkZ1SUVaeVlXNWphWE5qYnpvZ1ZHaGxJR04xY25K - bGJuUWdkMlZoZEdobGNpSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3In20laRP - AAABKQAAAEuDodmhCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 - aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVk - R1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElq - b2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnYVc0Z1UyRnVJRVp5WVc1amFYTmpieUJwY3lB - M01DQmtaV2R5WldWekluMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZH - SElKS0xNIn1f+ZnIAAABFgAAAEug0Pb2CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw - ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBl - WEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlT - STZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnWVc1a0lITjFibTU1TGx4 - dVhHNUJjeUI1YjNVZ1kyRnVJSE5sWlN3aWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3Qi - fXppv6oAAAFFAAAAS99jQ+0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw - bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9p - WTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBl - WEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdkR2hsY21VbmN5QnhkV2wwWlNCaElH - UnBabVpsY21WdVkyVWdhVzRnZDJWaGRHaGxjaUo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w - cXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyIn2ZUOlKAAABEQAAAEsS8Crm - CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l - c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWph - MTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pX - eDBZU0lzSW5SbGVIUWlPaUlnWW1WMGQyVmxiaUIwYUdVZ2RIZHZJR05wZEdsbGN5QjBiMlJoZVNK - OWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vIn0Ct3/8AAABIAAAAEuOsbvQCzpldmVudC10eXBl - BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA - BWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJ - bWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVI - UWlPaUl1SUZObFlYUjBiR1VnYVhNZ1pYaHdaWEpwWlc1amFXNW5JbjE5IiwicCI6ImFiY2RlZmdo - aWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMIn3X8wTGAAABNwAAAEtccfBCCzpldmVudC10 - eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlw - ZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlT - SXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5S - bGVIUWlPaUlnWTI5dmJHVnlJSFJsYlhCbGNtRjBkWEpsY3lCM2FYUm9JSEpoYVc0c0lIZG9hV05v - SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlMi - fQ7WhzkAAAEXAAAAS52w30YLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw - bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9p - WTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBl - WEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdhWE1nWm1GcGNteDVJSFI1Y0dsallX - d2dabTl5SUhSb1pTSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHkifSWlDGgA - AAD8AAAASwno+i0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp - b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRH - VnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpv - aWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdZMmwwZVM0Z1QyNGdkR2hsSUc5MGFHVnlJR2ho - Ym1Rc0luMTkiLCJwIjoiYWIifQbBP7wAAAEiAAAAS/Rx6LALOmV2ZW50LXR5cGUHAAVjaHVuaw06 - Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 - dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpv - d0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdVMkZ1 - SUVaeVlXNWphWE5qYnlCcGN5QmxibXB2ZVdsdVp5QjNZWElpZlgwPSIsInAiOiJhYmNkZWZnaGlq - a2xtbm9wcXJzdHV2d3h5ekFCQ0RFRiJ9wuk+owAAASQAAABLezEdEAs6ZXZlbnQtdHlwZQcABWNo - dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu - dHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpH - VjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lK - dFpYSWdkR1Z0Y0dWeVlYUjFjbVZ6SUhkcGRHZ2djM1Z1Ym5rZ2MydHBaWE1zSUcxaGEybHVaeUo5 - ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXIifYyH1W0AAAEkAAAAS3sxHRALOmV2ZW50LXR5 - cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBl - BwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJ - c0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJs - ZUhRaU9pSWdhWFFnWVNCd2JHVmhjMkZ1ZENCa1lYa2dhVzRpZlgwPSIsInAiOiJhYmNkZWZnaGlq - a2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUIn14axXGAAABHgAAAEuQoL03Czpl - dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh - Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlr - Wld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZ - U0lzSW5SbGVIUWlPaUlnZEdobElFSmhlU0JCY21WaExseHVYRzVKY3lKOWZRPT0iLCJwIjoiYWJj - ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTiJ9QB11+QAAATMAAABLqfFWggs6 - ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNz - YWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5 - a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gw - WVNJc0luUmxlSFFpT2lJZ2RHaGxjbVVnWVc1NWRHaHBibWNnWld4elpTQjViM1VuWkNCc2FXdGxJ - SFJ2SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BR - UlMifQ/OPn4AAAEZAAAASyKAYScLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ - YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJ - am9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5 - SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdhMjV2ZHlCaFltOTFkQ0IwYUdV - Z2QyVmhkR2hsY2lCcGJpQjBhR1Z6WlNKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFycyJ9 - fiDLOwAAATEAAABL0zEF4gs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs - aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZ - Mjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVY - QmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ1kybDBhV1Z6SUc5eUlHRnVlU0J2ZEdo - bGNpQnNiMk5oZEdsdmJuTWlmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJD - REVGR0hJSktMTU5PUFFSU1RVIn30EdU8AAABDwAAAEvNIAMFCzpldmVudC10eXBlBwAFY2h1bmsN - OmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJi - eXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElq - b3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUkvSW4x - OSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX - WFlaMCJ9t5HFRwAAAMUAAABLpdkg2gs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH - ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhC - bElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5emRHOXdJaXdpYVc1a1pYZ2lPakI5IiwicCI6ImFiY2Rl - ZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJIn2kbq84AAABDwAAAEvNIAMFCzpldmVudC10 - eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlw - ZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpjMkZuWlY5a1pXeDBZU0lzSW1SbGJI - UmhJanA3SW5OMGIzQmZjbVZoYzI5dUlqb2laVzVrWDNSMWNtNGlMQ0p6ZEc5d1gzTmxjWFZsYm1O - bElqcHVkV3hzZlN3aWRYTmhaMlVpT25zaWIzVjBjSFYwWDNSdmEyVnVjeUk2TVRRMWZYMD0iLCJw - IjoiYWJjZGVmZ2hpamtsbSJ9vABIagAAAVAAAABLd2NbHws6ZXZlbnQtdHlwZQcABWNodW5rDTpj - b250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0 - ZXMiOiJleUowZVhCbElqb2liV1Z6YzJGblpWOXpkRzl3SWl3aVlXMWhlbTl1TFdKbFpISnZZMnN0 - YVc1MmIyTmhkR2x2YmsxbGRISnBZM01pT25zaWFXNXdkWFJVYjJ0bGJrTnZkVzUwSWpvMk1EUXNJ - bTkxZEhCMWRGUnZhMlZ1UTI5MWJuUWlPakUwTlN3aWFXNTJiMk5oZEdsdmJreGhkR1Z1WTNraU9q - UXhOamtzSW1acGNuTjBRbmwwWlV4aGRHVnVZM2tpT2pjM09YMTkiLCJwIjoiYWJjZGVmZ2hpamts - bW5vcHFyc3R1diJ90qwbQw== - headers: - Connection: - - keep-alive - Content-Type: - - application/vnd.amazon.eventstream - Date: - - Wed, 26 Feb 2025 16:26:56 GMT - Set-Cookie: test_set_cookie - Transfer-Encoding: - - chunked - X-Amzn-Bedrock-Content-Type: - - application/json - x-amzn-RequestId: - - 608633c6-9f6d-4c09-b7d3-6b06e3ee22da - status: - code: 200 - message: OK -version: 1 diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_no_content_tool_call[amazon.nova].yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_no_content_tool_call[amazon.nova].yaml new file mode 100644 index 0000000000..c3341b7998 --- /dev/null +++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_no_content_tool_call[amazon.nova].yaml @@ -0,0 +1,648 @@ +interactions: +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please give one tool call for Seattle and one for San Francisco" + } + ] + } + ], + "inferenceConfig": { + "max_new_tokens": 1000 + }, + "schemaVersion": "messages-v1", + "toolConfig": { + "tools": [ + { + "toolSpec": { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "inputSchema": { + "json": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + } + } + ] + } + } + headers: + Content-Length: + - '550' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250328T095545Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-cc955679-a8c45b468f9db1139b274c15;Parent=0d73ce35f14a3d3d;Sampled=1 + amz-sdk-invocation-id: + - abb47d5d-46b6-4ffe-a595-392788da86be + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.nova-micro-v1%3A0/invoke-with-response-stream + response: + body: + string: !!binary | + AAAAvQAAAEtse4vUCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnRaWE56WVdkbFUzUmhj + blFpT25zaWNtOXNaU0k2SW1GemMybHpkR0Z1ZENKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v + cHFyc3R1dnd4eXpBIn1NL1/3AAABAwAAAEsI0O4ECzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl + bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6 + ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lQSFJv + YVc1cmFXNW5JbjBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvd2ZYMD0iLCJwIjoiYWJjZGVm + Z2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWVyJ9x+xhrAAAAMQAAABL + mLkJags6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJ + anA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvd2ZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v + cHFyc3R1dnd4eXoifaHxL7kAAAD+AAAAS3MoqU0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu + dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi + ZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaVBpQlVh + R1VpZlN3aVkyOXVkR1Z1ZEVKc2IyTnJTVzVrWlhnaU9qRjlmUT09IiwicCI6ImFiY2RlZmdoaWpr + bG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVViJ9j8HqtQAAAMMAAABLKpnVegs6 + ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNz + YWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1O + dmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveGZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1 + dnd4eSJ9jih54QAAAQEAAABLchC9ZAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH + ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1 + MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUZWelpYSWlmU3dp + WTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2pKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFy + c3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZIn09Iow2AAAAzgAAAEvSCRHLCzpldmVu + dC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2Ut + dHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5S + bGJuUkNiRzlqYTBsdVpHVjRJam95ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5 + ekFCQ0RFRkdISUoifSnJvDQAAADNAAAAS5WpaxsLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu + dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi + ZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlHaGhj + eUo5TENKamIyNTBaVzUwUW14dlkydEpibVJsZUNJNk0zMTkiLCJwIjoiYWJjIn3kKUJpAAAAswAA + AEvTSzW1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pz + b24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5 + d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam96ZlgwPSIsInAiOiJhYmNkZWZnaGkifTcj + yJQAAAD5AAAAS8EIdV0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGlj + YXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14 + dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlISmxjWFZsYzNSbFpDQjBhR1Vp + ZlN3aVkyOXVkR1Z1ZEVKc2IyTnJTVzVrWlhnaU9qUjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1u + b3BxcnN0dXZ3eHl6QUJDREUifZE1wvoAAADMAAAAS6jJQqsLOmV2ZW50LXR5cGUHAAVjaHVuaw06 + Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 + dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdW + NElqbzBmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0gifcuY1BkA + AAENAAAAS7fgUGULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp + b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlky + dEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlHTjFjbkpsYm5RZ2QyVmhkR2hsY2lC + cGJpSjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2TlgxOSIsInAiOiJhYmNkZWZnaGlqa2xt + bm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVSJ9NBetQgAAANwAAABLyCnVKQs6ZXZl + bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl + LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJu + UmxiblJDYkc5amEwbHVaR1Y0SWpvMWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4 + eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1gifVbHrAMAAAEHAAAAS/1QSMQLOmV2ZW50LXR5cGUH + AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF + ZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5 + SjBaWGgwSWpvaUlIUjNieUo5TENKamIyNTBaVzUwUW14dlkydEpibVJsZUNJNk5uMTkiLCJwIjoi + YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0 + NTY3OCJ93reH+gAAAMMAAABLKpnVegs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH + ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1 + MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvMmZYMD0iLCJw + IjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eSJ9xDuFYAAAANcAAABLv/nkOAs6ZXZlbnQtdHlw + ZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUH + AAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2 + ZXlKMFpYaDBJam9pSUdScFptWmxjbVZ1ZENKOUxDSmpiMjUwWlc1MFFteHZZMnRKYm1SbGVDSTZO + MzE5IiwicCI6ImFiY2RlIn1klrs/AAAAyQAAAEtgKc3bCzpldmVudC10eXBlBwAFY2h1bmsNOmNv + bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl + cyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJ + am8zZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFIn1JzAZsAAABFwAA + AEudsN9GCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pz + b24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4 + MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJR3h2WTJGMGFXOXVjem9nVTJWaGRIUnNaU0Jo + Ym1RZ1UyRnVJRVp5WVc1amFYTmpieUo5TENKamIyNTBaVzUwUW14dlkydEpibVJsZUNJNk9IMTki + LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHIn0NoadzAAAAuAAAAEukmwSk + CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l + c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJ + bU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam80ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbiJ9y6M3 + rAAAANYAAABLgpnNiAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNh + dGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2 + WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pTGlCSklHTmhiaUo5TENKamIyNTBa + VzUwUW14dlkydEpibVJsZUNJNk9YMTkiLCJwIjoiYWJjZGVmZ2gifRG9uKsAAAC9AAAAS2x7i9QL + OmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz + c2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0lt + TnZiblJsYm5SQ2JHOWphMGx1WkdWNElqbzVmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnMi + fbpDvR0AAAEFAAAAS4eQG6QLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw + bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUw + UW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIVnpaU0IwYUdVZ1hDSWlm + U3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2pFd2ZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v + cHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFUifdX1XJwAAADUAAAAS/hZnugLOmV2ZW50 + LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10 + eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJs + Ym5SQ2JHOWphMGx1WkdWNElqb3hNSDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6 + QUJDREVGR0hJSktMTU5PUCJ93t/4vQAAAOsAAABL2yixvws6ZXZlbnQtdHlwZQcABWNodW5rDTpj + b250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0 + ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9p + WjJWMFgyTjFjbkpsYm5SZmQyVmhkR2hsY2x3aUluMHNJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJ + am94TVgxOSIsInAiOiJhYmNkZWZnaGkifRbLt30AAADeAAAAS7LphkkLOmV2ZW50LXR5cGUHAAVj + aHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZl + bnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWph + MGx1WkdWNElqb3hNWDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJ + SktMTU5PUFFSU1RVVldYWVoifaKlpSEAAADhAAAAS5GYqR4LOmV2ZW50LXR5cGUHAAVjaHVuaw06 + Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 + dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpv + aUlIUnZiMndnZEc4Z2IySjBZV2x1SW4wc0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hNbjE5 + IiwicCI6ImFiY2RlZmcifdw8CY8AAAC/AAAASxa72LQLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u + dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz + IjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElq + b3hNbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dSJ9pPMw3gAAAQgAAABLfwDfFQs6ZXZl + bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl + LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pX + eDBZU0k2ZXlKMFpYaDBJam9pSUhSb2FYTWlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2pF + emZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJT + VFVWV1hZWjAxMjM0NSJ9BtleugAAAMcAAABL3xlzugs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250 + ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMi + OiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpv + eE0zMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkMiffkkJbEAAAD5AAAAS8EI + dV0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 + bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJ + NmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlHbHVabTl5YldGMGFXOXVMaUo5TENKamIyNTBaVzUw + UW14dlkydEpibVJsZUNJNk1UUjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6 + QUJDREUifdkNZbEAAADUAAAAS/hZnugLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl + BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIy + NTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hOSDE5Iiwi + cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUCJ9uNstjQAAAOIA + AABL1jjTzgs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9q + c29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpX + eDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUVrZ2QybHNiQ0o5TENKamIyNTBaVzUwUW14 + dlkydEpibVJsZUNJNk1UVjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3Aife3+hwAAAADVAAAA + S8U5t1gLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNv + bg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3 + SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hOWDE5IiwicCI6ImFiY2RlZmdoaWprbG1u + b3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFEifRxkAS0AAADiAAAAS9Y4084LOmV2ZW50LXR5 + cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBl + BwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJ + NmV5SjBaWGgwSWpvaUlHMWhhMlVpZlN3aVkyOXVkR1Z1ZEVKc2IyTnJTVzVrWlhnaU9qRTJmWDA9 + IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0In35qHxbAAAAywAAAEsa6Z67CzpldmVudC10eXBl + BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA + BWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNi + RzlqYTBsdVpHVjRJam94Tm4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RF + RkcifWL2nHYAAADxAAAAS/F4PpwLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ + YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBa + VzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIUjNieUo5TENKamIy + NTBaVzUwUW14dlkydEpibVJsZUNJNk1UZDlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0 + dXZ3eHl6QUJDREVGR0hJIn20qMuFAAAA4wAAAEvrWPp+CzpldmVudC10eXBlBwAFY2h1bmsNOmNv + bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl + cyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJ + am94TjMxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BR + UlNUVVZXWFlaMDEyMzQifWvnOlUAAADqAAAAS+ZImA8LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u + dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz + IjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlI + TmxjR0Z5WVhSbElIUnZiMndnWTJGc2JITXNJbjBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpv + eE9IMTkiLCJwIjoiYWJjZGVmZ2gifTPRTysAAADOAAAAS9IJEcsLOmV2ZW50LXR5cGUHAAVjaHVu + aw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7 + ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1 + WkdWNElqb3hPSDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSiJ9 + SZv7WQAAAOIAAABL1jjTzgs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs + aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBR + bXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUc5dVpTQm1iM0lnWldGamFD + SjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2TVRsOWZRPT0iLCJwIjoiYWJjZGVmZ2gifeGA + +iYAAADaAAAAS0dpIIkLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGlj + YXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14 + dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hPWDE5IiwicCI6ImFiY2Rl + ZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVViJ9Eq1oOwAAAN0AAABL + 9Un8mQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZ + U0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUd4dlkyRjBhVzl1SW4wc0ltTnZiblJsYm5SQ2JH + OWphMGx1WkdWNElqb3lNSDE5IiwicCI6ImFiY2RlZmdoaWprIn2VHcExAAAA3gAAAEuy6YZJCzpl + dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh + Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52 + Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam95TUgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 + d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIn11I/wjAAAA0gAAAEt3GWtICzpldmVudC10 + eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlw + ZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlT + STZleUowWlhoMElqb2lMand2SW4wc0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3lNWDE5Iiwi + cCI6ImFiY2RlZmdoIn2tgvkOAAAAyAAAAEtdSeRrCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl + bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6 + ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam95 + TVgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0QifT5w5lAAAAEPAAAAS80g + AwULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 + bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJ + NmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaWRHaHBibXRwYm1jaWZTd2lZMjl1ZEdWdWRFSnNiMk5y + U1c1a1pYZ2lPakl5ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdI + SUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4In2K5UJaAAAAsAAAAEuU609lCzpldmVudC10eXBl + BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA + BWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNi + RzlqYTBsdVpHVjRJam95TW4xOSIsInAiOiJhYmNkZWYifSQOfsUAAAECAAAASzWwx7QLOmV2ZW50 + LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10 + eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gw + WVNJNmV5SjBaWGgwSWpvaVBseHVJbjBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveU0zMTki + LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ + WjAxMjMifVD14TYAAAC7AAAAS+M7fnQLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl + BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIy + NTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3lNMzE5Iiwi + cCI6ImFiY2RlZmdoaWprbG1ub3BxIn1anJC8AAABPwAAAEtsAbuDCzpldmVudC10eXBlBwAFY2h1 + bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50 + eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEdGeWRDSTZleUp6ZEdGeWRDSTZleUowYjI5 + c1ZYTmxJanA3SW5SdmIyeFZjMlZKWkNJNkltUTRPVGxrWVRnNUxUVmhOamN0TkdGbU1pMWhZVFUw + TFRVMFpqWmtNbUZoWkdRME1DSXNJbTVoYldVaU9pSm5aWFJmWTNWeWNtVnVkRjkzWldGMGFHVnlJ + bjE5TENKamIyNTBaVzUwUW14dlkydEpibVJsZUNJNk1qUjlmUT09IiwicCI6ImFiY2RlZmdoaSJ9 + 5j3KswAAAP0AAABLNIjTnQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs + aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBR + bXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMGIyOXNWWE5sSWpwN0ltbHVjSFYwSWpvaWUx + d2liRzlqWVhScGIyNWNJanBjSWxObFlYUjBiR1ZjSW4waWZYMHNJbU52Ym5SbGJuUkNiRzlqYTBs + dVpHVjRJam95TkgxOSIsInAiOiJhYmMifawii5YAAADQAAAASw3ZOCgLOmV2ZW50LXR5cGUHAAVj + aHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZl + bnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWph + MGx1WkdWNElqb3lOSDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJ + SktMIn2luZBuAAABSgAAAEtdM9Q8CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcA + EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUw + Wlc1MFFteHZZMnRUZEdGeWRDSTZleUp6ZEdGeWRDSTZleUowYjI5c1ZYTmxJanA3SW5SdmIyeFZj + MlZKWkNJNkltSmxOMkk1WldKaExUSTVNVFF0TkdFd1lTMWlZVEZrTFdVNE5qTmhPREk0TVdNeE9D + SXNJbTVoYldVaU9pSm5aWFJmWTNWeWNtVnVkRjkzWldGMGFHVnlJbjE5TENKamIyNTBaVzUwUW14 + dlkydEpibVJsZUNJNk1qWjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0In2zxOrsAAAB + EQAAAEsS8CrmCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u + L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRF + Wld4MFlTSTZleUprWld4MFlTSTZleUowYjI5c1ZYTmxJanA3SW1sdWNIVjBJam9pZTF3aWJHOWpZ + WFJwYjI1Y0lqcGNJbE5oYmlCR2NtRnVZMmx6WTI5Y0luMGlmWDBzSW1OdmJuUmxiblJDYkc5amEw + bHVaR1Y0SWpveU5uMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vIn0kJSA6AAAAwwAAAEsqmdV6Czpl + dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh + Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52 + Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam95Tm4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 + d3h5In3IuHR1AAAA0AAAAEsN2TgoCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcA + EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnRaWE56 + WVdkbFUzUnZjQ0k2ZXlKemRHOXdVbVZoYzI5dUlqb2lkRzl2YkY5MWMyVWlmWDA9IiwicCI6ImFi + Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUCJ9p7lBxgAAAlUAAABLORem + wQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTpt + ZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUp0WlhSaFpHRjBZU0k2ZXlKMWMyRm5aU0k2 + ZXlKcGJuQjFkRlJ2YTJWdWN5STZOREkzTENKdmRYUndkWFJVYjJ0bGJuTWlPakUyTUN3aVkyRmph + R1ZTWldGa1NXNXdkWFJVYjJ0bGJrTnZkVzUwSWpvd0xDSmpZV05vWlZkeWFYUmxTVzV3ZFhSVWIy + dGxia052ZFc1MElqb3dmU3dpYldWMGNtbGpjeUk2ZTMwc0luUnlZV05sSWpwN2ZYMHNJbUZ0WVhw + dmJpMWlaV1J5YjJOckxXbHVkbTlqWVhScGIyNU5aWFJ5YVdOeklqcDdJbWx1Y0hWMFZHOXJaVzVE + YjNWdWRDSTZOREkzTENKdmRYUndkWFJVYjJ0bGJrTnZkVzUwSWpveE5qQXNJbWx1ZG05allYUnBi + MjVNWVhSbGJtTjVJam8wTkRJc0ltWnBjbk4wUW5sMFpVeGhkR1Z1WTNraU9qVTRMQ0pqWVdOb1pW + SmxZV1JKYm5CMWRGUnZhMlZ1UTI5MWJuUWlPakFzSW1OaFkyaGxWM0pwZEdWSmJuQjFkRlJ2YTJW + dVEyOTFiblFpT2pCOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZH + SElKS0xNTk9QUSJ9DZpD9w== + headers: + Connection: + - keep-alive + Content-Type: + - application/vnd.amazon.eventstream + Date: + - Fri, 28 Mar 2025 09:55:46 GMT + Set-Cookie: test_set_cookie + Transfer-Encoding: + - chunked + X-Amzn-Bedrock-Content-Type: + - application/json + x-amzn-RequestId: + - 9bf238d7-0bf5-4875-8724-e6c2ff941ba0 + status: + code: 200 + message: OK +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please give one tool call for Seattle and one for San Francisco" + } + ] + }, + { + "role": "assistant", + "content": [ + { + "text": " The User has requested the current weather in two different locations: Seattle and San Francisco. I can use the \"get_current_weather\" tool to obtain this information. I will make two separate tool calls, one for each location.\n" + }, + { + "toolUse": { + "toolUseId": "d899da89-5a67-4af2-aa54-54f6d2aadd40", + "name": "get_current_weather", + "input": { + "location": "Seattle" + } + } + }, + { + "toolUse": { + "toolUseId": "be7b9eba-2914-4a0a-ba1d-e863a8281c18", + "name": "get_current_weather", + "input": { + "location": "San Francisco" + } + } + } + ] + }, + { + "role": "user", + "content": [ + { + "toolResult": { + "toolUseId": "d899da89-5a67-4af2-aa54-54f6d2aadd40", + "content": [ + { + "json": { + "weather": "50 degrees and raining" + } + } + ] + } + }, + { + "toolResult": { + "toolUseId": "be7b9eba-2914-4a0a-ba1d-e863a8281c18", + "content": [ + { + "json": { + "weather": "70 degrees and sunny" + } + } + ] + } + } + ] + } + ], + "inferenceConfig": { + "max_new_tokens": 1000 + }, + "schemaVersion": "messages-v1", + "toolConfig": { + "tools": [ + { + "toolSpec": { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "inputSchema": { + "json": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + } + } + ] + } + } + headers: + Content-Length: + - '1419' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250328T095546Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-149e307b-cdc3a5488e73393d9aaca023;Parent=797734885975d04a;Sampled=1 + amz-sdk-invocation-id: + - 74c51134-6231-4283-9969-3b9d30af7934 + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.nova-micro-v1%3A0/invoke-with-response-stream + response: + body: + string: !!binary | + AAAAqQAAAEv5G7qWCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnRaWE56WVdkbFUzUmhj + blFpT25zaWNtOXNaU0k2SW1GemMybHpkR0Z1ZENKOWZRPT0iLCJwIjoiYWJjZGVmZyJ92nUjYgAA + AQ0AAABLt+BQZQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv + bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0 + RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pUEhSb2FXNXJhVzVuSW4wc0ltTnZiblJs + Ym5SQ2JHOWphMGx1WkdWNElqb3dmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6 + QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2In3CYIM7AAAAugAAAEveW1fECzpldmVu + dC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2Ut + dHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5S + bGJuUkNiRzlqYTBsdVpHVjRJam93ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wIn29kWftAAAB + AAAAAEtPcJTUCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u + L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRF + Wld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lQaUJKSW4wc0ltTnZiblJsYm5SQ2JHOWph + MGx1WkdWNElqb3hmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJ + SktMTU5PUFFSU1RVVldYWVowMSJ9tRgXQwAAAOQAAABLWXgmbgs6ZXZlbnQtdHlwZQcABWNodW5r + DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi + Ynl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVa + R1Y0SWpveGZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xN + Tk9QUVJTVFVWV1hZWjAxMjM0NSJ9N5g5GAAAAP8AAABLTkiA/Qs6ZXZlbnQtdHlwZQcABWNodW5r + DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi + Ynl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJ + am9pSUdoaGRtVWdjbVZqWldsMlpXUWlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2pKOWZR + PT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKSyJ9b+UvSgAAANAA + AABLDdk4KAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9q + c29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRH + OXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveWZYMD0iLCJwIjoiYWJjZGVmZ2hpamts + bW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0wifT6gPnsAAADsAAAAS2kIba8LOmV2ZW50LXR5cGUH + AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF + ZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5 + SjBaWGgwSWpvaUlIUm9aU0IzWldGMGFHVnlJbjBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpv + emZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1diJ95BjjVgAAALsAAABL4zt+dAs6ZXZl + bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl + LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJu + UmxiblJDYkc5amEwbHVaR1Y0SWpvemZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHEifR/K8NgA + AAD2AAAAS0NY4owLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp + b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlky + dEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlHbHVabTl5YldGMGFXOXVJR1p2Y2lK + OUxDSmpiMjUwWlc1MFFteHZZMnRKYm1SbGVDSTZOSDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3Bx + cnN0dXZ3eHl6QUIifUXT110AAADZAAAASwDJWlkLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu + dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi + ZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqbzBm + WDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RV + In3W/9dIAAABAwAAAEsI0O4ECzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw + cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1 + MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJR0p2ZEdnZ1UyVmhkSFJz + WlNKOUxDSmpiMjUwWlc1MFFteHZZMnRKYm1SbGVDSTZOWDE5IiwicCI6ImFiY2RlZmdoaWprbG1u + b3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSUyJ9mukwAAAAALYAAABLG6u6xQs6ZXZlbnQt + dHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5 + cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxi + blJDYkc5amEwbHVaR1Y0SWpvMWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsIn0O1VkRAAAA/gAAAEtz + KKlNCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24N + Om1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlT + STZleUprWld4MFlTSTZleUowWlhoMElqb2lJR0Z1WkNCVFlXNGdSbkpoYm1OcGMyTnZMaUJPYjNj + aWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pYZ2lPalo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xt + bm9wcXJzdHV2d3gifSkeAZ0AAAC2AAAASxurusULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu + dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi + ZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqbzJm + WDA9IiwicCI6ImFiY2RlZmdoaWprbCJ9/IK06QAAAQMAAABLCNDuBAs6ZXZlbnQtdHlwZQcABWNo + dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu + dHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpY + aDBJam9pSUVrZ1kyRnVJSEJ5YjNacFpHVWlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2pk + OWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk8ifQRO + iGgAAADYAAAASz2pc+kLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGlj + YXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14 + dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqbzNmWDA9IiwicCI6ImFiY2Rl + ZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1QifdXDjmMAAAEJAAAAS0Jg + 9qULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 + bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJ + NmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIUm9aU0JWYzJWeUluMHNJbU52Ym5SbGJuUkNiRzlq + YTBsdVpHVjRJam80ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdI + SUpLTE1OT1BRUlNUVVZXWFlaMDEyIn0pkPlgAAAAuQAAAEuZ+y0UCzpldmVudC10eXBlBwAFY2h1 + bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50 + eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBs + dVpHVjRJam80ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm8ifeF7mJUAAAEaAAAAS2UgG/cLOmV2 + ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn + ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5Smta + V3gwWVNJNmV5SjBaWGgwSWpvaUlIZHBkR2dnZEdobElISmxjWFZsYzNSbFpDSjlMQ0pqYjI1MFpX + NTBRbXh2WTJ0SmJtUmxlQ0k2T1gxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFC + Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1NjcifS+7vKUAAADhAAAAS5GYqR4LOmV2ZW50 + LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10 + eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJs + Ym5SQ2JHOWphMGx1WkdWNElqbzVmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6 + QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIifYpLXlEAAAD9AAAASzSI050LOmV2ZW50LXR5 + cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBl + BwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJ + NmV5SjBaWGgwSWpvaUlHUmxkR0ZwYkhNaWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pYZ2lPakV3 + ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRIn2i + XtanAAAArAAAAEsx+zXmCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp + Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFt + eHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam94TUgxOSIsInAiOiJhYiJ9 + hwc2DAAAAMwAAABLqMlCqws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs + aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBR + bXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pTGp3dkluMHNJbU52Ym5SbGJu + UkNiRzlqYTBsdVpHVjRJam94TVgxOSIsInAiOiJhYiJ9c78fagAAAMIAAABLF/n8ygs6ZXZlbnQt + dHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5 + cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxi + blJDYkc5amEwbHVaR1Y0SWpveE1YMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4In07 + Db3dAAAA9wAAAEt+OMs8CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp + Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFt + eHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lkR2hwYm10cGJtY2lmU3dpWTI5 + dWRHVnVkRUpzYjJOclNXNWtaWGdpT2pFeWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1 + dnd4eXpBQkNERUZHSElKSyJ9N48JAgAAAM4AAABL0gkRyws6ZXZlbnQtdHlwZQcABWNodW5rDTpj + b250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0 + ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0 + SWpveE1uMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKIn3aB0ty + AAAA3wAAAEuPia/5CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZ + MnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lQbHh1WEc0aWZTd2lZMjl1ZEdWdWRF + SnNiMk5yU1c1a1pYZ2lPakV6ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcSJ9N7YWzgAAAOEA + AABLkZipHgs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9q + c29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRH + OXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveE0zMTkiLCJwIjoiYWJjZGVmZ2hpamts + bW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMiJ9jFAQKgAAAQIAAABL + NbDHtAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZ + U0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pVkdobEluMHNJbU52Ym5SbGJuUkNiRzlqYTBsdVpH + VjRJam94TkgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1O + T1BRUlNUVVZXWFlaMDEyMyJ95ZivugAAAN8AAABLj4mv+Qs6ZXZlbnQtdHlwZQcABWNodW5rDTpj + b250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0 + ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0 + SWpveE5IMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9Q + UVJTVFVWV1hZWjAifXA8o9wAAAEJAAAAS0Jg9qULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu + dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi + ZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlHTjFj + bkpsYm5RaWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pYZ2lPakUxZlgwPSIsInAiOiJhYmNkZWZn + aGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyIn06JltBAAAA + wwAAAEsqmdV6CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u + L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRU + ZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam94TlgxOSIsInAiOiJhYmNkZWZnaGlq + a2xtbm9wcXJzdHV2d3h5In2Ut+TbAAABIwAAAEvJEcEACzpldmVudC10eXBlBwAFY2h1bmsNOmNv + bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl + cyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJ + SGRsWVhSb1pYSWdhVzRnVTJWaGRIUnNaU0JwY3lBaWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pY + Z2lPakUyZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1O + T1BRUlNUVVZXWFlaMDEyMzQ1Njc4In05XxO1AAAA5QAAAEtkGA/eCzpldmVudC10eXBlBwAFY2h1 + bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50 + eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBs + dVpHVjRJam94Tm4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpL + TE1OT1BRUlNUVVZXWFlaMDEyMzQ1NiJ9qydgAQAAAOEAAABLkZipHgs6ZXZlbnQtdHlwZQcABWNo + dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu + dHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpY + aDBJam9pTlRBZ1pHVm5jbVZsY3lCaGJtUWdhWFFpZlN3aVkyOXVkR1Z1ZEVKc2IyTnJTVzVrWlhn + aU9qRTNmWDA9IiwicCI6ImFiYyJ9io3kmAAAAOEAAABLkZipHgs6ZXZlbnQtdHlwZQcABWNodW5r + DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi + Ynl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVa + R1Y0SWpveE4zMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xN + Tk9QUVJTVFVWV1hZWjAxMiJ9Ixa4TAAAAPAAAABLzBgXLAs6ZXZlbnQtdHlwZQcABWNodW5rDTpj + b250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0 + ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9p + SUdseklISmhhVzVwYm1jdUlFbHVJbjBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveE9IMTki + LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1diJ9wf+umAAAANcAAABLv/nkOAs6ZXZlbnQtdHlw + ZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUH + AAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJD + Ykc5amEwbHVaR1Y0SWpveE9IMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE + RUZHSElKS0xNTk9QUVJTIn1GPnmoAAABEgAAAEtVUFA2CzpldmVudC10eXBlBwAFY2h1bmsNOmNv + bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl + cyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJ + Rk5oYmlCR2NtRnVZMmx6WTI4c0lIUm9aU0o5TENKamIyNTBaVzUwUW14dlkydEpibVJsZUNJNk1U + bDlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFS + U1RVViJ9d30foAAAAL8AAABLFrvYtAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH + ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1 + MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveE9YMTkiLCJw + IjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1In3q9PIPAAABGAAAAEsf4EiXCzpldmVudC10eXBlBwAF + Y2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2 + ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUow + WlhoMElqb2lJSGRsWVhSb1pYSWdhWE1nTnpBZ1pHVm5jbVZsY3lKOUxDSmpiMjUwWlc1MFFteHZZ + MnRKYm1SbGVDSTZNakI5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RF + RkdISUpLTE1OT1BRUlNUVVZXWCJ9ttcxeQAAAMkAAABLYCnN2ws6ZXZlbnQtdHlwZQcABWNodW5r + DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi + Ynl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVa + R1Y0SWpveU1IMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERSJ9gsGuhAAA + AN4AAABLsumGSQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv + bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0 + RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUdGdVpDQnpkVzV1ZVM0aWZTd2lZMjl1 + ZEdWdWRFSnNiMk5yU1c1a1pYZ2lPakl4ZlgwPSIsInAiOiJhYmNkZWZnaCJ996MH6AAAALEAAABL + qYtm1Qs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJ + anA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveU1YMTkiLCJwIjoiYWJjZGVmZyJ95Pb+2QAA + AMQAAABLmLkJags6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv + bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUp0WlhOellXZGxVM1J2Y0NJ + NmV5SnpkRzl3VW1WaGMyOXVJam9pWlc1a1gzUjFjbTRpZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xt + bm9wcXJzdHV2d3h5ekFCQ0QifZbgu+UAAAJgAAAAS1DWkTcLOmV2ZW50LXR5cGUHAAVjaHVuaw06 + Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 + dGVzIjoiZXlKdFpYUmhaR0YwWVNJNmV5SjFjMkZuWlNJNmV5SnBibkIxZEZSdmEyVnVjeUk2TlRj + eUxDSnZkWFJ3ZFhSVWIydGxibk1pT2pVNExDSmpZV05vWlZKbFlXUkpibkIxZEZSdmEyVnVRMjkx + Ym5RaU9qQXNJbU5oWTJobFYzSnBkR1ZKYm5CMWRGUnZhMlZ1UTI5MWJuUWlPakI5TENKdFpYUnlh + V056SWpwN2ZTd2lkSEpoWTJVaU9udDlmU3dpWVcxaGVtOXVMV0psWkhKdlkyc3RhVzUyYjJOaGRH + bHZiazFsZEhKcFkzTWlPbnNpYVc1d2RYUlViMnRsYmtOdmRXNTBJam8xTnpJc0ltOTFkSEIxZEZS + dmEyVnVRMjkxYm5RaU9qVTRMQ0pwYm5adlkyRjBhVzl1VEdGMFpXNWplU0k2TXpnd0xDSm1hWEp6 + ZEVKNWRHVk1ZWFJsYm1ONUlqbzJOaXdpWTJGamFHVlNaV0ZrU1c1d2RYUlViMnRsYmtOdmRXNTBJ + am93TENKallXTm9aVmR5YVhSbFNXNXdkWFJVYjJ0bGJrTnZkVzUwSWpvd2ZYMD0iLCJwIjoiYWJj + ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NSJ9 + Dhd0RQ== + headers: + Connection: + - keep-alive + Content-Type: + - application/vnd.amazon.eventstream + Date: + - Fri, 28 Mar 2025 09:55:46 GMT + Set-Cookie: test_set_cookie + Transfer-Encoding: + - chunked + X-Amzn-Bedrock-Content-Type: + - application/json + x-amzn-RequestId: + - f7f7a941-75c5-4e55-8788-54537019e78d + status: + code: 200 + message: OK +version: 1 diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_no_content_tool_call[anthropic.claude].yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_no_content_tool_call[anthropic.claude].yaml new file mode 100644 index 0000000000..a5dc4ff6d2 --- /dev/null +++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_no_content_tool_call[anthropic.claude].yaml @@ -0,0 +1,460 @@ +interactions: +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please give one tool call for Seattle and one for San Francisco", + "type": "text" + } + ] + } + ], + "anthropic_version": "bedrock-2023-05-31", + "tools": [ + { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + ], + "max_tokens": 1000 + } + headers: + Content-Length: + - '513' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T163458Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-522fe453-45d148244e3e7762363841b4;Parent=df4528398bc97d09;Sampled=1 + amz-sdk-invocation-id: + - f8ea0f99-772d-4c2e-985c-7a253e7552e3 + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-sonnet-20240620-v1%3A0/invoke-with-response-stream + response: + body: + string: !!binary | + AAABxAAAAEtT5drPCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj + MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVV0RVdG + WnlXbTlvWWtoRk1uQklVR1I2VmtabVF6Y2lMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV + aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHpMVFV0YzI5dWJtVjBMVEl3 + TWpRd05qSXdJaXdpWTI5dWRHVnVkQ0k2VzEwc0luTjBiM0JmY21WaGMyOXVJanB1ZFd4c0xDSnpk + Rzl3WDNObGNYVmxibU5sSWpwdWRXeHNMQ0oxYzJGblpTSTZleUpwYm5CMWRGOTBiMnRsYm5NaU9q + TTVNaXdpYjNWMGNIVjBYM1J2YTJWdWN5STZPSDE5ZlE9PSIsInAiOiJhYmNkZWYifbiwJ/kAAAET + AAAAS2gweYYLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24v + anNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVk + RjlpYkc5amExOXpkR0Z5ZENJc0ltbHVaR1Y0SWpvd0xDSmpiMjUwWlc1MFgySnNiMk5ySWpwN0lu + UjVjR1VpT2lKMFpYaDBJaXdpZEdWNGRDSTZJaUo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w + cXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMCJ9XbJItQAAATEAAABL0zEF4gs6 + ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNz + YWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5 + a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gw + WVNJc0luUmxlSFFpT2lKRFpYSjBZV2x1YkhraElFa25iR3dnZFhObElIUm9aU0JuWlhRaWZYMD0i + LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ + In10XMrZAAABIwAAAEvJEcEACzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw + cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpv + aVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUow + ZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUpmWTNWeWNtVnVkRjkzWldGMGFHVnlJ + bjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RV + VldYWVowIn1QAxQ9AAABPQAAAEsWwejjCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw + ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBl + WEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlT + STZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnWm5WdVkzUnBiMjRnZEc4 + Z1kyaGxZMnNnZEdobElIZGxZWFJvWlhJaWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1 + dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTYifc5bypAAAAFEAAAAS+IDal0L + OmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz + c2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amEx + OWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4 + MFlTSXNJblJsZUhRaU9pSWdabTl5SUdKdmRHZ2dVMlZoZEhSc1pTQmhibVFnVTJGdUlFWnlZVzVq + YVhOamJ5SjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktM + TU5PUFFSU1RVVldYWVowMTIzNDUifSjBmUEAAAEMAAAAS4qAedULOmV2ZW50LXR5cGUHAAVjaHVu + aw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7 + ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0 + SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSXVJ + RWtuYkd3Z2JXRnJaU0o5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RF + RkdIIn2sWZ9oAAABHAAAAEvqYO5XCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcA + EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJs + SWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZl + eUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnZEhkdklITmxjR0Z5WVhSbElu + MTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVW + V1gifU8ZjPIAAAERAAAASxLwKuYLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ + YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJ + am9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5 + SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdkRzl2YkNCallXeHNjeUIzYVhS + b2FXNGlmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREUiffuRFxMAAAD3 + AAAAS344yzwLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24v + anNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVk + RjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRH + VjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdkR2hsSUhOaGJXVWdablZ1WTNScGIyNGlmWDA9Iiwi + cCI6ImFiY2RlIn0tKo5KAAAA8wAAAEuLuG38CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt + dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5 + SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4 + MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnWTJGc2JITWdZbXh2 + WTJzdUluMTkiLCJwIjoiYWJjZGVmZ2hpIn0QasavAAAA1QAAAEvFObdYCzpldmVudC10eXBlBwAF + Y2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2 + ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTl6ZEc5d0lpd2lhVzVr + WlhnaU9qQjkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9Q + UVJTVFVWV1hZIn28oUh2AAABUgAAAEsNowh/CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt + dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5 + SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTl6ZEdGeWRDSXNJbWx1WkdWNElqb3hMQ0pqYjI1 + MFpXNTBYMkpzYjJOcklqcDdJblI1Y0dVaU9pSjBiMjlzWDNWelpTSXNJbWxrSWpvaWRHOXZiSFZm + WW1SeWExOHdNVkp1TjBOaVlYSTJZVFJUTjNkbE4yZzJhVlYzY0UwaUxDSnVZVzFsSWpvaVoyVjBY + Mk4xY25KbGJuUmZkMlZoZEdobGNpSXNJbWx1Y0hWMElqcDdmWDE5IiwicCI6ImFiY2RlZmdoaWpr + bG1ub3AifRz8bL4AAAEdAAAAS9cAx+cLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl + BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVY + QmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpveExDSmtaV3gwWVNJ + NmV5SjBlWEJsSWpvaWFXNXdkWFJmYW5OdmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFuTnZiaUk2 + SWlKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9Q + UVJTVFUifVWKi8MAAAEKAAAASwXAjHULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl + BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVY + QmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpveExDSmtaV3gwWVNJ + NmV5SjBlWEJsSWpvaWFXNXdkWFJmYW5OdmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFuTnZiaUk2 + SW50Y0lteHZZMkYwYVNKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcCJ9uB2aJAAAAQUAAABL + h5AbpAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWli + RzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam94TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pYVc1d2RY + UmZhbk52Ymw5a1pXeDBZU0lzSW5CaGNuUnBZV3hmYW5OdmJpSTZJbTl1WENJNklGd2lVMlZoZENK + OWZRPT0iLCJwIjoiYWJjZGVmZyJ9VyNkvgAAAQoAAABLBcCMdQs6ZXZlbnQtdHlwZQcABWNodW5r + DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi + Ynl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJ + am94TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pYVc1d2RYUmZhbk52Ymw5a1pXeDBZU0lzSW5CaGNu + UnBZV3hmYW5OdmJpSTZJblJzWlZ3aWZTSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0 + In3Db7AIAAAAqQAAAEv5G7qWCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw + cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpv + aVkyOXVkR1Z1ZEY5aWJHOWphMTl6ZEc5d0lpd2lhVzVrWlhnaU9qRjkiLCJwIjoiYWJjZGVmZyJ9 + 875sMQAAAVgAAABLRxMQ3gs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs + aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZ + Mjl1ZEdWdWRGOWliRzlqYTE5emRHRnlkQ0lzSW1sdVpHVjRJam95TENKamIyNTBaVzUwWDJKc2Iy + TnJJanA3SW5SNWNHVWlPaUowYjI5c1gzVnpaU0lzSW1sa0lqb2lkRzl2YkhWZlltUnlhMTh3TVUx + M1dHbHpNa3R3ZFhaSVRHWkxNVlpOZEhsS00zQWlMQ0p1WVcxbElqb2laMlYwWDJOMWNuSmxiblJm + ZDJWaGRHaGxjaUlzSW1sdWNIVjBJanA3ZlgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 + In3kprDCAAABGwAAAEtYQDJHCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw + cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpv + aVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3lMQ0prWld4MFlTSTZleUow + ZVhCbElqb2lhVzV3ZFhSZmFuTnZibDlrWld4MFlTSXNJbkJoY25ScFlXeGZhbk52YmlJNklpSjlm + UT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSUyJ9 + HBoMygAAASsAAABL+WGKwQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs + aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZ + Mjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam95TENKa1pXeDBZU0k2ZXlKMGVY + QmxJam9pYVc1d2RYUmZhbk52Ymw5a1pXeDBZU0lzSW5CaGNuUnBZV3hmYW5OdmJpSTZJbnRjSW14 + dlkyRjBhVzl1WENJNkluMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZH + SElKS0xNTk9QUVJTIn3waLmPAAABBAAAAEu68DIUCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl + bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6 + ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3lMQ0pr + Wld4MFlTSTZleUowZVhCbElqb2lhVzV3ZFhSZmFuTnZibDlrWld4MFlTSXNJbkJoY25ScFlXeGZh + bk52YmlJNklpQmNJbE5oYmlCR2NtRnVJbjE5IiwicCI6ImFiY2RlZmdoaWoifbmfLtEAAAEVAAAA + S+dwjCYLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNv + bg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlp + Ykc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpveUxDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWFXNXdk + WFJmYW5OdmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFuTnZiaUk2SW1OcGMyTnZYQ0o5SW4xOSIs + InAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFIn0ikqCnAAAAwgAAAEsX+fzKCzpl + dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh + Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTl6 + ZEc5d0lpd2lhVzVrWlhnaU9qSjkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE + RUYifZN6ltoAAAE+AAAAS1FhkjMLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ + YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJ + am9pYldWemMyRm5aVjlrWld4MFlTSXNJbVJsYkhSaElqcDdJbk4wYjNCZmNtVmhjMjl1SWpvaWRH + OXZiRjkxYzJVaUxDSnpkRzl3WDNObGNYVmxibU5sSWpwdWRXeHNmU3dpZFhOaFoyVWlPbnNpYjNW + MGNIVjBYM1J2YTJWdWN5STZNVE16ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5 + ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1NjciffAZqvIAAAFNAAAAS+8TCCwLOmV2 + ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn + ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pYldWemMyRm5aVjl6ZEc5d0lpd2lZ + VzFoZW05dUxXSmxaSEp2WTJzdGFXNTJiMk5oZEdsdmJrMWxkSEpwWTNNaU9uc2lhVzV3ZFhSVWIy + dGxia052ZFc1MElqb3pPVElzSW05MWRIQjFkRlJ2YTJWdVEyOTFiblFpT2prM0xDSnBiblp2WTJG + MGFXOXVUR0YwWlc1amVTSTZNemt4TlN3aVptbHljM1JDZVhSbFRHRjBaVzVqZVNJNk1UQXpObjE5 + IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnMifeVdPcA= + headers: + Connection: + - keep-alive + Content-Type: + - application/vnd.amazon.eventstream + Date: + - Tue, 25 Mar 2025 16:34:59 GMT + Set-Cookie: test_set_cookie + Transfer-Encoding: + - chunked + X-Amzn-Bedrock-Content-Type: + - application/json + x-amzn-RequestId: + - b9ea026a-ac98-4d87-9352-99984599e41f + status: + code: 200 + message: OK +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please give one tool call for Seattle and one for San Francisco", + "type": "text" + } + ] + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Certainly! I'll use the get_current_weather function to check the weather for both Seattle and San Francisco. I'll make two separate tool calls within the same function calls block." + }, + { + "type": "tool_use", + "id": "toolu_bdrk_01Rn7Cbar6a4S7we7h6iUwpM", + "name": "get_current_weather", + "input": { + "location": "Seattle" + } + }, + { + "type": "tool_use", + "id": "toolu_bdrk_01MwXis2KpuvHLfK1VMtyJ3p", + "name": "get_current_weather", + "input": { + "location": "San Francisco" + } + } + ] + }, + { + "role": "user", + "content": [ + { + "type": "tool_result", + "tool_use_id": "toolu_bdrk_01Rn7Cbar6a4S7we7h6iUwpM", + "content": "50 degrees and raining" + }, + { + "type": "tool_result", + "tool_use_id": "toolu_bdrk_01MwXis2KpuvHLfK1VMtyJ3p", + "content": "70 degrees and sunny" + } + ] + } + ], + "anthropic_version": "bedrock-2023-05-31", + "tools": [ + { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + ], + "max_tokens": 1000 + } + headers: + Content-Length: + - '1291' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T163502Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-e42f5da2-f049566b669ca481c0e86624;Parent=1bdd6579c05809f1;Sampled=1 + amz-sdk-invocation-id: + - e8800abb-49e8-4f23-8cf1-b0bc695790ff + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-sonnet-20240620-v1%3A0/invoke-with-response-stream + response: + body: + string: !!binary | + AAABzQAAAEte9bi+CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj + MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVRsWVFW + bG9hMWhpZDBOdE1UaDFhRFZGVEc1bFl6Y2lMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV + aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHpMVFV0YzI5dWJtVjBMVEl3 + TWpRd05qSXdJaXdpWTI5dWRHVnVkQ0k2VzEwc0luTjBiM0JmY21WaGMyOXVJanB1ZFd4c0xDSnpk + Rzl3WDNObGNYVmxibU5sSWpwdWRXeHNMQ0oxYzJGblpTSTZleUpwYm5CMWRGOTBiMnRsYm5NaU9q + WXdNaXdpYjNWMGNIVjBYM1J2YTJWdWN5STZNbjE5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm8i + fT6bXREAAAD/AAAAS05IgP0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw + bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9p + WTI5dWRHVnVkRjlpYkc5amExOXpkR0Z5ZENJc0ltbHVaR1Y0SWpvd0xDSmpiMjUwWlc1MFgySnNi + Mk5ySWpwN0luUjVjR1VpT2lKMFpYaDBJaXdpZEdWNGRDSTZJaUo5ZlE9PSIsInAiOiJhYmNkZWZn + aGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkcifYTGj8MAAAEYAAAASx/gSJcLOmV2ZW50LXR5cGUH + AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF + ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0lt + bHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhR + aU9pSmNibHh1UW1GelpTSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJD + REVGR0hJSktMTU5PUFFSU1RVVldYIn2GKqAtAAABEwAAAEtoMHmGCzpldmVudC10eXBlBwAFY2h1 + bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50 + eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdW + NElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUpr + SUc5dUlIUm9aU0J5WlhOMWJIUnpJR1p5YjIwZ2IzVnlJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1u + b3BxcnN0dXZ3eHkiffifX68AAAEaAAAAS2UgG/cLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu + dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi + ZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmta + V3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdkMlZoZEdobGNp + QjBiMjlzTENCb1pYSmxKM01pZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFC + Q0RFRkdISUoifXIJZlcAAAEoAAAAS77B8BELOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10 + eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlK + MGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gw + WVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdkR2hsSUdOMWNuSmxi + blFnZDJWaGRHaGxjaUJtYjNJaWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpB + QkNERUZHSElKS0xNTk9QUVJTVCJ9QaR1XwAAASUAAABLRlE0oAs6ZXZlbnQtdHlwZQcABWNodW5r + DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi + Ynl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJ + am93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ1Uy + VmhkSFJzWlNCaGJtUWdVMkZ1SUVaeVlXNWphWE5qYnpwY2JseHVVMlZoZEhSc1pTSjlmUT09Iiwi + cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3In09E8tyAAABAgAAAEs1sMe0CzpldmVudC10eXBl + BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA + BWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJ + bWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVI + UWlPaUk2SUZSb1pTQmpkWEp5Wlc1MElIZGxZWFJvWlhJZ2FXNGlmWDA9IiwicCI6ImFiY2RlZmdo + In3pNDtbAAABDgAAAEvwQCq1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw + cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpv + aVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUow + ZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnVTJWaGRIUnNaU0JwY3lBMU1DQmta + V2R5WldWeklHRnVaQ0J5SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wIn2L7dRhAAABDgAAAEvw + QCq1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24N + Om1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJH + OWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5 + a1pXeDBZU0lzSW5SbGVIUWlPaUpoYVc1cGJtY3VYRzVUWVc0Z1JuSmhibU5wYzJOdk9pSjlmUT09 + IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0In2QqC+BAAABGQAAAEsigGEnCzpldmVudC10eXBl + BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA + BWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJ + bWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVI + UWlPaUlnVkdobElHTjFjbkpsYm5RZ2QyVmhkR2hsY2lCcGJpQlRZVzRnUm5KaGJtTnBjMk52SUds + eklDSjlmUT09IiwicCI6ImFiY2RlZmcifarIy2wAAAD5AAAAS8EIdV0LOmV2ZW50LXR5cGUHAAVj + aHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZl + bnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVa + R1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9p + STNNQ0JrWldkeVpXVnpJR0Z1WkNCemRXNXVlUzRpZlgwPSIsInAiOiJhYmMifUCgNssAAAETAAAA + S2gweYYLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNv + bg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlp + Ykc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRk + RjlrWld4MFlTSXNJblJsZUhRaU9pSmNibHh1UVhNZ2VXOTFJR05oYmlCelpXVXNJSFJvWlNCMGQy + OGlmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dSJ9iibEcQAAAUsAAABLYFP9jAs6ZXZl + bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl + LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pX + eDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJ + c0luUmxlSFFpT2lJZ1kybDBhV1Z6SUdGeVpTQmxlSEJsY21sbGJtTnBibWNnY1hWcGRHVWdaR2xt + Wm1WeVpXNTBJSGRsWVhSb1pYSWdZMjl1WkdsMGFXOXVjeUIwYjJSaGVTSjlmUT09IiwicCI6ImFi + Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHkifWYWD5kAAAExAAAAS9MxBeILOmV2ZW50LXR5cGUHAAVj + aHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZl + bnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVa + R1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9p + SXVJRk5sWVhSMGJHVWdhWE1nYUdGMmFXNW5JR0VnWTI5dmJHVnlMQ0J5WVNKOWZRPT0iLCJwIjoi + YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUSJ9JZcMbgAAAQQAAABL + uvAyFAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWli + RzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRG + OWtaV3gwWVNJc0luUmxlSFFpT2lKcGJua2daR0Y1TENCM2FHbGphQ0JwY3lCbVlXbHliSGtpZlgw + PSIsInAiOiJhYmNkZWZnaGlqIn16ysiBAAABGgAAAEtlIBv3CzpldmVudC10eXBlBwAFY2h1bmsN + OmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJi + eXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElq + b3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnZEhs + d2FXTmhiQ0JtYjNJZ2RHaGxJRkJoWTJsbWFXTWdUbTl5ZEdoM1pYTjBMaUJQYmlKOWZRPT0iLCJw + IjoiYWJjZGVmZ2hpamtsIn1jUGsNAAABJgAAAEsB8U5wCzpldmVudC10eXBlBwAFY2h1bmsNOmNv + bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl + cyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dM + Q0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnZEdobElH + OTBhR1Z5SUdoaGJtUXNJRk5oYmlCR2NtRnVZMmx6WTI4Z2FYTWdaVzVxYjNscGJtY2lmWDA9Iiwi + cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0In25ObEhAAABOwAAAEuZgR1DCzpldmVudC10eXBlBwAF + Y2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2 + ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1 + WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlP + aUlnWVNCM1lYSnRJR0Z1WkNCemRXNXVlU0JrWVhrc0lIQmxjbVpsWTNRaWZYMD0iLCJwIjoiYWJj + ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0In13 + gEV7AAABOgAAAEuk4TTzCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp + Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVky + OXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhC + bElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnWm05eUlHOTFkR1J2YjNJZ1lXTjBhWFpw + ZEdsbGN5NWNibHh1U1hNaWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE + RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjMifcfKjpUAAAEMAAAAS4qAedULOmV2ZW50LXR5cGUH + AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF + ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0lt + bHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhR + aU9pSWdkR2hsY21VZ1lXNTVkR2hwYm1jZ1pXeHpaU0I1YjNVbkluMTkiLCJwIjoiYWJjZGVmZ2hp + amtsbW5vcHFyIn2pC/d3AAABFgAAAEug0Pb2CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt + dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5 + SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4 + MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUprSUd4cGEyVWdkRzhn + YTI1dmR5QmhZbTkxZENCMGFHVWdkMlZoZEdobGNpSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1u + b3AifcvpckIAAAE/AAAAS2wBu4MLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ + YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJ + am9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5 + SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdhVzRnZEdobGMyVWdZMmwwYVdW + eklHOXlJR0Z1ZVNCdmRHaGxjaUJzYjJOaGRHbHZibk1pZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xt + bm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXIn2P8KtRAAAA6wAAAEvbKLG/Czpl + dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh + Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlr + Wld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZ + U0lzSW5SbGVIUWlPaUkvSW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcSJ9BD4nBQAAANYAAABL + gpnNiAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWli + RzlqYTE5emRHOXdJaXdpYVc1a1pYZ2lPakI5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3 + eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoifebszSUAAAErAAAAS/lhisELOmV2ZW50LXR5 + cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBl + BwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pYldWemMyRm5aVjlrWld4MFlTSXNJbVJsYkhS + aElqcDdJbk4wYjNCZmNtVmhjMjl1SWpvaVpXNWtYM1IxY200aUxDSnpkRzl3WDNObGNYVmxibU5s + SWpwdWRXeHNmU3dpZFhOaFoyVWlPbnNpYjNWMGNIVjBYM1J2YTJWdWN5STZNVE0zZlgwPSIsInAi + OiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OTyJ9T6Fj3AAAAXQAAABL + QyLS2ws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2liV1Z6YzJGblpWOXpk + Rzl3SWl3aVlXMWhlbTl1TFdKbFpISnZZMnN0YVc1MmIyTmhkR2x2YmsxbGRISnBZM01pT25zaWFX + NXdkWFJVYjJ0bGJrTnZkVzUwSWpvMk1ESXNJbTkxZEhCMWRGUnZhMlZ1UTI5MWJuUWlPakV6Tnl3 + aWFXNTJiMk5oZEdsdmJreGhkR1Z1WTNraU9qUTBOVEFzSW1acGNuTjBRbmwwWlV4aGRHVnVZM2tp + T2pnNE5IMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9Q + UVJTVFVWV1hZWjAxMjM0NSJ92l5aXQ== + headers: + Connection: + - keep-alive + Content-Type: + - application/vnd.amazon.eventstream + Date: + - Tue, 25 Mar 2025 16:35:03 GMT + Set-Cookie: test_set_cookie + Transfer-Encoding: + - chunked + X-Amzn-Bedrock-Content-Type: + - application/json + x-amzn-RequestId: + - 5712a4fc-af29-49e3-878a-c10a7cf8236a + status: + code: 200 + message: OK +version: 1 diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_with_content_tool_call.yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_with_content_tool_call.yaml deleted file mode 100644 index 5dcfd44600..0000000000 --- a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_with_content_tool_call.yaml +++ /dev/null @@ -1,473 +0,0 @@ -interactions: -- request: - body: |- - { - "messages": [ - { - "role": "user", - "content": [ - { - "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco", - "type": "text" - } - ] - } - ], - "anthropic_version": "bedrock-2023-05-31", - "tools": [ - { - "name": "get_current_weather", - "description": "Get the current weather in a given location.", - "input_schema": { - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "The name of the city" - } - }, - "required": [ - "location" - ] - } - } - ], - "max_tokens": 1000 - } - headers: - Content-Length: - - '515' - User-Agent: - - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 - lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 - X-Amz-Date: - - 20250226T161935Z - X-Amz-Security-Token: - - test_aws_security_token - X-Amzn-Trace-Id: - - Root=1-8e6df2a2-1a5703b1615ad033a67eb44a;Parent=b0b3fecbfa1885f4;Sampled=1 - amz-sdk-invocation-id: - - b1d66eab-2ea7-49d7-8440-4114a8572a41 - amz-sdk-request: - - attempt=1 - authorization: - - Bearer test_aws_authorization - method: POST - uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-sonnet-20240620-v1%3A0/invoke-with-response-stream - response: - body: - string: !!binary | - AAAB1QAAAEsOZWT9CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 - aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj - MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVZCV1lu - VnRjemhuUjNkNVpXVTVjbW81YnpKWmN6WWlMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV - aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHpMVFV0YzI5dWJtVjBMVEl3 - TWpRd05qSXdJaXdpWTI5dWRHVnVkQ0k2VzEwc0luTjBiM0JmY21WaGMyOXVJanB1ZFd4c0xDSnpk - Rzl3WDNObGNYVmxibU5sSWpwdWRXeHNMQ0oxYzJGblpTSTZleUpwYm5CMWRGOTBiMnRsYm5NaU9q - TTVNaXdpYjNWMGNIVjBYM1J2YTJWdWN5STZPSDE5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w - cXJzdHV2dyJ9X3QTBwAAAQYAAABLwDBhdAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5 - cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUow - ZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5emRHRnlkQ0lzSW1sdVpHVjRJam93TENKamIyNTBa - VzUwWDJKc2IyTnJJanA3SW5SNWNHVWlPaUowWlhoMElpd2lkR1Y0ZENJNklpSjlmUT09IiwicCI6 - ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU4ifZwa/6gAAAEeAAAAS5Cg - vTcLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 - bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5 - amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlr - Wld4MFlTSXNJblJsZUhRaU9pSkRaWEowWVdsdWJIa2hJRWtuYkd3Z2RYTmxJSFJvWlNCblpYUWlm - WDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGIn0yvsn8AAABHAAAAEvq - YO5XCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24N - Om1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJH - OWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5 - a1pXeDBZU0lzSW5SbGVIUWlPaUpmWTNWeWNtVnVkRjkzWldGMGFHVnlJR1oxYm1OMGFXOXVJbjE5 - IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0gifU4XPNcAAAEJAAAAS0Jg - 9qULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 - bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5 - amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlr - Wld4MFlTSXNJblJsZUhRaU9pSWdkRzhnWTJobFkyc2dkR2hsSUhkbFlYUm9aWElnWm05eUlHSnZk - R2dpZlgwPSIsInAiOiJhYmNkZWZnIn0QMJILAAABDAAAAEuKgHnVCzpldmVudC10eXBlBwAFY2h1 - bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50 - eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdW - NElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUln - VTJWaGRIUnNaU0JoYm1RZ1UyRnVJRVp5WVc1amFYTmpieTRnU1Nkc2JDQnRZV3RsSW4xOSIsInAi - OiJhYiJ9pNm93wAAAUoAAABLXTPUPAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH - ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhC - bElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2 - ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ2RIZHZJSE5sY0dGeVlYUmxJ - R05oYkd4eklIZHBkR2hwYmlCMGFHVWdjMkZ0WlNCbWRXNWpkR2x2YmlKOWZRPT0iLCJwIjoiYWJj - ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiJ9HCds9QAA - AV0AAABLj/Ofrgs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv - bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdW - dWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9p - ZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ1kyRnNiSE1nWW14dlkyc2djMmx1WTJVZ2RHaGxj - bVVnWVhKbElHNXZJR1JsY0dWdVpHVnVZMmxsY3lCaVpYUjNaV1Z1SUhSb1pXMHVJbjE5IiwicCI6 - ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIi - ffRdBA8AAADSAAAAS3cZa0gLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw - bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9p - WTI5dWRHVnVkRjlpYkc5amExOXpkRzl3SWl3aWFXNWtaWGdpT2pCOSIsInAiOiJhYmNkZWZnaGlq - a2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVYifZ6Jbw8AAAF3AAAASwSCqAsL - OmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz - c2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amEx - OXpkR0Z5ZENJc0ltbHVaR1Y0SWpveExDSmpiMjUwWlc1MFgySnNiMk5ySWpwN0luUjVjR1VpT2lK - MGIyOXNYM1Z6WlNJc0ltbGtJam9pZEc5dmJIVmZZbVJ5YTE4d01WUnFVbFkzY0Rob01YVjNNMHRP - YUcxeVVqTXhNMjhpTENKdVlXMWxJam9pWjJWMFgyTjFjbkpsYm5SZmQyVmhkR2hsY2lJc0ltbHVj - SFYwSWpwN2ZYMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xN - Tk9QUVJTVFVWV1hZWjAifdQqPr4AAADzAAAAS4u4bfwLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u - dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz - IjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpveExD - SmtaV3gwWVNJNmV5SjBlWEJsSWpvaWFXNXdkWFJmYW5OdmJsOWtaV3gwWVNJc0luQmhjblJwWVd4 - ZmFuTnZiaUk2SWlKOWZRPT0iLCJwIjoiYWJjZGUifXNOcm8AAAEpAAAAS4Oh2aELOmV2ZW50LXR5 - cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBl - BwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJ - c0ltbHVaR1Y0SWpveExDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWFXNXdkWFJmYW5OdmJsOWtaV3gw - WVNJc0luQmhjblJwWVd4ZmFuTnZiaUk2SW50Y0lteHZZMkYwYVc4aWZYMD0iLCJwIjoiYWJjZGVm - Z2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFUiffy4a54AAAEbAAAAS1hA - MkcLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 - bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5 - amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpveExDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWFXNXdkWFJm - YW5OdmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFuTnZiaUk2SW01Y0lqb2dYQ0pUWlNKOWZRPT0i - LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHIn0KcQTZAAABLgAAAEsxgQWx - CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l - c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWph - MTlrWld4MFlTSXNJbWx1WkdWNElqb3hMQ0prWld4MFlTSTZleUowZVhCbElqb2lhVzV3ZFhSZmFu - TnZibDlrWld4MFlTSXNJbkJoY25ScFlXeGZhbk52YmlJNkltRjBkR3hsWENKOUluMTkiLCJwIjoi - YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjMi - fZ7QxRkAAADXAAAAS7/55DgLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw - bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9p - WTI5dWRHVnVkRjlpYkc5amExOXpkRzl3SWl3aWFXNWtaWGdpT2pGOSIsInAiOiJhYmNkZWZnaGlq - a2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMCJ91QhqVQAAAW4AAABL - aXJd+As6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u - DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWli - RzlqYTE5emRHRnlkQ0lzSW1sdVpHVjRJam95TENKamIyNTBaVzUwWDJKc2IyTnJJanA3SW5SNWNH - VWlPaUowYjI5c1gzVnpaU0lzSW1sa0lqb2lkRzl2YkhWZlltUnlhMTh3TVZoNlprRnRXRGhJUkdw - aE16Uk1aVEZEZEVRMWRVRWlMQ0p1WVcxbElqb2laMlYwWDJOMWNuSmxiblJmZDJWaGRHaGxjaUlz - SW1sdWNIVjBJanA3ZlgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdI - SUpLTE1OT1BRUiJ9gZo9ugAAAR4AAABLkKC9Nws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50 - LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJl - eUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam95TENKa1pX - eDBZU0k2ZXlKMGVYQmxJam9pYVc1d2RYUmZhbk52Ymw5a1pXeDBZU0lzSW5CaGNuUnBZV3hmYW5O - dmJpSTZJaUo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpL - TE1OT1BRUlNUVVYifbIYQCMAAAEKAAAASwXAjHULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu - dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi - ZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpveUxDSmta - V3gwWVNJNmV5SjBlWEJsSWpvaWFXNXdkWFJmYW5OdmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFu - TnZiaUk2SW50Y0lteHZJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eCJ9E3EcgQAA - ARcAAABLnbDfRgs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv - bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdW - dWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam95TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9p - YVc1d2RYUmZhbk52Ymw5a1pXeDBZU0lzSW5CaGNuUnBZV3hmYW5OdmJpSTZJbU5oZEdraWZYMD0i - LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKSyJ90P11jgAAAQcAAABL - /VBIxAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u - DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWli - RzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam95TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pYVc1d2RY - UmZhbk52Ymw5a1pXeDBZU0lzSW5CaGNuUnBZV3hmYW5OdmJpSTZJbTl1WENJNklGd2lVMkZ1SUVZ - aWZYMD0iLCJwIjoiYWJjZGVmZ2hpIn0QvdzCAAABBQAAAEuHkBukCzpldmVudC10eXBlBwAFY2h1 - bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50 - eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdW - NElqb3lMQ0prWld4MFlTSTZleUowZVhCbElqb2lhVzV3ZFhSZmFuTnZibDlrWld4MFlTSXNJbkJo - Y25ScFlXeGZhbk52YmlJNkluSmhibU5wYzJOdlhDSjlJbjE5IiwicCI6ImFiY2RlZmdoaWprIn24 - bi8DAAAAswAAAEvTSzW1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp - Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVky - OXVkR1Z1ZEY5aWJHOWphMTl6ZEc5d0lpd2lhVzVrWlhnaU9qSjkiLCJwIjoiYWJjZGVmZ2hpamts - bW5vcHEiffq5wLcAAAEjAAAAS8kRwQALOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl - BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVY - QmxJam9pYldWemMyRm5aVjlrWld4MFlTSXNJbVJsYkhSaElqcDdJbk4wYjNCZmNtVmhjMjl1SWpv - aWRHOXZiRjkxYzJVaUxDSnpkRzl3WDNObGNYVmxibU5sSWpwdWRXeHNmU3dpZFhOaFoyVWlPbnNp - YjNWMGNIVjBYM1J2YTJWdWN5STZNVE01ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 - d3h5ekFCQ0RFRkcifTKSdLUAAAFmAAAAS1kCFjkLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu - dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi - ZXlKMGVYQmxJam9pYldWemMyRm5aVjl6ZEc5d0lpd2lZVzFoZW05dUxXSmxaSEp2WTJzdGFXNTJi - Mk5oZEdsdmJrMWxkSEpwWTNNaU9uc2lhVzV3ZFhSVWIydGxia052ZFc1MElqb3pPVElzSW05MWRI - QjFkRlJ2YTJWdVEyOTFiblFpT2pFd05Dd2lhVzUyYjJOaGRHbHZia3hoZEdWdVkza2lPalEyT1Rr - c0ltWnBjbk4wUW5sMFpVeGhkR1Z1WTNraU9qRTFNak45ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xt - bm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OIn1eJla3 - headers: - Connection: - - keep-alive - Content-Type: - - application/vnd.amazon.eventstream - Date: - - Wed, 26 Feb 2025 16:19:37 GMT - Set-Cookie: test_set_cookie - Transfer-Encoding: - - chunked - X-Amzn-Bedrock-Content-Type: - - application/json - x-amzn-RequestId: - - ff392444-c328-40d9-88a2-f639263e1f2a - status: - code: 200 - message: OK -- request: - body: |- - { - "messages": [ - { - "role": "user", - "content": [ - { - "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco", - "type": "text" - } - ] - }, - { - "role": "assistant", - "content": [ - { - "type": "text", - "text": "Certainly! I'll use the get_current_weather function to check the weather for both Seattle and San Francisco. I'll make two separate calls within the same function calls block since there are no dependencies between them." - }, - { - "type": "tool_use", - "id": "toolu_bdrk_01TjRV7p8h1uw3KNhmrR313o", - "name": "get_current_weather", - "input": { - "location": "Seattle" - } - }, - { - "type": "tool_use", - "id": "toolu_bdrk_01XzfAmX8HDja34Le1CtD5uA", - "name": "get_current_weather", - "input": { - "location": "San Francisco" - } - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "tool_result", - "tool_use_id": "toolu_bdrk_01TjRV7p8h1uw3KNhmrR313o", - "content": "50 degrees and raining" - }, - { - "type": "tool_result", - "tool_use_id": "toolu_bdrk_01XzfAmX8HDja34Le1CtD5uA", - "content": "70 degrees and sunny" - } - ] - } - ], - "anthropic_version": "bedrock-2023-05-31", - "tools": [ - { - "name": "get_current_weather", - "description": "Get the current weather in a given location.", - "input_schema": { - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "The name of the city" - } - }, - "required": [ - "location" - ] - } - } - ], - "max_tokens": 1000 - } - headers: - Content-Length: - - '1333' - User-Agent: - - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 - lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 - X-Amz-Date: - - 20250226T161940Z - X-Amz-Security-Token: - - test_aws_security_token - X-Amzn-Trace-Id: - - Root=1-45c5efe5-9b80be013e2a686dc344d2cd;Parent=80fb0855a87a3b04;Sampled=1 - amz-sdk-invocation-id: - - 1dedf335-f000-48a9-b963-a0aef78be7ae - amz-sdk-request: - - attempt=1 - authorization: - - Bearer test_aws_authorization - method: POST - uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-sonnet-20240620-v1%3A0/invoke-with-response-stream - response: - body: - string: !!binary | - AAAB+QAAAEsKVKb4CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 - aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj - MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVZFNFJu - ZEtORWRNUW1wemFtcFNTbUpqTWsxdlozVWlMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV - aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHpMVFV0YzI5dWJtVjBMVEl3 - TWpRd05qSXdJaXdpWTI5dWRHVnVkQ0k2VzEwc0luTjBiM0JmY21WaGMyOXVJanB1ZFd4c0xDSnpk - Rzl3WDNObGNYVmxibU5sSWpwdWRXeHNMQ0oxYzJGblpTSTZleUpwYm5CMWRGOTBiMnRsYm5NaU9q - WXdPQ3dpYjNWMGNIVjBYM1J2YTJWdWN5STZNbjE5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w - cXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1NiJ9hJJ8mwAAAO8AAABL - LqgXfws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u - DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWli - RzlqYTE5emRHRnlkQ0lzSW1sdVpHVjRJam93TENKamIyNTBaVzUwWDJKc2IyTnJJanA3SW5SNWNH - VWlPaUowWlhoMElpd2lkR1Y0ZENJNklpSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxIn1o - VcC6AAABCgAAAEsFwIx1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp - Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVky - OXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhC - bElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUpjYmx4dVIzSmxZWFFpZlgwPSIsInAiOiJh - YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUoifbm9/C0AAAErAAAAS/lhisELOmV2 - ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn - ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWta - V3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlT - SXNJblJsZUhRaU9pSWhJRWtnYUdGMlpTQjBhR1VnWTNWeWNtVnVkQ0IzWldGMGFHVnlJR2x1Wm05 - eWJXRjBhVzl1SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQyJ9JnZS3wAA - ASkAAABLg6HZoQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv - bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdW - dWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9p - ZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ1ptOXlJR0p2ZEdnZ1kybDBhV1Z6TGlKOWZRPT0i - LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ - WjAxMiJ9bCd5VwAAARoAAABLZSAb9ws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH - ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhC - bElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2 - ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ1NHVnlaU2R6SUhSb1pTQjNa - V0YwYUdWeUluMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xN - TiJ9gAZI1wAAARoAAABLZSAb9ws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBh - cHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElq - b2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlK - MGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ2FXNGdVMlZoZEhSc1pTQmhibVFn - VTJGdUlFWnlZVzVqYVhOamJ5QjBiMlJoZVNKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcCJ9 - LJrRhgAAAQAAAABLT3CU1As6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs - aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZ - Mjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVY - QmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJNlhHNWNibE5sWVhSMGJHVTZJbjE5Iiwi - cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXYifdJhtoAAAAEbAAAAS1hAMkcLOmV2ZW50LXR5cGUH - AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF - ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0lt - bHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhR - aU9pSWdOVEFnWkdWbmNtVmxjeUo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5 - ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXIn31qtKMAAABHwAAAEutwJSHCzpldmVudC10eXBlBwAF - Y2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2 - ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1 - WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlP - aUlnWVc1a0lISmhhVzVwYm1kY2JsTmhiaUJHY21GdVkybHpZMjg2SUNKOWZRPT0iLCJwIjoiYWJj - ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkMifT0EpmEAAAEjAAAAS8kRwQALOmV2ZW50LXR5cGUH - AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF - ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0lt - bHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhR - aU9pSTNNQ0JrWldkeVpXVnpJR0Z1SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5 - ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQifewNjsQAAAEDAAAASwjQ7gQLOmV2ZW50 - LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10 - eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gw - WVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJ - blJsZUhRaU9pSmtJSE4xYm01NVhHNWNia0Z6SUhsdmRTQmpZVzRnYzJWbExDSjlmUT09IiwicCI6 - ImFiY2RlIn31md/9AAABEwAAAEtoMHmGCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw - ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBl - WEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlT - STZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnZEdobElIZGxZWFJvWlhJ - Z2FYTWdjWFZwZEdVZ1pHbG1abVZ5Wlc1MElHbHVJSFJvWlhObEluMTkiLCJwIjoiYWJjZGUifXBi - A8YAAAEaAAAAS2UgG/cLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGlj - YXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5 - dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJs - SWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdkSGR2SUdOcGRHbGxjeUIwYjJSaGVTNGdV - MlZoZEhSc1pTSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUIifapwXr8A - AAEkAAAAS3sxHRALOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp - b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRH - VnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpv - aWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdhWE1nWlhod1pYSnBaVzVqYVc1bklHTnZiMnhs - Y2lCMFpXMXdaWEpoZEhWeVpYTWdkMmwwYUNCeVlXbHVJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1u - In3KUQpZAAABGgAAAEtlIBv3CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw - cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpv - aVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUow - ZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlzSUhkb2FXTm9JR2x6SUdaaGFYSnNl - U0IwZVhCcFkyRnNJR1p2Y2lCMGFHVWlmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0In3w - j+s5AAABEwAAAEtoMHmGCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp - Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVky - OXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhC - bElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnWTJsMGVTNGdUMjRnZEdobElHOTBhR1Z5 - SUdoaGJtUXNJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHkifUgk2zsAAAE7AAAA - S5mBHUMLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNv - bg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlp - Ykc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRk - RjlrWld4MFlTSXNJblJsZUhRaU9pSWdVMkZ1SUVaeVlXNWphWE5qYnlCcGN5QmxibXB2ZVdsdVp5 - QmhJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFS - U1RVVldYWVowMTIzNDU2NzgifRZGMqMAAAEgAAAAS46xu9ALOmV2ZW50LXR5cGUHAAVjaHVuaw06 - Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 - dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpv - d0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdkMkZ5 - YlNCaGJtUWdjM1Z1Ym5rZ1pHRjVMaUo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 - d3h5ekFCQ0RFRkdISUpLTE1OT1AifW5prkYAAAEvAAAASwzhLAELOmV2ZW50LXR5cGUHAAVjaHVu - aw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7 - ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0 - SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdT - V1lnZVc5MUozSmxJSEJzWVc1dWFXNW5JR0Z1ZVNKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v - cHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAifaE9HFAAAAEYAAAASx/gSJcL - OmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz - c2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amEx - OWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4 - MFlTSXNJblJsZUhRaU9pSWdZV04wYVhacGRHbGxjeXdnZVc5MUlHMXBaMmgwSUhkaGJuUWdkRzhn - WTI5dWMybGtaWElpZlgwPSIsInAiOiJhYmNkZWZnaGlqIn0m32+YAAABCAAAAEt/AN8VCzpldmVu - dC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2Ut - dHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4 - MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lz - SW5SbGVIUWlPaUlnYVc1a2IyOXlJRzl3ZEdsdmJuTWdabTl5SUZObFlYUjBiR1VzSUhkb2FXeGxJ - bjE5IiwicCI6ImFiIn1Fx/zhAAABLQAAAEt2IX9hCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl - bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6 - ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0pr - Wld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnYVhRbmN5QmhJ - R2R5WldGMElHUmhlU0o5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RF - RkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1NiJ9K+P12QAAAUsAAABLYFP9jAs6ZXZlbnQtdHlw - ZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUH - AAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lz - SW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxl - SFFpT2lJZ1ptOXlJRzkxZEdSdmIzSWdZV04wYVhacGRHbGxjeUJwYmlCVFlXNGdSbkpoYm1OcGMy - TnZJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFS - U1RVVldYWVowMTIzNDU2NzgifcOZO78AAAELAAAASzigpcULOmV2ZW50LXR5cGUHAAVjaHVuaw06 - Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 - dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpv - d0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSXVYRzVj - YmtseklIUm9aWEpsSUdGdWVYUm9hVzVuSUdWc2MyVWdlVzkxSW4xOSIsInAiOiJhYmNkZWZnaGki - fR9z4jsAAAEkAAAAS3sxHRALOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw - bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9p - WTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBl - WEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSW5aQ0JzYVd0bElIUnZJR3R1YjNjZ1lX - SnZkWFFnZEdobElIZGxZWFJvWlhJaWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4 - eXpBQkNEIn2VIpD2AAABBgAAAEvAMGF0CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw - ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBl - WEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlT - STZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnYVc0Z2RHaGxjMlVnWTJs - MGFXVnpJRzl5SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdCJ9HxyLqQAAAQsAAABLOKCl - xQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTpt - ZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlq - YTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWta - V3gwWVNJc0luUmxlSFFpT2lJZ1lXNTVJRzkwYUdWeUlHeHZZMkYwYVc5dWN6OGlmWDA9IiwicCI6 - ImFiY2RlZmdoaWprbG1ub3BxcnN0dSJ9RRFd2gAAAN4AAABLsumGSQs6ZXZlbnQtdHlwZQcABWNo - dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu - dHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5emRHOXdJaXdpYVc1a1pY - Z2lPakI5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFS - U1RVVldYWVowMTIzNDU2NyJ94MnS9gAAAQcAAABL/VBIxAs6ZXZlbnQtdHlwZQcABWNodW5rDTpj - b250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0 - ZXMiOiJleUowZVhCbElqb2liV1Z6YzJGblpWOWtaV3gwWVNJc0ltUmxiSFJoSWpwN0luTjBiM0Jm - Y21WaGMyOXVJam9pWlc1a1gzUjFjbTRpTENKemRHOXdYM05sY1hWbGJtTmxJanB1ZFd4c2ZTd2lk - WE5oWjJVaU9uc2liM1YwY0hWMFgzUnZhMlZ1Y3lJNk1UUTNmWDA9IiwicCI6ImFiY2RlIn2Ctyve - AAABaAAAAEvmMqhYCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 - aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj - MkZuWlY5emRHOXdJaXdpWVcxaGVtOXVMV0psWkhKdlkyc3RhVzUyYjJOaGRHbHZiazFsZEhKcFkz - TWlPbnNpYVc1d2RYUlViMnRsYmtOdmRXNTBJam8yTURnc0ltOTFkSEIxZEZSdmEyVnVRMjkxYm5R - aU9qRTBOeXdpYVc1MmIyTmhkR2x2Ymt4aGRHVnVZM2tpT2pRNE16WXNJbVpwY25OMFFubDBaVXho - ZEdWdVkza2lPalUwT1gxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdI - SUpLTE1OT1BRUlNUIn0oqdWF - headers: - Connection: - - keep-alive - Content-Type: - - application/vnd.amazon.eventstream - Date: - - Wed, 26 Feb 2025 16:19:41 GMT - Set-Cookie: test_set_cookie - Transfer-Encoding: - - chunked - X-Amzn-Bedrock-Content-Type: - - application/json - x-amzn-RequestId: - - 5e3aff43-f4bb-4ee3-9314-440d597bc442 - status: - code: 200 - message: OK -version: 1 diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_with_content_tool_call[amazon.nova].yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_with_content_tool_call[amazon.nova].yaml new file mode 100644 index 0000000000..39e13221db --- /dev/null +++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_with_content_tool_call[amazon.nova].yaml @@ -0,0 +1,643 @@ +interactions: +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please give one tool call for Seattle and one for San Francisco" + } + ] + } + ], + "inferenceConfig": { + "max_new_tokens": 1000 + }, + "schemaVersion": "messages-v1", + "toolConfig": { + "tools": [ + { + "toolSpec": { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "inputSchema": { + "json": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + } + } + ] + } + } + headers: + Content-Length: + - '550' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T144018Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-14345596-4402c04cb91f2c76698dc743;Parent=caab38549f480041;Sampled=1 + amz-sdk-invocation-id: + - d36ab502-01eb-4144-89e9-ab364c3ad6af + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.nova-micro-v1%3A0/invoke-with-response-stream + response: + body: + string: !!binary | + AAAApQAAAEs861eXCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnRaWE56WVdkbFUzUmhj + blFpT25zaWNtOXNaU0k2SW1GemMybHpkR0Z1ZENKOWZRPT0iLCJwIjoiYWJjIn1dU3b9AAAA+AAA + AEv8aFztCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pz + b24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4 + MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lQSFJvYVc1cmFXNW5JbjBzSW1OdmJuUmxiblJD + Ykc5amEwbHVaR1Y0SWpvd2ZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE + RUZHSElKS0wifajL48sAAADkAAAAS1l4Jm4LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10 + eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlK + amIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3dmWDA9 + IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldY + WVowMTIzNDUifbtHABEAAADQAAAASw3ZOCgLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10 + eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlK + amIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaVBpQlVhR1Vp + ZlN3aVkyOXVkR1Z1ZEVKc2IyTnJTVzVrWlhnaU9qRjlmUT09IiwicCI6ImFiIn25bWaoAAAAsgAA + AEvuKxwFCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pz + b24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5 + d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam94ZlgwPSIsInAiOiJhYmNkZWZnaCJ9cDKd + mwAAAPkAAABLwQh1XQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNh + dGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2 + WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUZWelpYSWlmU3dpWTI5dWRHVnVk + RUpzYjJOclNXNWtaWGdpT2pKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpB + QkNERUZHSElKS0xNTk9QUSJ9hcX/0gAAANkAAABLAMlaWQs6ZXZlbnQtdHlwZQcABWNodW5rDTpj + b250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0 + ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0 + SWpveWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9Q + UVJTVFUifVpq3h4AAADoAAAAS5yIy28LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl + BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIy + NTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlHaGhjeUo5TENK + amIyNTBaVzUwUW14dlkydEpibVJsZUNJNk0zMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1 + dnd4eXpBQkNEIn0ubaSPAAAAuAAAAEukmwSkCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt + dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5 + SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam96Zlgw + PSIsInAiOiJhYmNkZWZnaGlqa2xtbiJ9rs+WSgAAAOAAAABLrPiArgs6ZXZlbnQtdHlwZQcABWNo + dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu + dHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpY + aDBJam9pSUhKbGNYVmxjM1JsWkNCMGFHVWlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2pS + OWZRPT0iLCJwIjoiYWJjZGVmIn0WBTZCAAAArwAAAEt2W082CzpldmVudC10eXBlBwAFY2h1bmsN + OmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJi + eXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpH + VjRJam8wZlgwPSIsInAiOiJhYmNkZSJ9A/fd7gAAAPUAAABLBPiYXAs6ZXZlbnQtdHlwZQcABWNo + dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu + dHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpY + aDBJam9pSUdOMWNuSmxiblFnZDJWaGRHaGxjaUJwYmlKOUxDSmpiMjUwWlc1MFFteHZZMnRKYm1S + bGVDSTZOWDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3In3C+bj/AAAAwAAAAEttOa+q + CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l + c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJ + bU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam8xZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJz + dHV2In3xyGKDAAABDAAAAEuKgHnVCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcA + EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUw + Wlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJRk5sWVhSMGJHVWdZ + VzVrSUZOaGJpSjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2Tm4xOSIsInAiOiJhYmNkZWZn + aGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWCJ963WBJAAAANgAAABL + Palz6Qs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJ + anA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvMmZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v + cHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVCJ9HxAA7AAAAQIAAABLNbDHtAs6ZXZlbnQt + dHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5 + cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZ + U0k2ZXlKMFpYaDBJam9pSUVaeVlXNWphWE5qYnk0aWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pY + Z2lPamQ5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1O + T1BRUiJ9LBudaAAAAK4AAABLSztmhgs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH + ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1 + MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvM2ZYMD0iLCJw + IjoiYWJjZCJ9udoJSQAAARQAAABL2hCllgs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5 + cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpq + YjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUVrZ2JtVmxa + Q0IwYnlCMWMyVWlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2poOWZRPT0iLCJwIjoiYWJj + ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NSJ9 + ke149AAAAKwAAABLMfs15gs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs + aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBR + bXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvNGZYMD0iLCJwIjoiYWIi + feBIVcgAAADjAAAAS+tY+n4LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw + bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUw + UW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIUm9aU0JjSWlKOUxDSmpi + MjUwWlc1MFFteHZZMnRKYm1SbGVDSTZPWDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dSJ9 + XCFiXwAAALkAAABLmfstFAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs + aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBR + bXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvNWZYMD0iLCJwIjoiYWJj + ZGVmZ2hpamtsbW5vIn2CfEGxAAABCQAAAEtCYPalCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl + bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6 + ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2laMlYw + WDJOMWNuSmxiblJmZDJWaGRHaGxjbHdpSW4wc0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hN + SDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTSJ96PS/RgAA + ALUAAABLXAvAFQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv + bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0 + VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveE1IMTkiLCJwIjoiYWJjZGVmZ2hp + amsifa3oxsUAAADqAAAAS+ZImA8LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ + YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBa + VzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIUnZiMndnWm05eUlu + MHNJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam94TVgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w + cXJzdHV2d3gifTG/qNYAAAC0AAAAS2Fr6aULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10 + eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlK + amIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hNWDE5 + IiwicCI6ImFiY2RlZmdoaWoifeNmOaEAAADxAAAAS/F4PpwLOmV2ZW50LXR5cGUHAAVjaHVuaw06 + Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 + dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpv + aUlHVmhZMmdnWTJsMGVTSjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2TVRKOWZRPT0iLCJw + IjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBIn11ND8/AAAArAAAAEsx+zXmCzpldmVudC10 + eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlw + ZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJu + UkNiRzlqYTBsdVpHVjRJam94TW4xOSIsInAiOiJhYiJ9sqEFYgAAAOgAAABLnIjLbws6ZXZlbnQt + dHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5 + cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZ + U0k2ZXlKMFpYaDBJam9pSUhObGNHRnlZWFJsYkhrdUlFa2dkMmxzYkNKOUxDSmpiMjUwWlc1MFFt + eHZZMnRKYm1SbGVDSTZNVE45ZlE9PSIsInAiOiJhYmNkZWYiffB7RfsAAACzAAAAS9NLNbULOmV2 + ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn + ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZi + blJsYm5SQ2JHOWphMGx1WkdWNElqb3hNMzE5IiwicCI6ImFiY2RlZmdoaSJ9Y9vX5gAAANIAAABL + dxlrSAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZ + U0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUcxaGEyVWlmU3dpWTI5dWRHVnVkRUpzYjJOclNX + NWtaWGdpT2pFMGZYMD0iLCJwIjoiYWJjZCJ92g3LtAAAAMoAAABLJ4m3Cws6ZXZlbnQtdHlwZQcA + BWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVl + dmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5 + amEwbHVaR1Y0SWpveE5IMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUYi + fWDb9qgAAADnAAAASx7YXL4LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw + bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUw + UW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIUjNieUo5TENKamIyNTBa + VzUwUW14dlkydEpibVJsZUNJNk1UVjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3 + eHkiffZ18igAAADQAAAASw3ZOCgLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ + YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBa + VzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hOWDE5IiwicCI6 + ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMIn3iWd4+AAABBAAAAEu68DIU + CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l + c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZl + eUprWld4MFlTSTZleUowWlhoMElqb2lJSFJ2YjJ3aWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pY + Z2lPakUyZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1O + T1BRUlNUVVZXWFlaMDEifZS8YsEAAAC/AAAASxa72LQLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u + dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz + IjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElq + b3hObjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dSJ9yXXDhAAAANYAAABLgpnNiAs6ZXZl + bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl + LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pX + eDBZU0k2ZXlKMFpYaDBJam9pSUdOaGJHeHpMQ0o5TENKamIyNTBaVzUwUW14dlkydEpibVJsZUNJ + Nk1UZDlmUT09IiwicCI6ImFiY2QiffBLbZQAAACwAAAAS5TrT2ULOmV2ZW50LXR5cGUHAAVjaHVu + aw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7 + ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1 + WkdWNElqb3hOMzE5IiwicCI6ImFiY2RlZiJ9hboguQAAAP8AAABLTkiA/Qs6ZXZlbnQtdHlwZQcA + BWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVl + dmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlK + MFpYaDBJam9pSUc5dVpTQm1iM0lnWldGamFDSjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2 + TVRoOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKSyJ9GMZh + swAAALkAAABLmfstFAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNh + dGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2 + WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveE9IMTkiLCJwIjoiYWJjZGVm + Z2hpamtsbW5vIn0WCfBdAAABCgAAAEsFwIx1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt + dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5 + SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJR05wZEhr + dVBDOGlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2pFNWZYMD0iLCJwIjoiYWJjZGVmZ2hp + amtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjMiffD9n1EAAADe + AAAAS7LphkkLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24v + anNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRk + Rzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hPWDE5IiwicCI6ImFiY2RlZmdoaWpr + bG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoifXgABqwAAADZAAAASwDJ + WlkLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 + bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJ + NmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaWRHaHBibXRwYm1jaWZTd2lZMjl1ZEdWdWRFSnNiMk5y + U1c1a1pYZ2lPakl3ZlgwPSIsInAiOiJhYmNkZWZnIn1w5IiFAAAAxAAAAEuYuQlqCzpldmVudC10 + eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlw + ZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJu + UkNiRzlqYTBsdVpHVjRJam95TUgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiJ9 + LsRm7wAAAOkAAABLoeji3ws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs + aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBR + bXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pUGx4dUluMHNJbU52Ym5SbGJu + UkNiRzlqYTBsdVpHVjRJam95TVgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFC + Q0RFIn0DD2TYAAAAyQAAAEtgKc3bCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcA + EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUw + Wlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam95TVgxOSIsInAi + OiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFIn0o2NSyAAABVwAAAEvFQ4cPCzpldmVu + dC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2Ut + dHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEdGeWRDSTZleUp6ZEdG + eWRDSTZleUowYjI5c1ZYTmxJanA3SW5SdmIyeFZjMlZKWkNJNklqTmpaRFZqTkdSbUxURTFOREF0 + TkdabFpDMDVNek5tTFRjd04yWTVZMkU0TWpnMll5SXNJbTVoYldVaU9pSm5aWFJmWTNWeWNtVnVk + RjkzWldGMGFHVnlJbjE5TENKamIyNTBaVzUwUW14dlkydEpibVJsZUNJNk1qSjlmUT09IiwicCI6 + ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGRyJ9v9+JjgAAATEAAABL0zEF4gs6ZXZl + bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl + LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pX + eDBZU0k2ZXlKMGIyOXNWWE5sSWpwN0ltbHVjSFYwSWpvaWUxd2liRzlqWVhScGIyNWNJanBjSWxO + bFlYUjBiR1ZjSW4waWZYMHNJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam95TW4xOSIsInAiOiJh + YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyIn2K + F1mxAAAAxQAAAEul2SDaCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp + Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFt + eHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam95TW4xOSIsInAiOiJhYmNk + ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekEifds1SaAAAAFOAAAAS6izcvwLOmV2ZW50LXR5cGUHAAVj + aHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZl + bnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkR0Z5ZENJNmV5SnpkR0Z5ZENJNmV5SjBi + MjlzVlhObElqcDdJblJ2YjJ4VmMyVkpaQ0k2SWpKbE9UZGxNR0l3TFdKbFpqUXROR1EyTlMwNU56 + YzBMV1UyTVdSbE4ySmpORFUwWXlJc0ltNWhiV1VpT2lKblpYUmZZM1Z5Y21WdWRGOTNaV0YwYUdW + eUluMTlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2TWpSOWZRPT0iLCJwIjoiYWJjZGVmZ2hp + amtsbW5vcHFyc3R1dnd4In3SOnqOAAABBwAAAEv9UEjECzpldmVudC10eXBlBwAFY2h1bmsNOmNv + bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl + cyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowYjI5c1ZYTmxJ + anA3SW1sdWNIVjBJam9pZTF3aWJHOWpZWFJwYjI1Y0lqcGNJbE5oYmlCR2NtRnVZMmx6WTI5Y0lu + MGlmWDBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveU5IMTkiLCJwIjoiYWJjZGUifYxNAXQA + AAC/AAAASxa72LQLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp + b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlky + dFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3lOSDE5IiwicCI6ImFiY2RlZmdo + aWprbG1ub3BxcnN0dSJ92CO3QwAAANwAAABLyCnVKQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250 + ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMi + OiJleUp0WlhOellXZGxVM1J2Y0NJNmV5SnpkRzl3VW1WaGMyOXVJam9pZEc5dmJGOTFjMlVpZlgw + PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX + WFlaMDEifUVrSeoAAAJGAAAASx5XS5MLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl + BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKdFpY + UmhaR0YwWVNJNmV5SjFjMkZuWlNJNmV5SnBibkIxZEZSdmEyVnVjeUk2TkRJM0xDSnZkWFJ3ZFhS + VWIydGxibk1pT2pFMU5pd2lZMkZqYUdWU1pXRmtTVzV3ZFhSVWIydGxia052ZFc1MElqb3dMQ0pq + WVdOb1pWZHlhWFJsU1c1d2RYUlViMnRsYmtOdmRXNTBJam93ZlN3aWJXVjBjbWxqY3lJNmUzMHNJ + blJ5WVdObElqcDdmWDBzSW1GdFlYcHZiaTFpWldSeWIyTnJMV2x1ZG05allYUnBiMjVOWlhSeWFX + TnpJanA3SW1sdWNIVjBWRzlyWlc1RGIzVnVkQ0k2TkRJM0xDSnZkWFJ3ZFhSVWIydGxia052ZFc1 + MElqb3hOVFlzSW1sdWRtOWpZWFJwYjI1TVlYUmxibU41SWpvME16TXNJbVpwY25OMFFubDBaVXho + ZEdWdVkza2lPall4TENKallXTm9aVkpsWVdSSmJuQjFkRlJ2YTJWdVEyOTFiblFpT2pBc0ltTmhZ + MmhsVjNKcGRHVkpibkIxZEZSdmEyVnVRMjkxYm5RaU9qQjlmUT09IiwicCI6ImFiY2RlZmdoaWpr + bG1ub3BxcnN0dXZ3eHl6QUIifU+69xo= + headers: + Connection: + - keep-alive + Content-Type: + - application/vnd.amazon.eventstream + Date: + - Tue, 25 Mar 2025 14:40:18 GMT + Set-Cookie: test_set_cookie + Transfer-Encoding: + - chunked + X-Amzn-Bedrock-Content-Type: + - application/json + x-amzn-RequestId: + - 4b631f83-3042-446f-9552-70a93e64d9f3 + status: + code: 200 + message: OK +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please give one tool call for Seattle and one for San Francisco" + } + ] + }, + { + "role": "assistant", + "content": [ + { + "text": " The User has requested the current weather in Seattle and San Francisco. I need to use the \"get_current_weather\" tool for each city separately. I will make two tool calls, one for each city.\n" + }, + { + "toolUse": { + "toolUseId": "3cd5c4df-1540-4fed-933f-707f9ca8286c", + "name": "get_current_weather", + "input": { + "location": "Seattle" + } + } + }, + { + "toolUse": { + "toolUseId": "2e97e0b0-bef4-4d65-9774-e61de7bc454c", + "name": "get_current_weather", + "input": { + "location": "San Francisco" + } + } + } + ] + }, + { + "role": "user", + "content": [ + { + "toolResult": { + "toolUseId": "3cd5c4df-1540-4fed-933f-707f9ca8286c", + "content": [ + { + "json": { + "weather": "50 degrees and raining" + } + } + ] + } + }, + { + "toolResult": { + "toolUseId": "2e97e0b0-bef4-4d65-9774-e61de7bc454c", + "content": [ + { + "json": { + "weather": "70 degrees and sunny" + } + } + ] + } + } + ] + } + ], + "inferenceConfig": { + "max_new_tokens": 1000 + }, + "schemaVersion": "messages-v1", + "toolConfig": { + "tools": [ + { + "toolSpec": { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "inputSchema": { + "json": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + } + } + ] + } + } + headers: + Content-Length: + - '1383' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T144019Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-28fe3f85-95dafaf23d34b554c77b907f;Parent=9e7cef38599a1f15;Sampled=1 + amz-sdk-invocation-id: + - a2ec7eb1-6482-4b23-8a2e-79952f46945d + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.nova-micro-v1%3A0/invoke-with-response-stream + response: + body: + string: !!binary | + AAAA2wAAAEt6CQk5CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnRaWE56WVdkbFUzUmhj + blFpT25zaWNtOXNaU0k2SW1GemMybHpkR0Z1ZENKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v + cHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0In1MbjWlAAAA/AAAAEsJ + 6PotCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24N + Om1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlT + STZleUprWld4MFlTSTZleUowWlhoMElqb2lQSFJvYVc1cmFXNW5JbjBzSW1OdmJuUmxiblJDYkc5 + amEwbHVaR1Y0SWpvd2ZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZH + SElKS0xNTk9QIn257bMkAAAA2AAAAEs9qXPpCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt + dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5 + SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam93Zlgw + PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUIn0k + 4PgxAAAA2wAAAEt6CQk5CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp + Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFt + eHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lQaUJVYUdVZ2RHOXZiQ0o5TENK + amIyNTBaVzUwUW14dlkydEpibVJsZUNJNk1YMTkiLCJwIjoiYWJjZGVmZ2hpIn1X/XRLAAAA5QAA + AEtkGA/eCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pz + b24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5 + d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam94ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xt + bm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1NiJ9QpKrTgAAAOoA + AABL5kiYDws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9q + c29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpX + eDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUdoaGN5SjlMQ0pqYjI1MFpXNTBRbXh2WTJ0 + SmJtUmxlQ0k2TW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRiJ9kQRG + dQAAANMAAABLSnlC+As6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNh + dGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2 + WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveWZYMD0iLCJwIjoiYWJjZGVm + Z2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk8ifXBEvIMAAAEOAAAAS/BAKrULOmV2 + ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn + ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5Smta + V3gwWVNJNmV5SjBaWGgwSWpvaUlISmxkSFZ5Ym1Wa0lIUm9aU0JqZFhKeVpXNTBJbjBzSW1OdmJu + UmxiblJDYkc5amEwbHVaR1Y0SWpvemZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4 + eXpBQkNERUZHSElKS0xNTk9QUVIifcJLEH8AAADPAAAAS+9pOHsLOmV2ZW50LXR5cGUHAAVjaHVu + aw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7 + ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1 + WkdWNElqb3pmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSksi + fcMOLUgAAAEMAAAAS4qAedULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw + bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUw + UW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIZGxZWFJvWlhJZ1ptOXlJ + bjBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvMGZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v + cHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxIn0Td3V3AAAA1wAAAEu/+eQ4 + CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l + c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJ + bU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam8wZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJz + dHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlMifWjvBMQAAAERAAAASxLwKuYLOmV2ZW50LXR5cGUH + AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF + ZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5 + SjBaWGgwSWpvaUlHSnZkR2dnVTJWaGRIUnNaU0o5TENKamIyNTBaVzUwUW14dlkydEpibVJsZUNJ + Nk5YMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJT + VFVWV1hZWjAxMjM0NTYifWyeQxIAAADBAAAAS1BZhhoLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u + dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz + IjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElq + bzFmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3In1HRK7nAAABHAAAAEvqYO5XCzpl + dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh + Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUpr + Wld4MFlTSTZleUowWlhoMElqb2lJR0Z1WkNCVFlXNGdSbkpoYm1OcGMyTnZMaUJPYjNjaWZTd2lZ + Mjl1ZEdWdWRFSnNiMk5yU1c1a1pYZ2lPalo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJz + dHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEifQyx2dcAAADeAAAAS7LphkkLOmV2 + ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn + ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZi + blJsYm5SQ2JHOWphMGx1WkdWNElqbzJmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3 + eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoifXpuHuUAAAEHAAAAS/1QSMQLOmV2ZW50LXR5 + cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBl + BwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJ + NmV5SjBaWGgwSWpvaUlFa2dkMmxzYkNKOUxDSmpiMjUwWlc1MFFteHZZMnRKYm1SbGVDSTZOMzE5 + IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldY + WVowMTIzNCJ9icP47wAAALoAAABL3ltXxAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5 + cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpq + YjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvM2ZYMD0i + LCJwIjoiYWJjZGVmZ2hpamtsbW5vcCJ9VNMdhAAAAPgAAABL/Ghc7Qs6ZXZlbnQtdHlwZQcABWNo + dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu + dHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpY + aDBJam9pSUhCeWIzWnBaR1VpZlN3aVkyOXVkR1Z1ZEVKc2IyTnJTVzVrWlhnaU9qaDlmUT09Iiwi + cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMIn0cLXNNAAAA4AAAAEus + +ICuCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24N + Om1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lq + cDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam80ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w + cXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEifc1Vq6QAAADuAAAASxPIPs8L + OmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz + c2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5 + SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIUm9aU0JWYzJWeUluMHNJbU52Ym5SbGJuUkNiRzlqYTBs + dVpHVjRJam81ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCIn0/PSyFAAAA + swAAAEvTSzW1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u + L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRU + ZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam81ZlgwPSIsInAiOiJhYmNkZWZnaGki + fUTpCiwAAAD+AAAAS3MoqU0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw + bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUw + UW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIZHBkR2dnZEdobElHbHVa + bTl5YldGMGFXOXVJbjBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveE1IMTkiLCJwIjoiYWJj + ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQiJ9gG89/wAAALQAAABLYWvppQs6ZXZlbnQtdHlwZQcA + BWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVl + dmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5 + amEwbHVaR1Y0SWpveE1IMTkiLCJwIjoiYWJjZGVmZ2hpaiJ9SpFz4AAAAN0AAABL9Un8mQs6ZXZl + bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl + LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pX + eDBZU0k2ZXlKMFpYaDBJam9pTGp3dkluMHNJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam94TVgx + OSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzIn3q3S2RAAAAxQAAAEul2SDaCzpldmVudC10eXBl + BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA + BWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNi + RzlqYTBsdVpHVjRJam94TVgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekEifRu+ + F4wAAADgAAAAS6z4gK4LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGlj + YXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14 + dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaWRHaHBibXRwYm1jaWZTd2lZMjl1 + ZEdWdWRFSnNiMk5yU1c1a1pYZ2lPakV5ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbiJ9LE2TnQAA + ANgAAABLPalz6Qs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv + bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0 + VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveE1uMTkiLCJwIjoiYWJjZGVmZ2hp + amtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVCJ9TDoSGAAAAOgAAABLnIjLbws6 + ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNz + YWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlK + a1pXeDBZU0k2ZXlKMFpYaDBJam9pUGx4dVhHNGlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdp + T2pFemZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoifY0IpRYAAADhAAAAS5GY + qR4LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 + bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpw + N0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hNMzE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3Bx + cnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIifYxQECoAAADpAAAAS6Ho4t8L + OmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz + c2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5 + SmtaV3gwWVNJNmV5SjBaWGgwSWpvaVZHaGxJbjBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpv + eE5IMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERSJ9ER7hEwAAALMAAABL + 00s1tQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJ + anA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveE5IMTkiLCJwIjoiYWJjZGVmZ2hpIn0sgov2 + AAAA4AAAAEus+ICuCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZ + MnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJR04xY25KbGJuUWlmU3dpWTI5dWRH + VnVkRUpzYjJOclNXNWtaWGdpT2pFMWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW4ifcLGafwAAADB + AAAAS1BZhhoLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24v + anNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRk + Rzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hOWDE5IiwicCI6ImFiY2RlZmdoaWpr + bG1ub3BxcnN0dXZ3In3eiQEeAAABCgAAAEsFwIx1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl + bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6 + ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJSGRs + WVhSb1pYSWdhVzRnVTJWaGRIUnNaU0JwY3lBaWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pYZ2lP + akUyZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUoifXVaLBsA + AADFAAAAS6XZINoLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp + b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlky + dFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hObjE5IiwicCI6ImFiY2RlZmdo + aWprbG1ub3BxcnN0dXZ3eHl6QSJ9GZ5piQAAAPQAAABLOZix7As6ZXZlbnQtdHlwZQcABWNodW5r + DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi + Ynl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJ + am9pTlRBZ1pHVm5jbVZsY3lCaGJtUWdjbUZwYm1sdVp5SjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJt + UmxlQ0k2TVRkOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW4ifamK9XoAAADZAAAASwDJWlkLOmV2 + ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn + ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZi + blJsYm5SQ2JHOWphMGx1WkdWNElqb3hOMzE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3 + eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVIn1TzLKOAAAA2wAAAEt6CQk5CzpldmVudC10eXBlBwAF + Y2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2 + ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUow + WlhoMElqb2lMaUo5TENKamIyNTBaVzUwUW14dlkydEpibVJsZUNJNk1UaDlmUT09IiwicCI6ImFi + Y2RlZmdoaWprbG1ub3BxIn1LG/TKAAAA2QAAAEsAyVpZCzpldmVudC10eXBlBwAFY2h1bmsNOmNv + bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl + cyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJ + am94T0gxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BR + UlNUVSJ9MQPQswAAAPQAAABLOZix7As6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH + ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1 + MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUZSb1pTSjlMQ0pq + YjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2TVRsOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFy + c3R1dnd4eXpBQkNERUZHSElKS0wifZ8ruDEAAADeAAAAS7LphkkLOmV2ZW50LXR5cGUHAAVjaHVu + aw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7 + ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1 + WkdWNElqb3hPWDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktM + TU5PUFFSU1RVVldYWVoifXgABqwAAADVAAAAS8U5t1gLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u + dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz + IjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlH + TjFjbkpsYm5RaWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pYZ2lPakl3ZlgwPSIsInAiOiJhYmMi + fW1/DK8AAADgAAAAS6z4gK4LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw + bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUw + UW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3lNSDE5IiwicCI6ImFi + Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMSJ9mw0B + +AAAAQ0AAABLt+BQZQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNh + dGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2 + WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUhkbFlYUm9aWElnYVc0Z1UyRnVJ + RVp5WVc1amFYTmpieUJwY3lKOUxDSmpiMjUwWlc1MFFteHZZMnRKYm1SbGVDSTZNakY5ZlE9PSIs + InAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFIn1MXAtBAAAA2AAAAEs9qXPpCzpl + dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh + Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52 + Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam95TVgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 + d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUIn168Y5mAAABFgAAAEug0Pb2CzpldmVudC10eXBlBwAF + Y2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2 + ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUow + WlhoMElqb2lJRGN3SUdSbFozSmxaWE1nWVc1a0lITjFibTU1SW4wc0ltTnZiblJsYm5SQ2JHOWph + MGx1WkdWNElqb3lNbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJ + SktMTU5PUFFSU1RVVldYWVoifd/LaPYAAADMAAAAS6jJQqsLOmV2ZW50LXR5cGUHAAVjaHVuaw06 + Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 + dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdW + NElqb3lNbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0gifRDaM/AA + AAEDAAAASwjQ7gQLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp + b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlky + dEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUxpSjlMQ0pqYjI1MFpXNTBRbXh2WTJ0 + SmJtUmxlQ0k2TWpOOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZH + SElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0In38bbDJAAAArwAAAEt2W082CzpldmVudC10eXBlBwAF + Y2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2 + ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlq + YTBsdVpHVjRJam95TTMxOSIsInAiOiJhYmNkZSJ90lbQowAAANkAAABLAMlaWQs6ZXZlbnQtdHlw + ZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUH + AAVldmVudHsiYnl0ZXMiOiJleUp0WlhOellXZGxVM1J2Y0NJNmV5SnpkRzl3VW1WaGMyOXVJam9p + Wlc1a1gzUjFjbTRpZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdI + SUpLTE1OT1BRUlNUVVZXWFkifTqBfD4AAAJNAAAAS2mHeoILOmV2ZW50LXR5cGUHAAVjaHVuaw06 + Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5 + dGVzIjoiZXlKdFpYUmhaR0YwWVNJNmV5SjFjMkZuWlNJNmV5SnBibkIxZEZSdmEyVnVjeUk2TlRZ + NExDSnZkWFJ3ZFhSVWIydGxibk1pT2pVMkxDSmpZV05vWlZKbFlXUkpibkIxZEZSdmEyVnVRMjkx + Ym5RaU9qQXNJbU5oWTJobFYzSnBkR1ZKYm5CMWRGUnZhMlZ1UTI5MWJuUWlPakI5TENKdFpYUnlh + V056SWpwN2ZTd2lkSEpoWTJVaU9udDlmU3dpWVcxaGVtOXVMV0psWkhKdlkyc3RhVzUyYjJOaGRH + bHZiazFsZEhKcFkzTWlPbnNpYVc1d2RYUlViMnRsYmtOdmRXNTBJam8xTmpnc0ltOTFkSEIxZEZS + dmEyVnVRMjkxYm5RaU9qVTJMQ0pwYm5adlkyRjBhVzl1VEdGMFpXNWplU0k2TkRRMUxDSm1hWEp6 + ZEVKNWRHVk1ZWFJsYm1ONUlqbzJNaXdpWTJGamFHVlNaV0ZrU1c1d2RYUlViMnRsYmtOdmRXNTBJ + am93TENKallXTm9aVmR5YVhSbFNXNXdkWFJVYjJ0bGJrTnZkVzUwSWpvd2ZYMD0iLCJwIjoiYWJj + ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNIn0QhkpC + headers: + Connection: + - keep-alive + Content-Type: + - application/vnd.amazon.eventstream + Date: + - Tue, 25 Mar 2025 14:40:19 GMT + Set-Cookie: test_set_cookie + Transfer-Encoding: + - chunked + X-Amzn-Bedrock-Content-Type: + - application/json + x-amzn-RequestId: + - 1c7282d2-8bd0-4979-ac7a-c6edde93f739 + status: + code: 200 + message: OK +version: 1 diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_with_content_tool_call[anthropic.claude].yaml b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_with_content_tool_call[anthropic.claude].yaml new file mode 100644 index 0000000000..df7dbe8b80 --- /dev/null +++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/cassettes/test_invoke_model_with_response_stream_with_content_tool_call[anthropic.claude].yaml @@ -0,0 +1,484 @@ +interactions: +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please give one tool call for Seattle and one for San Francisco", + "type": "text" + } + ] + } + ], + "anthropic_version": "bedrock-2023-05-31", + "tools": [ + { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + ], + "max_tokens": 1000 + } + headers: + Content-Length: + - '513' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T163434Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-9caf13be-645b4e873de5413a21fd5559;Parent=86c9f4d15772db4a;Sampled=1 + amz-sdk-invocation-id: + - cb26d944-c107-4af2-9e43-c712c373e0f2 + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-sonnet-20240620-v1%3A0/invoke-with-response-stream + response: + body: + string: !!binary | + AAAB2QAAAEvLlYn8CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj + MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVU1SGFI + QmhlVXhGTlRKTWQxUjZZMmRuUzNWa1kzRWlMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV + aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHpMVFV0YzI5dWJtVjBMVEl3 + TWpRd05qSXdJaXdpWTI5dWRHVnVkQ0k2VzEwc0luTjBiM0JmY21WaGMyOXVJanB1ZFd4c0xDSnpk + Rzl3WDNObGNYVmxibU5sSWpwdWRXeHNMQ0oxYzJGblpTSTZleUpwYm5CMWRGOTBiMnRsYm5NaU9q + TTVNaXdpYjNWMGNIVjBYM1J2YTJWdWN5STZOSDE5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w + cXJzdHV2d3h5ekEifcxo58YAAAEXAAAAS52w30YLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu + dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi + ZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOXpkR0Z5ZENJc0ltbHVaR1Y0SWpvd0xDSmpi + MjUwWlc1MFgySnNiMk5ySWpwN0luUjVjR1VpT2lKMFpYaDBJaXdpZEdWNGRDSTZJaUo5ZlE9PSIs + InAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla + MDEyMzQifZCt+WAAAAD5AAAAS8EIdV0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl + BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVY + QmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJ + NmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSkRaWEowWVdsdWJIa2hJRWtp + ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm8ifdd8tHsAAAEbAAAAS1hAMkcLOmV2ZW50LXR5cGUH + AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF + ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0lt + bHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhR + aU9pSW5iR3dnZFhObElIUm9aU0JuWlhRaWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1 + dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTIn16qOayAAABFAAAAEvaEKWWCzpldmVudC10eXBlBwAF + Y2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2 + ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1 + WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlP + aUpmWTNWeWNtVnVkRjkzWldGMGFHVnlJR1oxYm1OMGFXOXVJbjE5IiwicCI6ImFiY2RlZmdoaWpr + bG1ub3BxcnN0dXZ3eHl6In27RoiRAAABBAAAAEu68DIUCzpldmVudC10eXBlBwAFY2h1bmsNOmNv + bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl + cyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dM + Q0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnZEc4Z1ky + aGxZMnNnZEdobElIZGxZWFJvWlhJZ1ptOXlJbjE5IiwicCI6ImFiY2RlZmdoaWoifUwnIAgAAAE6 + AAAAS6ThNPMLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24v + anNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVk + RjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRH + VjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdZbTkwYUNCVFpXRjBkR3hsSUdGdVpDQlRZVzRnUm5K + aGJtTnBjMk52SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpL + TE1OT1BRUlNUVVZXWFlaMDEyMyJ9sJyB3QAAATEAAABL0zEF4gs6ZXZlbnQtdHlwZQcABWNodW5r + DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi + Ynl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJ + am93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJdUlF + a25iR3dnYldGclpTQjBkMjhnYzJWd1lYSmhkR1VpZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w + cXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyIn2ePEn5AAABCQAAAEtCYPal + CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l + c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWph + MTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pX + eDBZU0lzSW5SbGVIUWlPaUlnWm5WdVkzUnBiMjRnWTJGc2JITWdkMmwwYUdsdUluMTkiLCJwIjoi + YWJjZGVmZ2hpamtsbW5vcHFycyJ91VmQFwAAASAAAABLjrG70As6ZXZlbnQtdHlwZQcABWNodW5r + DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi + Ynl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJ + am93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ2RH + aGxJSE5oYldVZ1lteHZZMnNpZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFC + Q0RFRkdISUpLTE1OT1BRUlNUVVZXWCJ98HrGKgAAARMAAABLaDB5hgs6ZXZlbnQtdHlwZQcABWNo + dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu + dHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpH + VjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJ + Z1ptOXlJSFJvWlhObElHTnBkR2xsY3k0aWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1 + dnd4eXpBQkNERUZHIn0uOeatAAAAxAAAAEuYuQlqCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl + bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6 + ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTl6ZEc5d0lpd2lhVzVrWlhnaU9qQjkiLCJw + IjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSCJ9/DIv/gAAAUwAAABL0nMhnAs6 + ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNz + YWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5 + emRHRnlkQ0lzSW1sdVpHVjRJam94TENKamIyNTBaVzUwWDJKc2IyTnJJanA3SW5SNWNHVWlPaUow + YjI5c1gzVnpaU0lzSW1sa0lqb2lkRzl2YkhWZlltUnlhMTh3TVV0aGRHbEhhV3BXUm1JNWVYVk5V + R051Vm1zek9HVWlMQ0p1WVcxbElqb2laMlYwWDJOMWNuSmxiblJmZDJWaGRHaGxjaUlzSW1sdWNI + VjBJanA3ZlgxOSIsInAiOiJhYmNkZWZnaGlqIn1C2DPVAAAA/QAAAEs0iNOdCzpldmVudC10eXBl + BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA + BWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJ + bWx1WkdWNElqb3hMQ0prWld4MFlTSTZleUowZVhCbElqb2lhVzV3ZFhSZmFuTnZibDlrWld4MFlT + SXNJbkJoY25ScFlXeGZhbk52YmlJNklpSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ubyJ9eV3i + iQAAAQsAAABLOKClxQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNh + dGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1 + ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam94TENKa1pXeDBZU0k2ZXlKMGVYQmxJ + am9pYVc1d2RYUmZhbk52Ymw5a1pXeDBZU0lzSW5CaGNuUnBZV3hmYW5OdmJpSTZJbnRjSW14dlky + RjBhVzhpZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcSJ9YJXmlgAAATYAAABLYRHZ8gs6ZXZl + bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl + LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pX + eDBZU0lzSW1sdVpHVjRJam94TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pYVc1d2RYUmZhbk52Ymw5 + a1pXeDBZU0lzSW5CaGNuUnBZV3hmYW5OdmJpSTZJbTVjSWpvZ1hDSlRaV0YwZENKOWZRPT0iLCJw + IjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAx + MjMifb0l8mwAAAD3AAAAS344yzwLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ + YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJ + am9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpveExDSmtaV3gwWVNJNmV5 + SjBlWEJsSWpvaWFXNXdkWFJmYW5OdmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFuTnZiaUk2SW14 + bFhDSjlJbjE5IiwicCI6ImFiY2RlIn1aCch2AAAAugAAAEveW1fECzpldmVudC10eXBlBwAFY2h1 + bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50 + eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTl6ZEc5d0lpd2lhVzVrWlhn + aU9qRjkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4In3PkCZGAAABVgAAAEv4I66/Czpl + dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh + Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTl6 + ZEdGeWRDSXNJbWx1WkdWNElqb3lMQ0pqYjI1MFpXNTBYMkpzYjJOcklqcDdJblI1Y0dVaU9pSjBi + MjlzWDNWelpTSXNJbWxrSWpvaWRHOXZiSFZmWW1SeWExOHdNVlI2WWpNMVJYbGtTMGhYZWpSVlds + QXpjSFZVWWtZaUxDSnVZVzFsSWpvaVoyVjBYMk4xY25KbGJuUmZkMlZoZEdobGNpSXNJbWx1Y0hW + MElqcDdmWDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0In0JMwU+AAABFQAAAEvncIwmCzpl + dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh + Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlr + Wld4MFlTSXNJbWx1WkdWNElqb3lMQ0prWld4MFlTSTZleUowZVhCbElqb2lhVzV3ZFhSZmFuTnZi + bDlrWld4MFlTSXNJbkJoY25ScFlXeGZhbk52YmlJNklpSjlmUT09IiwicCI6ImFiY2RlZmdoaWpr + bG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTSJ967ZY0QAAAScAAABLPJFnwAs6ZXZlbnQtdHlw + ZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUH + AAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lz + SW1sdVpHVjRJam95TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pYVc1d2RYUmZhbk52Ymw5a1pXeDBZ + U0lzSW5CaGNuUnBZV3hmYW5OdmJpSTZJbnRjSW14dlkyRjBhVzl1SW4xOSIsInAiOiJhYmNkZWZn + aGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlMifb3cxEIAAAESAAAAS1VQUDYL + OmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz + c2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amEx + OWtaV3gwWVNJc0ltbHVaR1Y0SWpveUxDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWFXNXdkWFJmYW5O + dmJsOWtaV3gwWVNJc0luQmhjblJwWVd4ZmFuTnZiaUk2SWx3aU9pQmNJbE5oYmlBaWZYMD0iLCJw + IjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4In0nyZ4GAAAA/AAAAEsJ6PotCzpldmVudC10eXBl + BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA + BWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJ + bWx1WkdWNElqb3lMQ0prWld4MFlTSTZleUowZVhCbElqb2lhVzV3ZFhSZmFuTnZibDlrWld4MFlT + SXNJbkJoY25ScFlXeGZhbk52YmlJNklrWnlZVzVqYVhOamJ5SjlmUT09IiwicCI6ImFiIn3c7Eog + AAABHAAAAEvqYO5XCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVk + R1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3lMQ0prWld4MFlTSTZleUowZVhCbElq + b2lhVzV3ZFhSZmFuTnZibDlrWld4MFlTSXNJbkJoY25ScFlXeGZhbk52YmlJNklsd2lmU0o5ZlE9 + PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1Aiffd3t8IA + AAC/AAAASxa72LQLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp + b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRH + VnVkRjlpYkc5amExOXpkRzl3SWl3aWFXNWtaWGdpT2pKOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w + cXJzdHV2d3h5ekFCQyJ9Gq1O0QAAASQAAABLezEdEAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250 + ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMi + OiJleUowZVhCbElqb2liV1Z6YzJGblpWOWtaV3gwWVNJc0ltUmxiSFJoSWpwN0luTjBiM0JmY21W + aGMyOXVJam9pZEc5dmJGOTFjMlVpTENKemRHOXdYM05sY1hWbGJtTmxJanB1ZFd4c2ZTd2lkWE5o + WjJVaU9uc2liM1YwY0hWMFgzUnZhMlZ1Y3lJNk1UTTBmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1u + b3BxcnN0dXZ3eHl6QUJDREVGR0gifak0N2MAAAFAAAAASxeDzJ0LOmV2ZW50LXR5cGUHAAVjaHVu + aw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7 + ImJ5dGVzIjoiZXlKMGVYQmxJam9pYldWemMyRm5aVjl6ZEc5d0lpd2lZVzFoZW05dUxXSmxaSEp2 + WTJzdGFXNTJiMk5oZEdsdmJrMWxkSEpwWTNNaU9uc2lhVzV3ZFhSVWIydGxia052ZFc1MElqb3pP + VElzSW05MWRIQjFkRlJ2YTJWdVEyOTFiblFpT2prd0xDSnBiblp2WTJGMGFXOXVUR0YwWlc1amVT + STZNemN5TWl3aVptbHljM1JDZVhSbFRHRjBaVzVqZVNJNk56YzVmWDA9IiwicCI6ImFiY2RlZiJ9 + uDbBJw== + headers: + Connection: + - keep-alive + Content-Type: + - application/vnd.amazon.eventstream + Date: + - Tue, 25 Mar 2025 16:34:35 GMT + Set-Cookie: test_set_cookie + Transfer-Encoding: + - chunked + X-Amzn-Bedrock-Content-Type: + - application/json + x-amzn-RequestId: + - 17808f83-6c84-4f3d-9e81-4007fd8f848e + status: + code: 200 + message: OK +- request: + body: |- + { + "messages": [ + { + "role": "user", + "content": [ + { + "text": "What is the weather in Seattle and San Francisco today? Please give one tool call for Seattle and one for San Francisco", + "type": "text" + } + ] + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Certainly! I'll use the get_current_weather function to check the weather for both Seattle and San Francisco. I'll make two separate function calls within the same block for these cities." + }, + { + "type": "tool_use", + "id": "toolu_bdrk_01KatiGijVFb9yuMPcnVk38e", + "name": "get_current_weather", + "input": { + "location": "Seattle" + } + }, + { + "type": "tool_use", + "id": "toolu_bdrk_01Tzb35EydKHWz4UZP3puTbF", + "name": "get_current_weather", + "input": { + "location": "San Francisco" + } + } + ] + }, + { + "role": "user", + "content": [ + { + "type": "tool_result", + "tool_use_id": "toolu_bdrk_01KatiGijVFb9yuMPcnVk38e", + "content": "50 degrees and raining" + }, + { + "type": "tool_result", + "tool_use_id": "toolu_bdrk_01Tzb35EydKHWz4UZP3puTbF", + "content": "70 degrees and sunny" + } + ] + } + ], + "anthropic_version": "bedrock-2023-05-31", + "tools": [ + { + "name": "get_current_weather", + "description": "Get the current weather in a given location.", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The name of the city" + } + }, + "required": [ + "location" + ] + } + } + ], + "max_tokens": 1000 + } + headers: + Content-Length: + - '1297' + User-Agent: + - Boto3/1.35.56 md/Botocore#1.35.56 ua/2.0 os/linux#6.1.0-1034-oem md/arch#x86_64 + lang/python#3.10.12 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.35.56 + X-Amz-Date: + - 20250325T163438Z + X-Amz-Security-Token: + - test_aws_security_token + X-Amzn-Trace-Id: + - Root=1-feef9d11-6a09175d24533ea9968f07ff;Parent=952177b027cf0daa;Sampled=1 + amz-sdk-invocation-id: + - 5ac7874b-78a1-4e44-8fa5-7afeabdc1343 + amz-sdk-request: + - attempt=1 + authorization: + - Bearer test_aws_authorization + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-sonnet-20240620-v1%3A0/invoke-with-response-stream + response: + body: + string: !!binary | + AAABwwAAAEvhxQbfCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj + MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVRScFFV + Rk5TMjlLVW1SdVpYUnlSa1ZoZFRVMk9Vc2lMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV + aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHpMVFV0YzI5dWJtVjBMVEl3 + TWpRd05qSXdJaXdpWTI5dWRHVnVkQ0k2VzEwc0luTjBiM0JmY21WaGMyOXVJanB1ZFd4c0xDSnpk + Rzl3WDNObGNYVmxibU5sSWpwdWRXeHNMQ0oxYzJGblpTSTZleUpwYm5CMWRGOTBiMnRsYm5NaU9q + WXdNeXdpYjNWMGNIVjBYM1J2YTJWdWN5STZNbjE5ZlE9PSIsInAiOiJhYmNkZSJ9UzZi8gAAAPIA + AABLtthETAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9q + c29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRG + OWliRzlqYTE5emRHRnlkQ0lzSW1sdVpHVjRJam93TENKamIyNTBaVzUwWDJKc2IyTnJJanA3SW5S + NWNHVWlPaUowWlhoMElpd2lkR1Y0ZENJNklpSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3Bx + cnN0In2THpBxAAABIgAAAEv0ceiwCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcA + EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJs + SWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZl + eUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUpjYmx4dVFtRnpaU0o5ZlE9PSIs + InAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla + MDEyMzQ1NjcifaXZFy8AAAEvAAAASwzhLAELOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10 + eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlK + MGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gw + WVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSmtJRzl1SUhSb1pTQnla + WE4xYkhSekxDQm9aWEpsSW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RF + RkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQifaZF9F4AAAE+AAAAS1FhkjMLOmV2ZW50LXR5cGUH + AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF + ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0lt + bHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhR + aU9pSW5jeUIwYUdVZ2QyVmhkR2hsY2lCcGJtWnZjbTFoZEdsdmJpQm1iM0lnVTJWaGRIUnNaU0Jo + Ym1RZ1UyRnVJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktM + TU4ifVbXVJMAAAEnAAAASzyRZ8ALOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ + YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJ + am9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5 + SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdSbkpoYm1OcGMyTnZJSFJ2WkdG + NU9seHVYRzR4SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpL + TE1OT1BRUlNUVVZXIn099AtGAAABOAAAAEveIWeTCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl + bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6 + ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0pr + Wld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUl1SUZObFlYUjBi + R1U2SUZSb1pTQmpkWEp5Wlc1MElIZGxZWFJvWlhJZ2FXNGdVMlZoZEhSc1pTSjlmUT09IiwicCI6 + ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMIn18xkatAAABEgAAAEtVUFA2 + CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l + c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWph + MTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pX + eDBZU0lzSW5SbGVIUWlPaUlnYVhNZ05UQWdaR1ZuY21WbGN5QmhibVFnY21GcGJtbHVaeUo5ZlE9 + PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdCJ9mICI9AAAAP0AAABLNIjTnQs6ZXZlbnQtdHlw + ZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUH + AAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lz + SW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxl + SFFpT2lJdVhHNHlMaUJUWVc0Z1JuSmhibU5wYzJOdkluMTkiLCJwIjoiYWJjZGVmZ2hpamsifcEE + 25AAAAFKAAAAS10z1DwLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGlj + YXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5 + dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJs + SWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSTZJRlJvWlNCamRYSnlaVzUwSUhkbFlYUm9a + WElnYVc0Z1UyRnVJRVp5WVc1amFYTmpieUJwY3lKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v + cHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjMifbnZTbQAAAEzAAAAS6nx + VoILOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 + bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5 + amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlr + Wld4MFlTSXNJblJsZUhRaU9pSWdOekFnWkdWbmNtVmxjeUJoYm1RZ2MzVnVibmt1SW4xOSIsInAi + OiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEy + MzQ1Njc4In09zRUvAAAA+QAAAEvBCHVdCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw + ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBl + WEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlT + STZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUpjYmx4dVFYTWdlVzkxSUdO + aGJpQnpaV1VzSW4xOSIsInAiOiJhYmNkZWZnIn1QpKk+AAABJQAAAEtGUTSgCzpldmVudC10eXBl + BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA + BWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJ + bWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVI + UWlPaUlnZEdobGNtVW5jeUJ4ZFdsMFpTQmhJR1JwWm1abGNtVnVZMlVnYVc0Z2RHaGxJbjE5Iiwi + cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREUifaUyG3gAAAE7AAAAS5mBHUMLOmV2 + ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn + ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWta + V3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlT + SXNJblJsZUhRaU9pSWdkMlZoZEdobGNpQmlaWFIzWldWdUlIUm9aWE5sSUhSM2J5QlhaWE4wSW4x + OSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX + WFlaMDEyMzQifd2z7pkAAAD4AAAAS/xoXO0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10 + eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlK + MGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gw + WVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdRMjloYzNRZ1kybDBh + V1Z6SUhSdlpHRjVMaUo5ZlE9PSIsInAiOiJhYiJ9Rso+GgAAATYAAABLYRHZ8gs6ZXZlbnQtdHlw + ZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUH + AAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lz + SW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxl + SFFpT2lJZ1UyVmhkSFJzWlNCcGN5QmxlSEJsY21sbGJtTnBibWNnWTI5dmJHVnlJSFJsYlhCbGNt + RjBkWEpsY3lCM2FYUm9JbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUIifTMg + TKgAAAElAAAAS0ZRNKALOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGlj + YXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5 + dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJs + SWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdjbUZwYml3Z2QyaHBZMmdnYVhNZ1ptRnBj + bXg1SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BR + UlNUVSJ9T2tXLQAAAScAAABLPJFnwAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH + ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhC + bElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2 + ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ2RIbHdhV05oYkNCbWIzSWdk + R2hsSUdOcGRIa3VJRTl1SW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RF + RkdISUpLTE1OT1BRUlMifdjQGr4AAAEQAAAASy+QA1YLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u + dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz + IjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xD + SmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdkR2hsSUc5 + MGFHVnlJR2hoYm1Rc0lGTmhiaUJHY21GdVkybHpZMjhnYVhNaWZYMD0iLCJwIjoiYWJjZGVmZ2hp + aiJ906llVwAAAR4AAABLkKC9Nws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBh + cHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElq + b2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlK + MGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ1pXNXFiM2xwYm1jZ2QyRnliV1Z5 + SUhSbGJYQmxjbUYwZFhKbGN5QjNhWFJvSW4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 + d3gifd59qdwAAAEoAAAAS77B8BELOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ + YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJ + am9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5 + SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdjM1Z1Ym5rZ1kyOXVaR2wwYVc5 + dWN5d2diV0ZyYVc1bklHbDBJR0VnY0d4bFlYTmhiblFnWkdGNUluMTkiLCJwIjoiYWJjZGVmZ2hp + amtsbW5vcHFyc3R1diJ9H4Nw/wAAASsAAABL+WGKwQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250 + ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMi + OiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENK + a1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ2FXNGdkR2hs + SUVKaGVTQkJjbVZoTGx4dVhHNUpjeUo5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 + d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXIn1ePiFEAAABGwAAAEtYQDJHCzpldmVudC10eXBl + BwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA + BWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJ + bWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVI + UWlPaUlnZEdobGNtVWdZVzU1ZEdocGJtY2daV3h6WlNCNWIzVWlmWDA9IiwicCI6ImFiY2RlZmdo + aWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGRyJ9IJonHgAAAQwAAABLioB51Qs6ZXZlbnQtdHlwZQcA + BWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVl + dmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1s + dVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFp + T2lJblpDQnNhV3RsSUhSdkluMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE + RUZHSElKS0wifRFLQMQAAAEgAAAAS46xu9ALOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10 + eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlK + MGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gw + WVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdhMjV2ZHlCaFltOTFk + Q0IwYUdVZ2QyVmhkR2hsY2lKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpB + QkNERUZHSElKS0wifZVK5CQAAAEJAAAAS0Jg9qULOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu + dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi + ZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmta + V3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdhVzRnZEdobGMy + VWdZMmwwYVdWeklHOXlJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3In3JZtxRAAAB + GAAAAEsf4EiXCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u + L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1 + ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElqb2lk + R1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnWVc1NUlHOTBhR1Z5SUd4dlkyRjBhVzl1Y3lKOWZR + PT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSCJ9eWu/OgAAANwAAABL + yCnVKQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u + DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWli + RzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRG + OWtaV3gwWVNJc0luUmxlSFFpT2lJL0luMTkiLCJwIjoiYWIifYtZDXoAAADFAAAAS6XZINoLOmV2 + ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn + ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOXpk + Rzl3SWl3aWFXNWtaWGdpT2pCOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RF + RkdISSJ9pG6vOAAAARcAAABLnbDfRgs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH + ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhC + bElqb2liV1Z6YzJGblpWOWtaV3gwWVNJc0ltUmxiSFJoSWpwN0luTjBiM0JmY21WaGMyOXVJam9p + Wlc1a1gzUjFjbTRpTENKemRHOXdYM05sY1hWbGJtTmxJanB1ZFd4c2ZTd2lkWE5oWjJVaU9uc2li + M1YwY0hWMFgzUnZhMlZ1Y3lJNk1UUTJmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dSJ9 + RviKwQAAAWMAAABLkeKZSQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs + aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2li + V1Z6YzJGblpWOXpkRzl3SWl3aVlXMWhlbTl1TFdKbFpISnZZMnN0YVc1MmIyTmhkR2x2YmsxbGRI + SnBZM01pT25zaWFXNXdkWFJVYjJ0bGJrTnZkVzUwSWpvMk1ETXNJbTkxZEhCMWRGUnZhMlZ1UTI5 + MWJuUWlPakUwTml3aWFXNTJiMk5oZEdsdmJreGhkR1Z1WTNraU9qVXdNak1zSW1acGNuTjBRbmww + WlV4aGRHVnVZM2tpT2pVMU9IMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE + RUZHSElKS0xNTk8ifQgFpq0= + headers: + Connection: + - keep-alive + Content-Type: + - application/vnd.amazon.eventstream + Date: + - Tue, 25 Mar 2025 16:34:38 GMT + Set-Cookie: test_set_cookie + Transfer-Encoding: + - chunked + X-Amzn-Bedrock-Content-Type: + - application/json + x-amzn-RequestId: + - 8376cb65-4e45-4f96-a8fc-31cefffb8ca6 + status: + code: 200 + message: OK +version: 1 diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_bedrock.py b/instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_bedrock.py index e6afe2ceb3..bd2211c56c 100644 --- a/instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_bedrock.py +++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_bedrock.py @@ -1146,7 +1146,7 @@ def set_if_not_none(config, key, value): if system: body["system"] = system if tools: - body["toolConfig"] = {"tools": tools} + body["toolConfig"] = tools elif llm_model == "amazon.titan-text-lite-v1": config = {} set_if_not_none(config, "maxTokenCount", max_tokens) @@ -1376,28 +1376,234 @@ def test_invoke_model_with_content_different_events( assert_message_in_logs(logs[4], "gen_ai.choice", choice_body, span) +class AnthropicClaudeModel: + @staticmethod + def user_message(prompt: str): + return { + "text": prompt, + "type": "text", + } + + @staticmethod + def tool_config(): + return get_anthropic_tool_config() + + @staticmethod + def assistant_message(response): + return {"role": response["role"], "content": response["content"]} + + @staticmethod + def tool_requests_ids(response): + return [ + content["id"] + for content in response["content"] + if content["type"] == "tool_use" + ] + + @staticmethod + def tool_requests_ids_from_stream(stream_content): + return [ + item["id"] for item in stream_content if item["type"] == "tool_use" + ] + + @staticmethod + def tool_calls_results(tool_requests_ids): + assert len(tool_requests_ids) == 2 + + return { + "role": "user", + "content": [ + { + "type": "tool_result", + "tool_use_id": tool_requests_ids[0], + "content": "50 degrees and raining", + }, + { + "type": "tool_result", + "tool_use_id": tool_requests_ids[1], + "content": "70 degrees and sunny", + }, + ], + } + + @staticmethod + def tool_messages(tool_requests_ids, tool_call_result, expect_content): + tool_message_0 = { + "id": tool_requests_ids[0], + "content": tool_call_result["content"][0]["content"] + if expect_content + else None, + } + tool_message_1 = { + "id": tool_requests_ids[1], + "content": tool_call_result["content"][1]["content"] + if expect_content + else None, + } + return tool_message_0, tool_message_1 + + @staticmethod + def choice_content(response): + return response["content"] + + @staticmethod + def get_stream_body_content(body): + content = [] + content_block = {} + input_json_buf = "" + for event in body: + json_bytes = event["chunk"].get("bytes", b"") + decoded = json_bytes.decode("utf-8") + chunk = json.loads(decoded) + + if (message_type := chunk.get("type")) is not None: + if message_type == "content_block_start": + content_block = chunk["content_block"] + elif message_type == "content_block_delta": + if chunk["delta"]["type"] == "text_delta": + content_block["text"] += chunk["delta"]["text"] + elif chunk["delta"]["type"] == "input_json_delta": + input_json_buf += chunk["delta"]["partial_json"] + elif message_type == "content_block_stop": + if input_json_buf: + content_block["input"] = json.loads(input_json_buf) + content.append(content_block) + content_block = None + input_json_buf = "" + + return content + + +class AmazonNovaModel: + @staticmethod + def user_message(prompt: str): + return { + "text": prompt, + } + + @staticmethod + def assistant_message(response): + return response["output"]["message"] + + @staticmethod + def tool_config(): + return get_tool_config() + + @staticmethod + def tool_requests_ids(response): + return [ + content["toolUse"]["toolUseId"] + for content in response["output"]["message"]["content"] + if "toolUse" in content + ] + + @staticmethod + def tool_requests_ids_from_stream(stream_content): + return [ + item["toolUse"]["toolUseId"] + for item in stream_content + if "toolUse" in item + ] + + @staticmethod + def tool_calls_results(tool_requests_ids): + assert len(tool_requests_ids) == 2 + + return { + "role": "user", + "content": [ + { + "toolResult": { + "toolUseId": tool_requests_ids[0], + "content": [ + {"json": {"weather": "50 degrees and raining"}} + ], + } + }, + { + "toolResult": { + "toolUseId": tool_requests_ids[1], + "content": [ + {"json": {"weather": "70 degrees and sunny"}} + ], + } + }, + ], + } + + @staticmethod + def tool_messages(tool_requests_ids, tool_call_result, expect_content): + tool_message_0 = { + "id": tool_requests_ids[0], + "content": tool_call_result["content"][0]["toolResult"]["content"] + if expect_content + else None, + } + tool_message_1 = { + "id": tool_requests_ids[1], + "content": tool_call_result["content"][1]["toolResult"]["content"] + if expect_content + else None, + } + return tool_message_0, tool_message_1 + + @staticmethod + def choice_content(response): + return response["output"]["message"]["content"] + + @staticmethod + def get_stream_body_content(body): + content = [] + content_block = {} + tool_use = {} + for event in body: + json_bytes = event["chunk"].get("bytes", b"") + decoded = json_bytes.decode("utf-8") + chunk = json.loads(decoded) + + if "contentBlockDelta" in chunk: + delta = chunk["contentBlockDelta"]["delta"] + if "text" in delta: + content_block.setdefault("text", "") + content_block["text"] += delta["text"] + elif "toolUse" in delta: + tool_use["toolUse"]["input"] = json.loads( + delta["toolUse"]["input"] + ) + elif "contentBlockStart" in chunk: + if content_block: + content.append(content_block) + content_block = {} + start = chunk["contentBlockStart"]["start"] + if "toolUse" in start: + tool_use = start + elif "contentBlockStop" in chunk: + if tool_use: + content.append(tool_use) + tool_use = {} + elif "messageStop" in chunk: + if content_block: + content.append(content_block) + content_block = {} + + return content + + def invoke_model_tool_call( span_exporter, log_exporter, bedrock_runtime_client, llm_model_value, + llm_model_config, expect_content, ): # pylint:disable=too-many-locals,too-many-statements - messages = [ - { - "role": "user", - "content": [ - { - "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco", - "type": "text", - } - ], - } - ] + user_prompt = "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco" + user_msg = llm_model_config.user_message(user_prompt) + messages = [{"role": "user", "content": [user_msg]}] max_tokens = 1000 - tool_config = get_anthropic_tool_config() + tool_config = llm_model_config.tool_config() body = get_invoke_model_body( llm_model_value, messages=messages, @@ -1415,36 +1621,13 @@ def invoke_model_tool_call( new_stream = io.BytesIO(response_0_raw_body) response_0["body"] = StreamingBody(new_stream, len(response_0_raw_body)) - tool_requests_ids = [ - content["id"] - for content in response_0_body["content"] - if content["type"] == "tool_use" - ] + tool_requests_ids = llm_model_config.tool_requests_ids(response_0_body) assert len(tool_requests_ids) == 2 - tool_call_result = { - "role": "user", - "content": [ - { - "type": "tool_result", - "tool_use_id": tool_requests_ids[0], - "content": "50 degrees and raining", - }, - { - "type": "tool_result", - "tool_use_id": tool_requests_ids[1], - "content": "70 degrees and sunny", - }, - ], - } - # remove extra attributes from response - response_0_body.pop("id") - response_0_body.pop("stop_reason") - response_0_body.pop("stop_sequence") - response_0_body.pop("usage") - response_0_body.pop("model") - response_0_body.pop("type") - messages.append(response_0_body) + assistant_message = llm_model_config.assistant_message(response_0_body) + tool_call_result = llm_model_config.tool_calls_results(tool_requests_ids) + + messages.append(assistant_message) messages.append(tool_call_result) body = get_invoke_model_body( @@ -1458,6 +1641,12 @@ def invoke_model_tool_call( modelId=llm_model_value, ) + response_1_raw_body = response_1["body"].read() + response_1_body = json.loads(response_1_raw_body) + # replenish body for span assertions + new_stream = io.BytesIO(response_1_raw_body) + response_1["body"] = StreamingBody(new_stream, len(response_1_raw_body)) + (span_0, span_1) = span_exporter.get_finished_spans() assert_completion_attributes_from_streaming_body( span_0, @@ -1516,7 +1705,7 @@ def invoke_model_tool_call( assert_message_in_logs( logs[2], "gen_ai.user.message", user_content, span_1 ) - assistant_body = response_0_body + assistant_body = assistant_message assistant_body["tool_calls"] = choice_body["message"]["tool_calls"] assistant_body.pop("role") if not expect_content: @@ -1527,21 +1716,14 @@ def invoke_model_tool_call( assistant_body, span_1, ) - tool_message_0 = { - "id": tool_requests_ids[0], - "content": tool_call_result["content"][0]["content"] - if expect_content - else None, - } + + tool_message_0, tool_message_1 = llm_model_config.tool_messages( + tool_requests_ids, tool_call_result, expect_content + ) + assert_message_in_logs( logs[4], "gen_ai.tool.message", tool_message_0, span_1 ) - tool_message_1 = { - "id": tool_requests_ids[1], - "content": tool_call_result["content"][1]["content"] - if expect_content - else None, - } assert_message_in_logs( logs[5], "gen_ai.tool.message", tool_message_1, span_1 ) @@ -1553,17 +1735,13 @@ def invoke_model_tool_call( assert_message_in_logs( logs[6], "gen_ai.user.message", user_message_body, span_1 ) + choice_content = llm_model_config.choice_content(response_1_body) choice_body = { "index": 0, "finish_reason": "end_turn", "message": { "role": "assistant", - "content": [ - { - "type": "text", - "text": "Thank you for providing the weather information. Here's the current weather for Seattle and San Francisco:\n\n1. Seattle: The current weather in Seattle is 50 degrees and raining.\n2. San Francisco: The current weather in San Francisco is 70 degrees and sunny.\n\nAs you can see, there's quite a difference in the weather between these two West Coast cities today. Seattle is experiencing cooler temperatures with rain, which is fairly typical for the Pacific Northwest. On the other hand, San Francisco is enjoying warmer temperatures with sunny skies, making for a pleasant day in the Bay Area.\n\nIs there anything else you'd like to know about the weather in these cities or any other locations?", - } - ], + "content": choice_content, }, } if not expect_content: @@ -1571,19 +1749,31 @@ def invoke_model_tool_call( assert_message_in_logs(logs[7], "gen_ai.choice", choice_body, span_1) +@pytest.mark.parametrize( + "model_family", + ["amazon.nova", "anthropic.claude"], +) @pytest.mark.vcr() def test_invoke_model_with_content_tool_call( span_exporter, log_exporter, bedrock_runtime_client, instrument_with_content, + model_family, ): - llm_model_value = "us.anthropic.claude-3-5-sonnet-20240620-v1:0" + if model_family == "amazon.nova": + llm_model_value = "amazon.nova-micro-v1:0" + llm_model_config = AmazonNovaModel + elif model_family == "anthropic.claude": + llm_model_value = "us.anthropic.claude-3-5-sonnet-20240620-v1:0" + llm_model_config = AnthropicClaudeModel + invoke_model_tool_call( span_exporter, log_exporter, bedrock_runtime_client, llm_model_value, + llm_model_config, expect_content=True, ) @@ -1700,19 +1890,31 @@ def test_invoke_model_no_content_different_events( assert_message_in_logs(logs[4], "gen_ai.choice", choice_body, span) +@pytest.mark.parametrize( + "model_family", + ["amazon.nova", "anthropic.claude"], +) @pytest.mark.vcr() def test_invoke_model_no_content_tool_call( span_exporter, log_exporter, bedrock_runtime_client, instrument_no_content, + model_family, ): - llm_model_value = "us.anthropic.claude-3-5-sonnet-20240620-v1:0" + if model_family == "amazon.nova": + llm_model_value = "amazon.nova-micro-v1:0" + llm_model_config = AmazonNovaModel + elif model_family == "anthropic.claude": + llm_model_value = "us.anthropic.claude-3-5-sonnet-20240620-v1:0" + llm_model_config = AnthropicClaudeModel + invoke_model_tool_call( span_exporter, log_exporter, bedrock_runtime_client, llm_model_value, + llm_model_config, expect_content=False, ) @@ -1950,23 +2152,17 @@ def invoke_model_with_response_stream_tool_call( log_exporter, bedrock_runtime_client, llm_model_value, + llm_model_config, expect_content, ): # pylint:disable=too-many-locals,too-many-statements,too-many-branches - messages = [ - { - "role": "user", - "content": [ - { - "text": "What is the weather in Seattle and San Francisco today? Please expect one tool call for Seattle and one for San Francisco", - "type": "text", - } - ], - } - ] + user_prompt = "What is the weather in Seattle and San Francisco today? Please give one tool call for Seattle and one for San Francisco" + user_msg_content = llm_model_config.user_message(user_prompt) + messages = [{"role": "user", "content": [user_msg_content]}] max_tokens = 1000 - tool_config = get_anthropic_tool_config() + tool_config = llm_model_config.tool_config() + body = get_invoke_model_body( llm_model_value, messages=messages, @@ -1978,50 +2174,12 @@ def invoke_model_with_response_stream_tool_call( modelId=llm_model_value, ) - content = [] - content_block = {} - input_json_buf = "" - for event in response_0["body"]: - json_bytes = event["chunk"].get("bytes", b"") - decoded = json_bytes.decode("utf-8") - chunk = json.loads(decoded) - - if (message_type := chunk.get("type")) is not None: - if message_type == "content_block_start": - content_block = chunk["content_block"] - elif message_type == "content_block_delta": - if chunk["delta"]["type"] == "text_delta": - content_block["text"] += chunk["delta"]["text"] - elif chunk["delta"]["type"] == "input_json_delta": - input_json_buf += chunk["delta"]["partial_json"] - elif message_type == "content_block_stop": - if input_json_buf: - content_block["input"] = json.loads(input_json_buf) - content.append(content_block) - content_block = None - input_json_buf = "" - + content = llm_model_config.get_stream_body_content(response_0["body"]) assert content - tool_requests_ids = [ - item["id"] for item in content if item["type"] == "tool_use" - ] + tool_requests_ids = llm_model_config.tool_requests_ids_from_stream(content) assert len(tool_requests_ids) == 2 - tool_call_result = { - "role": "user", - "content": [ - { - "type": "tool_result", - "tool_use_id": tool_requests_ids[0], - "content": "50 degrees and raining", - }, - { - "type": "tool_result", - "tool_use_id": tool_requests_ids[1], - "content": "70 degrees and sunny", - }, - ], - } + tool_call_result = llm_model_config.tool_calls_results(tool_requests_ids) # remove extra attributes from response messages.append({"role": "assistant", "content": content}) @@ -2038,9 +2196,10 @@ def invoke_model_with_response_stream_tool_call( modelId=llm_model_value, ) - # consume the body to have it traced - for _ in response_1["body"]: - pass + response_1_content = llm_model_config.get_stream_body_content( + response_1["body"] + ) + assert response_1_content (span_0, span_1) = span_exporter.get_finished_spans() assert_stream_completion_attributes( @@ -2115,21 +2274,14 @@ def invoke_model_with_response_stream_tool_call( assistant_body, span_1, ) - tool_message_0 = { - "id": tool_requests_ids[0], - "content": tool_call_result["content"][0]["content"] - if expect_content - else None, - } + + tool_message_0, tool_message_1 = llm_model_config.tool_messages( + tool_requests_ids, tool_call_result, expect_content + ) assert_message_in_logs( logs[4], "gen_ai.tool.message", tool_message_0, span_1 ) - tool_message_1 = { - "id": tool_requests_ids[1], - "content": tool_call_result["content"][1]["content"] - if expect_content - else None, - } + assert_message_in_logs( logs[5], "gen_ai.tool.message", tool_message_1, span_1 ) @@ -2146,12 +2298,7 @@ def invoke_model_with_response_stream_tool_call( "finish_reason": "end_turn", "message": { "role": "assistant", - "content": [ - { - "type": "text", - "text": "\n\nGreat! I have the current weather information for both cities. Here's the weather in Seattle and San Francisco today:\n\nSeattle: 50 degrees and raining\nSan Francisco: 70 degrees and sunny\n\nAs you can see, the weather is quite different in these two cities today. Seattle is experiencing cooler temperatures with rain, which is fairly typical for the city. On the other hand, San Francisco is enjoying a warm and sunny day. If you're planning any activities, you might want to consider indoor options for Seattle, while it's a great day for outdoor activities in San Francisco.\n\nIs there anything else you'd like to know about the weather in these cities or any other locations?", - } - ], + "content": response_1_content, }, } if not expect_content: @@ -2159,19 +2306,31 @@ def invoke_model_with_response_stream_tool_call( assert_message_in_logs(logs[7], "gen_ai.choice", choice_body, span_1) +@pytest.mark.parametrize( + "model_family", + ["amazon.nova", "anthropic.claude"], +) @pytest.mark.vcr() def test_invoke_model_with_response_stream_with_content_tool_call( span_exporter, log_exporter, bedrock_runtime_client, instrument_with_content, + model_family, ): - llm_model_value = "us.anthropic.claude-3-5-sonnet-20240620-v1:0" + if model_family == "amazon.nova": + llm_model_value = "amazon.nova-micro-v1:0" + llm_model_config = AmazonNovaModel + elif model_family == "anthropic.claude": + llm_model_value = "us.anthropic.claude-3-5-sonnet-20240620-v1:0" + llm_model_config = AnthropicClaudeModel + invoke_model_with_response_stream_tool_call( span_exporter, log_exporter, bedrock_runtime_client, llm_model_value, + llm_model_config, expect_content=True, ) @@ -2333,19 +2492,31 @@ def test_invoke_model_with_response_stream_no_content_different_events( assert_message_in_logs(logs[4], "gen_ai.choice", choice_body, span) +@pytest.mark.parametrize( + "model_family", + ["amazon.nova", "anthropic.claude"], +) @pytest.mark.vcr() def test_invoke_model_with_response_stream_no_content_tool_call( span_exporter, log_exporter, bedrock_runtime_client, instrument_no_content, + model_family, ): - llm_model_value = "us.anthropic.claude-3-5-sonnet-20240620-v1:0" + if model_family == "amazon.nova": + llm_model_value = "amazon.nova-micro-v1:0" + llm_model_config = AmazonNovaModel + elif model_family == "anthropic.claude": + llm_model_value = "us.anthropic.claude-3-5-sonnet-20240620-v1:0" + llm_model_config = AnthropicClaudeModel + invoke_model_with_response_stream_tool_call( span_exporter, log_exporter, bedrock_runtime_client, llm_model_value, + llm_model_config, expect_content=False, )