botocore: handle system messages events (#3266)

* botocore: handle system event messages

* Add CHANGELOG

* Please pylint
This commit is contained in:
Riccardo Magliocchetti 2025-02-14 11:17:08 +01:00 committed by GitHub
parent 1623dc0e71
commit 789bf866e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 2345 additions and 5 deletions

View File

@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `opentelemetry-instrumentation-botocore` Add support for GenAI user events and lazy initialize tracer
([#3258](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3258))
- `opentelemetry-instrumentation-botocore` Add support for GenAI system events
([#3266](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3266))
### Fixed

View File

@ -209,10 +209,23 @@ class _BedrockRuntimeExtension(_AwsSdkExtension):
attributes[key] = value
def _get_request_messages(self):
"""Extracts and normalize system and user / assistant messages"""
input_text = None
if system := self._call_context.params.get("system", []):
system_messages = [{"role": "system", "content": system}]
else:
system_messages = []
if not (messages := self._call_context.params.get("messages", [])):
if body := self._call_context.params.get("body"):
decoded_body = json.loads(body)
if system := decoded_body.get("system"):
if isinstance(system, str):
content = [{"text": system}]
else:
content = system
system_messages = [{"role": "system", "content": content}]
messages = decoded_body.get("messages", [])
if not messages:
# transform old school amazon titan invokeModel api to messages
@ -221,7 +234,7 @@ class _BedrockRuntimeExtension(_AwsSdkExtension):
{"role": "user", "content": [{"text": input_text}]}
]
return messages
return system_messages + messages
def before_service_call(
self, span: Span, instrumentor_context: _BotocoreInstrumentorContext

View File

@ -161,7 +161,9 @@ def assert_stream_completion_attributes(
def assert_equal_or_not_present(value, attribute_name, span):
if value is not None:
assert value == span.attributes[attribute_name]
assert value == span.attributes[attribute_name], span.attributes[
attribute_name
]
else:
assert attribute_name not in span.attributes, attribute_name

View File

@ -0,0 +1,96 @@
interactions:
- request:
body: |-
{
"system": [
{
"text": "You are a friendly app"
}
],
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test"
}
]
}
]
}
headers:
Content-Length:
- '258'
Content-Type:
- application/json
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:
- 20250213T113027Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-d9112d64-56325c43023ba04895b18fc1;Parent=d56bf41aee9dd9b2;Sampled=1
amz-sdk-invocation-id:
- 4e1fd77b-1b21-4b3a-9b96-d74fb74ede7c
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-v2/converse
response:
body:
string: |-
{
"metrics": {
"latencyMs": 489
},
"output": {
"message": {
"content": [
{
"text": "This is a test"
}
],
"role": "assistant"
}
},
"stopReason": "end_turn",
"usage": {
"inputTokens": 37,
"outputTokens": 8,
"totalTokens": 45
}
}
headers:
Connection:
- keep-alive
Content-Type:
- application/json
Date:
- Thu, 13 Feb 2025 11:30:28 GMT
Set-Cookie: test_set_cookie
x-amzn-RequestId:
- 67f0b4ef-e481-4c12-853b-d8e992395129
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,102 @@
interactions:
- request:
body: |-
{
"system": [
{
"text": "You are a friendly app"
}
],
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test"
}
]
}
]
}
headers:
Content-Length:
- '258'
Content-Type:
- application/json
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:
- 20250213T134717Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-014325aa-ed2dea786b6b5b895661a1fd;Parent=540790d110580421;Sampled=1
amz-sdk-invocation-id:
- 22820432-2412-4351-98af-8c70c71c84a9
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-v2/converse-stream
response:
body:
string: !!binary |
AAAAkwAAAFJ24bJxCzpldmVudC10eXBlBwAMbWVzc2FnZVN0YXJ0DTpjb250ZW50LXR5cGUHABBh
cHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmdoaWprbG1u
b3BxcnN0dXYiLCJyb2xlIjoiYXNzaXN0YW50In2AaQZuAAAAzQAAAFeBqDdUCzpldmVudC10eXBl
BwARY29udGVudEJsb2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l
c3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwiZGVsdGEiOnsidGV4dCI6
IlRoaXMifSwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFS
U1RVViJ9qHD4cgAAALQAAABXdWq16gs6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpj
b250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29u
dGVudEJsb2NrSW5kZXgiOjAsImRlbHRhIjp7InRleHQiOiIgaXMifSwicCI6ImFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eCJ9dhKCRAAAALAAAABXgOoTKgs6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9j
a0RlbHRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVl
dmVudHsiY29udGVudEJsb2NrSW5kZXgiOjAsImRlbHRhIjp7InRleHQiOiIgYSJ9LCJwIjoiYWJj
ZGVmZ2hpamtsbW5vcHFyc3R1In0IN1EQAAAAtQAAAFdICpxaCzpldmVudC10eXBlBwARY29udGVu
dEJsb2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlw
ZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwiZGVsdGEiOnsidGV4dCI6IiB0ZXN0In0s
InAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2dyJ9V81m8wAAAIkAAABWW9z5Sws6ZXZlbnQtdHlw
ZQcAEGNvbnRlbnRCbG9ja1N0b3ANOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l
c3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwicCI6ImFiY2RlIn3nHPCv
AAAAoAAAAFEJaSGdCzpldmVudC10eXBlBwALbWVzc2FnZVN0b3ANOmNvbnRlbnQtdHlwZQcAEGFw
cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJwIjoiYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXpBQkNERSIsInN0b3BSZWFzb24iOiJlbmRfdHVybiJ9p5BdEgAAAMsAAABOaoNq
NAs6ZXZlbnQtdHlwZQcACG1ldGFkYXRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u
DTptZXNzYWdlLXR5cGUHAAVldmVudHsibWV0cmljcyI6eyJsYXRlbmN5TXMiOjM2MX0sInAiOiJh
YmNkZWZnaGlqa2wiLCJ1c2FnZSI6eyJpbnB1dFRva2VucyI6MzcsIm91dHB1dFRva2VucyI6OCwi
dG90YWxUb2tlbnMiOjQ1fX1Nq2WY
headers:
Connection:
- keep-alive
Content-Type:
- application/vnd.amazon.eventstream
Date:
- Thu, 13 Feb 2025 13:47:17 GMT
Set-Cookie: test_set_cookie
Transfer-Encoding:
- chunked
x-amzn-RequestId:
- e443d332-cba6-4076-a4f6-86d6321eada3
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,105 @@
interactions:
- request:
body: |-
{
"system": [
{
"text": "You are a friendly app"
}
],
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test"
}
]
}
]
}
headers:
Content-Length:
- '258'
Content-Type:
- application/json
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:
- 20250213T134611Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-deb34c78-8ab87e14665141b9e132396b;Parent=8e997adc8051f5a6;Sampled=1
amz-sdk-invocation-id:
- 81e436d8-7c5d-4025-a9e5-de505ccb9b51
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-v2/converse-stream
response:
body:
string: !!binary |
AAAArAAAAFJVkJ0mCzpldmVudC10eXBlBwAMbWVzc2FnZVN0YXJ0DTpjb250ZW50LXR5cGUHABBh
cHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmdoaWprbG1u
b3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVIiwicm9sZSI6ImFzc2lzdGFudCJ9mBqg
YwAAANQAAABX7FjCpws6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250ZW50LXR5
cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2Nr
SW5kZXgiOjAsImRlbHRhIjp7InRleHQiOiJUaGlzIn0sInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyIn2n2T4pAAAArQAAAFcYmkAZCzpl
dmVudC10eXBlBwARY29udGVudEJsb2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u
L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwiZGVsdGEi
OnsidGV4dCI6IiBpcyJ9LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHEifYkheRMAAADQAAAAVxnYZGcL
OmV2ZW50LXR5cGUHABFjb250ZW50QmxvY2tEZWx0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRp
b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImNvbnRlbnRCbG9ja0luZGV4IjowLCJkZWx0
YSI6eyJ0ZXh0IjoiIGEifSwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVowIn3K4xpaAAAA0wAAAFdeeB63CzpldmVudC10eXBlBwARY29udGVu
dEJsb2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlw
ZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwiZGVsdGEiOnsidGV4dCI6IiB0ZXN0In0s
InAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
MCJ916eYywAAALkAAABW+v1BzQs6ZXZlbnQtdHlwZQcAEGNvbnRlbnRCbG9ja1N0b3ANOmNvbnRl
bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50
QmxvY2tJbmRleCI6MCwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktM
TU5PUFFSU1RVVldYWVowIn2IAETUAAAAhgAAAFFH6Ps5CzpldmVudC10eXBlBwALbWVzc2FnZVN0
b3ANOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50
eyJwIjoiYWJjZGUiLCJzdG9wUmVhc29uIjoiZW5kX3R1cm4ifSknYaEAAAD3AAAATg5SP7MLOmV2
ZW50LXR5cGUHAAhtZXRhZGF0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz
c2FnZS10eXBlBwAFZXZlbnR7Im1ldHJpY3MiOnsibGF0ZW5jeU1zIjo1MDh9LCJwIjoiYWJjZGVm
Z2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjMiLCJ1c2Fn
ZSI6eyJpbnB1dFRva2VucyI6MzcsIm91dHB1dFRva2VucyI6OCwidG90YWxUb2tlbnMiOjQ1fX0o
MQhc
headers:
Connection:
- keep-alive
Content-Type:
- application/vnd.amazon.eventstream
Date:
- Thu, 13 Feb 2025 13:46:12 GMT
Set-Cookie: test_set_cookie
Transfer-Encoding:
- chunked
x-amzn-RequestId:
- 829dbcea-d3df-4781-be84-c1c2d5c420bd
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,96 @@
interactions:
- request:
body: |-
{
"system": [
{
"text": "You are a friendly app"
}
],
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test"
}
]
}
]
}
headers:
Content-Length:
- '258'
Content-Type:
- application/json
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:
- 20250213T113026Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-188a1ced-da75f3769b7d8ee0334fa4bf;Parent=f8c672d0277ff6e1;Sampled=1
amz-sdk-invocation-id:
- fae72016-6b0e-4b6f-b15a-100aa7f19e48
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-v2/converse
response:
body:
string: |-
{
"metrics": {
"latencyMs": 408
},
"output": {
"message": {
"content": [
{
"text": "This is a test"
}
],
"role": "assistant"
}
},
"stopReason": "end_turn",
"usage": {
"inputTokens": 37,
"outputTokens": 8,
"totalTokens": 45
}
}
headers:
Connection:
- keep-alive
Content-Type:
- application/json
Date:
- Thu, 13 Feb 2025 11:30:27 GMT
Set-Cookie: test_set_cookie
x-amzn-RequestId:
- 5273de67-e76c-45ad-be0a-558957af8046
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,107 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test"
}
]
}
],
"inferenceConfig": {
"max_new_tokens": 10
},
"schemaVersion": "messages-v1",
"system": [
{
"text": "You are friendly model"
}
]
}
headers:
Content-Length:
- '333'
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:
- 20250213T113030Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-ba0c8a29-b443cf8553f07da7a91a8206;Parent=976f285f1d94e9d5;Sampled=1
amz-sdk-invocation-id:
- 01a2bce5-51df-4e24-bbc4-ec0fb28b35ae
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": "Again, this is a test. If you need"
}
],
"role": "assistant"
}
},
"stopReason": "max_tokens",
"usage": {
"inputTokens": 24,
"outputTokens": 10,
"totalTokens": 34,
"cacheReadInputTokenCount": 0,
"cacheWriteInputTokenCount": 0
}
}
headers:
Connection:
- keep-alive
Content-Type:
- application/json
Date:
- Thu, 13 Feb 2025 11:30:30 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:
- '24'
X-Amzn-Bedrock-Invocation-Latency:
- '182'
X-Amzn-Bedrock-Output-Token-Count:
- '10'
x-amzn-RequestId:
- 88719d47-9d62-4ae6-8623-07af41fb0044
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,98 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test",
"type": "text"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test",
"type": "text"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test",
"type": "text"
}
]
}
],
"anthropic_version": "bedrock-2023-05-31",
"system": "You are a friendly model",
"max_tokens": 10
}
headers:
Content-Length:
- '357'
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:
- 20250213T113030Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-ca8c487d-14ab6e6ef139ee445552032f;Parent=76161c83e32d8750;Sampled=1
amz-sdk-invocation-id:
- 65d2a14a-3292-44c0-852d-687472c3e477
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-v2/invoke
response:
body:
string: |-
{
"id": "msg_bdrk_01CmG6WWSyyBzYoApTJb79vd",
"type": "message",
"role": "assistant",
"model": "claude-2.0",
"content": [
{
"type": "text",
"text": "This is a test"
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 37,
"output_tokens": 8
}
}
headers:
Connection:
- keep-alive
Content-Type:
- application/json
Date:
- Thu, 13 Feb 2025 11:30:32 GMT
Set-Cookie: test_set_cookie
X-Amzn-Bedrock-Input-Token-Count:
- '37'
X-Amzn-Bedrock-Invocation-Latency:
- '1165'
X-Amzn-Bedrock-Output-Token-Count:
- '8'
x-amzn-RequestId:
- 39cf77df-c934-4701-926b-ae773dcc4a5a
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,107 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test"
}
]
}
],
"inferenceConfig": {
"max_new_tokens": 10
},
"schemaVersion": "messages-v1",
"system": [
{
"text": "You are a friendly model"
}
]
}
headers:
Content-Length:
- '335'
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:
- 20250213T113028Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-ebcc2db9-853da8761a55ed21fab8f371;Parent=39df94de2ed40f10;Sampled=1
amz-sdk-invocation-id:
- 6928a695-340b-4f03-b1dd-ec4a42a32f49
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": "Again, this is a test. If you need"
}
],
"role": "assistant"
}
},
"stopReason": "max_tokens",
"usage": {
"inputTokens": 25,
"outputTokens": 10,
"totalTokens": 35,
"cacheReadInputTokenCount": 0,
"cacheWriteInputTokenCount": 0
}
}
headers:
Connection:
- keep-alive
Content-Type:
- application/json
Date:
- Thu, 13 Feb 2025 11:30:29 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:
- '25'
X-Amzn-Bedrock-Invocation-Latency:
- '212'
X-Amzn-Bedrock-Output-Token-Count:
- '10'
x-amzn-RequestId:
- 2d2b151c-a618-4f59-a6d6-e3caf0591a5e
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,98 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test",
"type": "text"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test",
"type": "text"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test",
"type": "text"
}
]
}
],
"anthropic_version": "bedrock-2023-05-31",
"system": "You are a friendly model",
"max_tokens": 10
}
headers:
Content-Length:
- '357'
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:
- 20250213T113029Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-ebb1f004-773abbf27202dcf183809217;Parent=e7ecc8b27ef7ce36;Sampled=1
amz-sdk-invocation-id:
- 656f63a7-9bca-490b-953e-1d4a126a79da
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-v2/invoke
response:
body:
string: |-
{
"id": "msg_bdrk_01UnsouyLmsvQU98E9WzpGCp",
"type": "message",
"role": "assistant",
"model": "claude-2.0",
"content": [
{
"type": "text",
"text": "This is a test"
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 37,
"output_tokens": 8
}
}
headers:
Connection:
- keep-alive
Content-Type:
- application/json
Date:
- Thu, 13 Feb 2025 11:30:30 GMT
Set-Cookie: test_set_cookie
X-Amzn-Bedrock-Input-Token-Count:
- '37'
X-Amzn-Bedrock-Invocation-Latency:
- '335'
X-Amzn-Bedrock-Output-Token-Count:
- '8'
x-amzn-RequestId:
- 3daf61e4-4dbc-4c62-af7b-a8b395e4156c
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,158 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test"
}
]
}
],
"inferenceConfig": {
"max_new_tokens": 10,
"temperature": 0.8,
"topP": 1,
"stopSequences": [
"|"
]
},
"schemaVersion": "messages-v1"
}
headers:
Content-Length:
- '207'
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:
- 20250213T140942Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-5ecd0236-4569edae20e05defebab7b00;Parent=0fa1f1768c7b8b5d;Sampled=1
amz-sdk-invocation-id:
- 691b201f-920e-4147-8957-efb32f6b9509
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 |
AAAApwAAAEtGKwT3CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnRaWE56WVdkbFUzUmhj
blFpT25zaWNtOXNaU0k2SW1GemMybHpkR0Z1ZENKOWZRPT0iLCJwIjoiYWJjZGUifZ0S/N0AAADo
AAAAS5yIy28LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24v
anNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVa
V3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaVUzVnlaU0o5TENKamIyNTBaVzUwUW14dlky
dEpibVJsZUNJNk1IMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNEIn24dKPn
AAAAvwAAAEsWu9i0CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZ
MnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam93ZlgwPSIsInAiOiJhYmNkZWZn
aGlqa2xtbm9wcXJzdHUifXkwdd4AAADbAAAAS3oJCTkLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u
dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz
IjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlT
SjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2TVgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w
cXJzdHUifZgCKpgAAADYAAAASz2pc+kLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl
BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIy
NTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3hmWDA9Iiwi
cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1Qifd1gMGIA
AAD+AAAAS3MoqU0LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp
b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlky
dEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlFbDBJbjBzSW1OdmJuUmxiblJDYkc5
amEwbHVaR1Y0SWpveWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZH
SElKS0xNTk9QUVJTVFVWV1hZWiJ9v77h3gAAALIAAABL7iscBQs6ZXZlbnQtdHlwZQcABWNodW5r
DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi
Ynl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVa
R1Y0SWpveWZYMD0iLCJwIjoiYWJjZGVmZ2gifWca+VsAAAD8AAAASwno+i0LOmV2ZW50LXR5cGUH
AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF
ZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5
SjBaWGgwSWpvaUlITnZkVzVrY3lKOUxDSmpiMjUwWlc1MFFteHZZMnRKYm1SbGVDSTZNMzE5Iiwi
cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1QifRDZk9oA
AACtAAAASwybHFYLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRp
b24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlky
dFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3pmWDA9IiwicCI6ImFiYyJ9bx6Z
qQAAAQMAAABLCNDuBAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNh
dGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2
WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUd4cGEyVWlmU3dpWTI5dWRHVnVk
RUpzYjJOclNXNWtaWGdpT2pSOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpB
QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAifUf8WIAAAAC2AAAASxurusULOmV2ZW50LXR5cGUH
AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF
ZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JH
OWphMGx1WkdWNElqbzBmWDA9IiwicCI6ImFiY2RlZmdoaWprbCJ96cj/hgAAANkAAABLAMlaWQs6
ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNz
YWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlK
a1pXeDBZU0k2ZXlKMFpYaDBJam9pSUhsdmRTSjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2
TlgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm8ifTc/0x4AAADMAAAAS6jJQqsLOmV2ZW50LXR5cGUH
AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF
ZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JH
OWphMGx1WkdWNElqbzFmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVG
R0giffYpOMUAAAEFAAAAS4eQG6QLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ
YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBa
VzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlIZGhiblFpZlN3aVky
OXVkR1Z1ZEVKc2IyTnJTVzVrWlhnaU9qWjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIifYXvT9UAAADaAAAAS0dpIIkLOmV2
ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn
ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZi
blJsYm5SQ2JHOWphMGx1WkdWNElqbzJmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVViJ9lECpMgAAANgAAABLPalz6Qs6ZXZlbnQtdHlwZQcA
BWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVl
dmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlK
MFpYaDBJam9pSUhSdkluMHNJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam8zZlgwPSIsInAiOiJh
YmNkZWZnaGlqa2xtbiJ9X2Y6nAAAAMQAAABLmLkJags6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250
ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMi
OiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpv
M2ZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoifRQObxwAAADoAAAAS5yIy28L
OmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVz
c2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5
SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlHTnZiVzExYm1sallYUmxJbjBzSW1OdmJuUmxiblJDYkc5
amEwbHVaR1Y0SWpvNGZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyIn2XNLLFAAAA5wAAAEse
2Fy+CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24N
Om1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lq
cDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam80ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4In0vrSKrAAAA/AAA
AEsJ6PotCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pz
b24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4
MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJR0VpZlN3aVkyOXVkR1Z1ZEVKc2IyTnJTVzVr
WlhnaU9qbDlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktM
TU5PUFFSU1RVVldYIn39jPY4AAAAwgAAAEsX+fzKCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl
bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6
ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam81
ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3giff4k+OEAAAC0AAAAS2Fr6aULOmV2
ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn
ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKdFpYTnpZV2RsVTNSdmNDSTZleUp6ZEc5d1VtVmhj
Mjl1SWpvaWJXRjRYM1J2YTJWdWN5SjlmUT09IiwicCI6ImFiY2RlZmdoaWoifXfIDi4AAAIkAAAA
S/2lb74LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNv
bg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKdFpYUmhaR0YwWVNJNmV5SjFjMkZu
WlNJNmV5SnBibkIxZEZSdmEyVnVjeUk2TlN3aWIzVjBjSFYwVkc5clpXNXpJam94TUN3aVkyRmph
R1ZTWldGa1NXNXdkWFJVYjJ0bGJrTnZkVzUwSWpvd0xDSmpZV05vWlZkeWFYUmxTVzV3ZFhSVWIy
dGxia052ZFc1MElqb3dmU3dpYldWMGNtbGpjeUk2ZTMwc0luUnlZV05sSWpwN2ZYMHNJbUZ0WVhw
dmJpMWlaV1J5YjJOckxXbHVkbTlqWVhScGIyNU5aWFJ5YVdOeklqcDdJbWx1Y0hWMFZHOXJaVzVE
YjNWdWRDSTZOU3dpYjNWMGNIVjBWRzlyWlc1RGIzVnVkQ0k2TVRBc0ltbHVkbTlqWVhScGIyNU1Z
WFJsYm1ONUlqb3lNRGNzSW1acGNuTjBRbmwwWlV4aGRHVnVZM2tpT2pnMkxDSmpZV05vWlZKbFlX
UkpibkIxZEZSdmEyVnVRMjkxYm5RaU9qQXNJbU5oWTJobFYzSnBkR1ZKYm5CMWRGUnZhMlZ1UTI5
MWJuUWlPakI5ZlE9PSIsInAiOiJhYiJ9rO4iMQ==
headers:
Connection:
- keep-alive
Content-Type:
- application/vnd.amazon.eventstream
Date:
- Thu, 13 Feb 2025 14:09:43 GMT
Set-Cookie: test_set_cookie
Transfer-Encoding:
- chunked
X-Amzn-Bedrock-Content-Type:
- application/json
x-amzn-RequestId:
- d788a25f-4107-4d7e-9b70-be683e911d01
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,64 @@
interactions:
- request:
body: |-
{
"inputText": "Say this is a test",
"textGenerationConfig": {
"maxTokenCount": 10,
"temperature": 0.8,
"topP": 1,
"stopSequences": [
"|"
]
}
}
headers:
Content-Length:
- '137'
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:
- 20250213T140943Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-b8667c76-484fbe275a69822274a3b153;Parent=1c655aa74d5b9056;Sampled=1
amz-sdk-invocation-id:
- 16bd4347-4f6d-4098-8f71-18fa3e3db97c
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.titan-text-lite-v1/invoke-with-response-stream
response:
body:
string: !!binary |
AAAB/AAAAEvCtCmICzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnZkWFJ3ZFhSVVpYaDBJ
am9pSUdOdmJXMWxiblJjYmtobGJHeHZJU0JKSUdGdElHRnVJRUZKSUcxdlpHVnNJR1JsZG1Wc2Iz
QmxaQ0lzSW1sdVpHVjRJam93TENKMGIzUmhiRTkxZEhCMWRGUmxlSFJVYjJ0bGJrTnZkVzUwSWpv
eE1Dd2lZMjl0Y0d4bGRHbHZibEpsWVhOdmJpSTZJa3hGVGtkVVNDSXNJbWx1Y0hWMFZHVjRkRlJ2
YTJWdVEyOTFiblFpT2pVc0ltRnRZWHB2YmkxaVpXUnliMk5yTFdsdWRtOWpZWFJwYjI1TlpYUnlh
V056SWpwN0ltbHVjSFYwVkc5clpXNURiM1Z1ZENJNk5Td2liM1YwY0hWMFZHOXJaVzVEYjNWdWRD
STZNVEFzSW1sdWRtOWpZWFJwYjI1TVlYUmxibU41SWpvMk1EWXNJbVpwY25OMFFubDBaVXhoZEdW
dVkza2lPall3TlgxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiJ9ImKI2Q==
headers:
Connection:
- keep-alive
Content-Type:
- application/vnd.amazon.eventstream
Date:
- Thu, 13 Feb 2025 14:09:43 GMT
Set-Cookie: test_set_cookie
Transfer-Encoding:
- chunked
X-Amzn-Bedrock-Content-Type:
- application/json
x-amzn-RequestId:
- d1510378-4044-4e21-b8bc-793dc917cc4f
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,138 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test",
"type": "text"
}
]
}
],
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 10,
"temperature": 0.8,
"top_p": 1,
"stop_sequences": [
"|"
]
}
headers:
Content-Length:
- '211'
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:
- 20250213T140944Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-d0737c0b-da5fdc0d56ffe1dba045b41c;Parent=7ec85426a39c4738;Sampled=1
amz-sdk-invocation-id:
- bae563fd-a529-493e-a4fd-b149d9ce8ca1
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-v2/invoke-with-response-stream
response:
body:
string: !!binary |
AAAB2QAAAEvLlYn8CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj
MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVV4clUw
bzBTelY0V1RoclVHOTRPVGN6U21wSFNtOGlMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV
aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHlMakFpTENKamIyNTBaVzUw
SWpwYlhTd2ljM1J2Y0Y5eVpXRnpiMjRpT201MWJHd3NJbk4wYjNCZmMyVnhkV1Z1WTJVaU9tNTFi
R3dzSW5WellXZGxJanA3SW1sdWNIVjBYM1J2YTJWdWN5STZNVFFzSW05MWRIQjFkRjkwYjJ0bGJu
TWlPakY5ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFkifWttUokAAAEXAAAAS52w30YLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu
dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi
ZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOXpkR0Z5ZENJc0ltbHVaR1Y0SWpvd0xDSmpi
MjUwWlc1MFgySnNiMk5ySWpwN0luUjVjR1VpT2lKMFpYaDBJaXdpZEdWNGRDSTZJaUo5ZlE9PSIs
InAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
MDEyMzQifZCt+WAAAAEVAAAAS+dwjCYLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBl
BwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVY
QmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJ
NmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSlBhMkY1SW4xOSIsInAiOiJh
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyIn0F
qOnTAAAA+wAAAEu7yCY9CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp
Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVky
OXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhC
bElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlzSW4xOSIsInAiOiJhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ekFCQ0RFRkcifZiFzkcAAAEUAAAAS9oQpZYLOmV2ZW50LXR5cGUHAAVjaHVu
aw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7
ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0
SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdT
U0o5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWFlaMDEifYFpUVoAAADnAAAASx7YXL4LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu
dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi
ZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmta
V3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSWdhR1ZoY2lKOWZR
PT0iLCJwIjoiYWJjZGUifZTUHdgAAADpAAAAS6Ho4t8LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u
dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz
IjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xD
SmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSmtJSGx2ZFNK
OWZRPT0iLCJwIjoiYWJjZGVmZyJ9L4wO0QAAAPMAAABLi7ht/As6ZXZlbnQtdHlwZQcABWNodW5r
DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi
Ynl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZU0lzSW1sdVpHVjRJ
am93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0luUmxlSFFpT2lJZ2My
RjVJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dSJ9GxmkFQAAARUAAABL53CMJgs6ZXZl
bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl
LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pX
eDBZU0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJ
c0luUmxlSFFpT2lJZ1hDSWlmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJD
REVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIifSUJEFgAAAEMAAAAS4qAedULOmV2ZW50LXR5cGUH
AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF
ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0lt
bHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhR
aU9pSlRZWGtpZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpL
TE1OT1BRUlNUIn2++vJiAAABDgAAAEvwQCq1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt
dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5
SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4
MFlTSTZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnZEdocGN5SjlmUT09
IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSIn2bOfJx
AAABDQAAAEu34FBlCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaVkyOXVk
R1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZleUowZVhCbElq
b2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnYVhNaWZYMD0iLCJwIjoiYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFUifWuVUmsAAADFAAAAS6XZINoLOmV2
ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn
ZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOXpk
Rzl3SWl3aWFXNWtaWGdpT2pCOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RF
RkdISSJ9pG6vOAAAATgAAABL3iFnkws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUH
ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhC
bElqb2liV1Z6YzJGblpWOWtaV3gwWVNJc0ltUmxiSFJoSWpwN0luTjBiM0JmY21WaGMyOXVJam9p
YldGNFgzUnZhMlZ1Y3lJc0luTjBiM0JmYzJWeGRXVnVZMlVpT201MWJHeDlMQ0oxYzJGblpTSTZl
eUp2ZFhSd2RYUmZkRzlyWlc1eklqb3hNSDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMSJ98M107QAAAUgAAABLJ/OHXAs6ZXZlbnQt
dHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5
cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2liV1Z6YzJGblpWOXpkRzl3SWl3aVlXMWhl
bTl1TFdKbFpISnZZMnN0YVc1MmIyTmhkR2x2YmsxbGRISnBZM01pT25zaWFXNXdkWFJVYjJ0bGJr
TnZkVzUwSWpveE5Dd2liM1YwY0hWMFZHOXJaVzVEYjNWdWRDSTZNVEFzSW1sdWRtOWpZWFJwYjI1
TVlYUmxibU41SWpvMU9EWXNJbVpwY25OMFFubDBaVXhoZEdWdVkza2lPakk0TTMxOSIsInAiOiJh
YmNkZWZnaGlqa2xtbm9wcXIifU0wj/U=
headers:
Connection:
- keep-alive
Content-Type:
- application/vnd.amazon.eventstream
Date:
- Thu, 13 Feb 2025 14:09:44 GMT
Set-Cookie: test_set_cookie
Transfer-Encoding:
- chunked
X-Amzn-Bedrock-Content-Type:
- application/json
x-amzn-RequestId:
- fef4e97e-8d2b-4faf-a561-e27f49ec42e0
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,175 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test"
}
]
}
],
"inferenceConfig": {
"max_new_tokens": 10
},
"schemaVersion": "messages-v1",
"system": [
{
"text": "You are a friendly model"
}
]
}
headers:
Content-Length:
- '335'
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:
- 20250213T141144Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-a09ce52d-52219138a15355c5765b2b52;Parent=63b5a9a600291fc0;Sampled=1
amz-sdk-invocation-id:
- 9e4a9f20-c0f9-4be7-abfe-2872259d1d32
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 |
AAAAtwAAAEsmy5N1CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnRaWE56WVdkbFUzUmhj
blFpT25zaWNtOXNaU0k2SW1GemMybHpkR0Z1ZENKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v
cHFyc3R1In2smnzGAAAA0wAAAEtKeUL4CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw
ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5Smpi
MjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lRV2RoYVc0aWZT
d2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pYZ2lPakI5ZlE9PSIsInAiOiJhYmNkZSJ9ZkQqpwAAAOEA
AABLkZipHgs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9q
c29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRH
OXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvd2ZYMD0iLCJwIjoiYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMiJ9D8dFwAAAAM4AAABL
0gkRyws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u
DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZ
U0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pTENKOUxDSmpiMjUwWlc1MFFteHZZMnRKYm1SbGVD
STZNWDE5IiwicCI6ImFiY2RlZmdoIn0LqUUiAAAA4gAAAEvWONPOCzpldmVudC10eXBlBwAFY2h1
bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50
eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBs
dVpHVjRJam94ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpL
TE1OT1BRUlNUVVZXWFlaMDEyMyJ9g9JI0AAAAOcAAABLHthcvgs6ZXZlbnQtdHlwZQcABWNodW5r
DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi
Ynl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJ
am9pSUhSb2FYTWlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2pKOWZRPT0iLCJwIjoiYWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eSJ9Y/VCfwAAANcAAABLv/nkOAs6ZXZlbnQtdHlwZQcABWNo
dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu
dHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEw
bHVaR1Y0SWpveWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElK
S0xNTk9QUVJTIn109CNrAAAA4QAAAEuRmKkeCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt
dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5
SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJR2x6SW4w
c0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqb3pmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3In077I9kAAAA2wAAAEt6CQk5CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw
ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5Smpi
MjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam96ZlgwPSIs
InAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXIn2Y
cRd9AAAA9AAAAEs5mLHsCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxp
Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFt
eHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJR0VpZlN3aVkyOXVkR1Z1ZEVK
c2IyTnJTVzVrWlhnaU9qUjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJD
REVGR0hJSktMTU5PUCJ964agtwAAAMgAAABLXUnkaws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250
ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMi
OiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpv
MGZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNEIn0/JaMoAAAA1AAAAEv4
WZ7oCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24N
Om1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlT
STZleUprWld4MFlTSTZleUowWlhoMElqb2lJSFJsYzNRaWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1
a1pYZ2lPalY5ZlE9PSIsInAiOiJhYmNkZWYifTR53DAAAAC9AAAAS2x7i9QLOmV2ZW50LXR5cGUH
AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF
ZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JH
OWphMGx1WkdWNElqbzFmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnMifWGJ/tEAAADrAAAA
S9sosb8LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNv
bg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gw
WVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUxpSjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxl
Q0k2Tm4xOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLIn1bj3f5
AAAA4AAAAEus+ICuCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZ
MnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam8yZlgwPSIsInAiOiJhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEifUip/SkAAAEH
AAAAS/1QSMQLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24v
anNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14dlkydEVa
V3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlFbG1JbjBzSW1OdmJuUmxiblJDYkc5amEw
bHVaR1Y0SWpvM2ZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElK
S0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3OCJ9u1LWzQAAALkAAABLmfstFAs6ZXZlbnQtdHlwZQcA
BWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVl
dmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5
amEwbHVaR1Y0SWpvM2ZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vIn0THZEoAAAA4QAAAEuRmKke
CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l
c3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZl
eUprWld4MFlTSTZleUowWlhoMElqb2lJSGx2ZFNKOUxDSmpiMjUwWlc1MFFteHZZMnRKYm1SbGVD
STZPSDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3In1pnW0qAAAA3wAAAEuPia/5Czpl
dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh
Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52
Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam80ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMCJ9zCnPkAAAAOMAAABL61j6fgs6ZXZlbnQt
dHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5
cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZ
U0k2ZXlKMFpYaDBJam9pSUc1bFpXUWlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2psOWZR
PT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1In1tUIvDAAAAxgAAAEvieVoKCzpldmVudC10
eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlw
ZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJu
UkNiRzlqYTBsdVpHVjRJam81ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFC
In36jRI9AAAA4wAAAEvrWPp+CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw
cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnRaWE56WVdk
bFUzUnZjQ0k2ZXlKemRHOXdVbVZoYzI5dUlqb2liV0Y0WDNSdmEyVnVjeUo5ZlE9PSIsInAiOiJh
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQi
fT6v9b4AAAIuAAAAS7cVdx8LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBw
bGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKdFpYUmhaR0Yw
WVNJNmV5SjFjMkZuWlNJNmV5SnBibkIxZEZSdmEyVnVjeUk2TWpVc0ltOTFkSEIxZEZSdmEyVnVj
eUk2TVRBc0ltTmhZMmhsVW1WaFpFbHVjSFYwVkc5clpXNURiM1Z1ZENJNk1Dd2lZMkZqYUdWWGNt
bDBaVWx1Y0hWMFZHOXJaVzVEYjNWdWRDSTZNSDBzSW0xbGRISnBZM01pT250OUxDSjBjbUZqWlNJ
NmUzMTlMQ0poYldGNmIyNHRZbVZrY205amF5MXBiblp2WTJGMGFXOXVUV1YwY21samN5STZleUpw
Ym5CMWRGUnZhMlZ1UTI5MWJuUWlPakkxTENKdmRYUndkWFJVYjJ0bGJrTnZkVzUwSWpveE1Dd2lh
VzUyYjJOaGRHbHZia3hoZEdWdVkza2lPakUzT1N3aVptbHljM1JDZVhSbFRHRjBaVzVqZVNJNk5q
QXNJbU5oWTJobFVtVmhaRWx1Y0hWMFZHOXJaVzVEYjNWdWRDSTZNQ3dpWTJGamFHVlhjbWwwWlVs
dWNIVjBWRzlyWlc1RGIzVnVkQ0k2TUgxOSIsInAiOiJhYmNkZWZnaGlqa2wifelhO1Y=
headers:
Connection:
- keep-alive
Content-Type:
- application/vnd.amazon.eventstream
Date:
- Thu, 13 Feb 2025 14:11:45 GMT
Set-Cookie: test_set_cookie
Transfer-Encoding:
- chunked
X-Amzn-Bedrock-Content-Type:
- application/json
x-amzn-RequestId:
- 5a860b54-1dc8-429c-9855-bbdb14bd8746
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,123 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test",
"type": "text"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test",
"type": "text"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test",
"type": "text"
}
]
}
],
"anthropic_version": "bedrock-2023-05-31",
"system": "You are a friendly model",
"max_tokens": 10
}
headers:
Content-Length:
- '357'
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:
- 20250213T141145Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-3b467cd3-1c0670b2a26cec8cb737e192;Parent=eeae78711a53442d;Sampled=1
amz-sdk-invocation-id:
- e429adb3-764e-4929-9f5c-c30f2972174c
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-v2/invoke-with-response-stream
response:
body:
string: !!binary |
AAAB3QAAAEs+FS88CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj
MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVZCSVdF
UjJkbmR3VFVSaVFWSlpjM0poYTJOSE9Ua2lMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV
aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHlMakFpTENKamIyNTBaVzUw
SWpwYlhTd2ljM1J2Y0Y5eVpXRnpiMjRpT201MWJHd3NJbk4wYjNCZmMyVnhkV1Z1WTJVaU9tNTFi
R3dzSW5WellXZGxJanA3SW1sdWNIVjBYM1J2YTJWdWN5STZNemNzSW05MWRIQjFkRjkwYjJ0bGJu
TWlPakY5ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaMDEyIn03XqsQAAAA9AAAAEs5mLHsCzpldmVudC10eXBlBwAFY2h1bmsNOmNv
bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl
cyI6ImV5SjBlWEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTl6ZEdGeWRDSXNJbWx1WkdWNElqb3dM
Q0pqYjI1MFpXNTBYMkpzYjJOcklqcDdJblI1Y0dVaU9pSjBaWGgwSWl3aWRHVjRkQ0k2SWlKOWZR
PT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1diJ9n5F/3AAAAQEAAABLchC9ZAs6ZXZlbnQt
dHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5
cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5a1pXeDBZ
U0lzSW1sdVpHVjRJam93TENKa1pXeDBZU0k2ZXlKMGVYQmxJam9pZEdWNGRGOWtaV3gwWVNJc0lu
UmxlSFFpT2lKVWFHbHpJbjE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVG
R0hJIn2TE0apAAAA5wAAAEse2Fy+CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcA
EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJs
SWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZl
eUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnYVhNaWZYMD0iLCJwIjoiYWJj
ZGVmZ2hpIn2t9aV4AAAA+AAAAEv8aFztCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlw
ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBl
WEJsSWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlT
STZleUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnWVNKOWZRPT0iLCJwIjoi
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoifRz/PMwAAADkAAAAS1l4Jm4LOmV2ZW50LXR5cGUH
AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF
ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0lt
bHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhR
aU9pSWdkR1Z6ZENKOWZRPT0iLCJwIjoiYWIifVjsMQIAAADVAAAAS8U5t1gLOmV2ZW50LXR5cGUH
AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF
ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOXpkRzl3SWl3aWFX
NWtaWGdpT2pCOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFkifbyhSHYAAAE2AAAAS2ER2fILOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVu
dC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoi
ZXlKMGVYQmxJam9pYldWemMyRm5aVjlrWld4MFlTSXNJbVJsYkhSaElqcDdJbk4wYjNCZmNtVmhj
Mjl1SWpvaVpXNWtYM1IxY200aUxDSnpkRzl3WDNObGNYVmxibU5sSWpwdWRXeHNmU3dpZFhOaFoy
VWlPbnNpYjNWMGNIVjBYM1J2YTJWdWN5STZPSDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzIn1GPfIoAAABVgAAAEv4I66/Czpl
dmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3Nh
Z2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpjMkZuWlY5emRHOXdJaXdp
WVcxaGVtOXVMV0psWkhKdlkyc3RhVzUyYjJOaGRHbHZiazFsZEhKcFkzTWlPbnNpYVc1d2RYUlVi
MnRsYmtOdmRXNTBJam96Tnl3aWIzVjBjSFYwVkc5clpXNURiM1Z1ZENJNk9Dd2lhVzUyYjJOaGRH
bHZia3hoZEdWdVkza2lPalEyTUN3aVptbHljM1JDZVhSbFRHRjBaVzVqZVNJNk16ZzFmWDA9Iiwi
cCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGIn2cl+ym
headers:
Connection:
- keep-alive
Content-Type:
- application/vnd.amazon.eventstream
Date:
- Thu, 13 Feb 2025 14:11:45 GMT
Set-Cookie: test_set_cookie
Transfer-Encoding:
- chunked
X-Amzn-Bedrock-Content-Type:
- application/json
x-amzn-RequestId:
- f2e57698-369e-455f-ba0c-ee76c7cc9b0e
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,173 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test"
}
]
}
],
"inferenceConfig": {
"max_new_tokens": 10
},
"schemaVersion": "messages-v1",
"system": [
{
"text": "You are a friendly model"
}
]
}
headers:
Content-Length:
- '335'
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:
- 20250213T141142Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-28ed5f06-78a0ef90426228c4d5ebde31;Parent=4113da3ba221a595;Sampled=1
amz-sdk-invocation-id:
- e1dd3bf8-0b4f-47e7-84f9-6bef53b8b7d8
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 |
AAAAuAAAAEukmwSkCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnRaWE56WVdkbFUzUmhj
blFpT25zaWNtOXNaU0k2SW1GemMybHpkR0Z1ZENKOWZRPT0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v
cHFyc3R1diJ9TyaZ3wAAANQAAABL+Fme6As6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5
cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpq
YjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pVkdocGN5SjlM
Q0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2TUgxOSIsInAiOiJhYmNkZWZnaGlqIn2IqYJIAAAA
wgAAAEsX+fzKCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u
L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRU
ZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam93ZlgwPSIsInAiOiJhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3gifYUcwhMAAADjAAAAS+tY+n4LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29u
dGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVz
IjoiZXlKamIyNTBaVzUwUW14dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlH
bHpJbjBzSW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveGZYMD0iLCJwIjoiYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eSJ9J0L/9wAAAMkAAABLYCnN2ws6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250
ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMi
OiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpv
eGZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERSJ9jdOkZgAAAPAAAABL
zBgXLAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u
DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZ
U0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUdFaWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pY
Z2lPako5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTCJ9
ruuoXwAAALYAAABLG6u6xQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBs
aWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBR
bXh2WTJ0VGRHOXdJanA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpveWZYMD0iLCJwIjoiYWJj
ZGVmZ2hpamtsIn2fJhOOAAAA5wAAAEse2Fy+CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt
dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5
SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJSFJsYzNR
aWZTd2lZMjl1ZEdWdWRFSnNiMk5yU1c1a1pYZ2lPak45ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5In3/2HgbAAAA1AAAAEv4WZ7oCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRl
bnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6
ImV5SmpiMjUwWlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam96
ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1AifcsN
PjAAAADwAAAAS8wYFywLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGlj
YXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBaVzUwUW14
dlkydEVaV3gwWVNJNmV5SmtaV3gwWVNJNmV5SjBaWGgwSWpvaUlHRm5ZV2x1SW4wc0ltTnZiblJs
Ym5SQ2JHOWphMGx1WkdWNElqbzBmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
QUJDREVGR0gifaIdtT0AAADcAAAAS8gp1SkLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10
eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlK
amIyNTBaVzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqbzBmWDA9
IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldY
In3Z8oGWAAAA1gAAAEuCmc2ICzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFw
cGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1
MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lMaUo5TENKamIyNTBaVzUw
UW14dlkydEpibVJsZUNJNk5YMTkiLCJwIjoiYWJjZGVmZ2hpamtsbW5vcCJ9ex1DVwAAAMIAAABL
F/n8ygs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29u
DTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0VGRHOXdJ
anA3SW1OdmJuUmxiblJDYkc5amEwbHVaR1Y0SWpvMWZYMD0iLCJwIjoiYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4In2llAWqAAAA3QAAAEv1SfyZCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQt
dHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5
SmpiMjUwWlc1MFFteHZZMnRFWld4MFlTSTZleUprWld4MFlTSTZleUowWlhoMElqb2lJRWxtSW4w
c0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqbzJmWDA9IiwicCI6ImFiY2RlZmdoaWprbG1ub3Bx
cnMifT/cYeQAAADjAAAAS+tY+n4LOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQ
YXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKamIyNTBa
VzUwUW14dlkydFRkRzl3SWpwN0ltTnZiblJsYm5SQ2JHOWphMGx1WkdWNElqbzJmWDA9IiwicCI6
ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIz
NCJ9ttyqAgAAANoAAABLR2kgiQs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBh
cHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUpqYjI1MFpX
NTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJam9pSUhsdmRTSjlMQ0pqYjI1
MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2TjMxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wIn3JnmorAAAA
ygAAAEsnibcLCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u
L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRU
ZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam8zZlgwPSIsInAiOiJhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ekFCQ0RFRiJ9jsN0TAAAAP4AAABLcyipTQs6ZXZlbnQtdHlwZQcABWNo
dW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu
dHsiYnl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpY
aDBJam9pSUc1bFpXUWlmU3dpWTI5dWRHVnVkRUpzYjJOclNXNWtaWGdpT2poOWZRPT0iLCJwIjoi
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWIn0GwPyfAAAA
xwAAAEvfGXO6CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9u
L2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUwWlc1MFFteHZZMnRU
ZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam80ZlgwPSIsInAiOiJhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ekFCQyJ9PFvNGQAAANQAAABL+Fme6As6ZXZlbnQtdHlwZQcABWNodW5r
DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsi
Ynl0ZXMiOiJleUpqYjI1MFpXNTBRbXh2WTJ0RVpXeDBZU0k2ZXlKa1pXeDBZU0k2ZXlKMFpYaDBJ
am9pSUdGdWVTSjlMQ0pqYjI1MFpXNTBRbXh2WTJ0SmJtUmxlQ0k2T1gxOSIsInAiOiJhYmNkZWZn
aGlqIn1/oYekAAAA1AAAAEv4WZ7oCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcA
EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjUw
Wlc1MFFteHZZMnRUZEc5d0lqcDdJbU52Ym5SbGJuUkNiRzlqYTBsdVpHVjRJam81ZlgwPSIsInAi
OiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1AifX/ON2kAAACtAAAA
SwybHFYLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNv
bg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKdFpYTnpZV2RsVTNSdmNDSTZleUp6
ZEc5d1VtVmhjMjl1SWpvaWJXRjRYM1J2YTJWdWN5SjlmUT09IiwicCI6ImFiYyJ9Hvkn7gAAAjYA
AABL54WrXAs6ZXZlbnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9q
c29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUp0WlhSaFpHRjBZU0k2ZXlKMWMy
Rm5aU0k2ZXlKcGJuQjFkRlJ2YTJWdWN5STZNalVzSW05MWRIQjFkRlJ2YTJWdWN5STZNVEFzSW1O
aFkyaGxVbVZoWkVsdWNIVjBWRzlyWlc1RGIzVnVkQ0k2TUN3aVkyRmphR1ZYY21sMFpVbHVjSFYw
Vkc5clpXNURiM1Z1ZENJNk1IMHNJbTFsZEhKcFkzTWlPbnQ5TENKMGNtRmpaU0k2ZTMxOUxDSmhi
V0Y2YjI0dFltVmtjbTlqYXkxcGJuWnZZMkYwYVc5dVRXVjBjbWxqY3lJNmV5SnBibkIxZEZSdmEy
VnVRMjkxYm5RaU9qSTFMQ0p2ZFhSd2RYUlViMnRsYmtOdmRXNTBJam94TUN3aWFXNTJiMk5oZEds
dmJreGhkR1Z1WTNraU9qRTVOeXdpWm1seWMzUkNlWFJsVEdGMFpXNWplU0k2TnpJc0ltTmhZMmhs
VW1WaFpFbHVjSFYwVkc5clpXNURiM1Z1ZENJNk1Dd2lZMkZqYUdWWGNtbDBaVWx1Y0hWMFZHOXJa
VzVEYjNWdWRDSTZNSDE5IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0In2+XMjJ
headers:
Connection:
- keep-alive
Content-Type:
- application/vnd.amazon.eventstream
Date:
- Thu, 13 Feb 2025 14:11:43 GMT
Set-Cookie: test_set_cookie
Transfer-Encoding:
- chunked
X-Amzn-Bedrock-Content-Type:
- application/json
x-amzn-RequestId:
- 406cb91b-9ad8-4309-baf1-769a289b7df1
status:
code: 200
message: OK
version: 1

View File

@ -0,0 +1,124 @@
interactions:
- request:
body: |-
{
"messages": [
{
"role": "user",
"content": [
{
"text": "Say this is a test",
"type": "text"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "This is a test",
"type": "text"
}
]
},
{
"role": "user",
"content": [
{
"text": "Say again this is a test",
"type": "text"
}
]
}
],
"anthropic_version": "bedrock-2023-05-31",
"system": "You are a friendly model",
"max_tokens": 10
}
headers:
Content-Length:
- '357'
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:
- 20250213T141143Z
X-Amz-Security-Token:
- test_aws_security_token
X-Amzn-Trace-Id:
- Root=1-a7421915-90c1cf280ff1d9482f772c88;Parent=9b34e4bcd8b69db4;Sampled=1
amz-sdk-invocation-id:
- f8aca0ab-34a1-4185-9551-b5d28c4e0be9
amz-sdk-request:
- attempt=1
authorization:
- Bearer test_aws_authorization
method: POST
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-v2/invoke-with-response-stream
response:
body:
string: !!binary |
AAABtwAAAEvtl0DQCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0
aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJsSWpvaWJXVnpj
MkZuWlY5emRHRnlkQ0lzSW0xbGMzTmhaMlVpT25zaWFXUWlPaUp0YzJkZlltUnlhMTh3TVUweWFr
TjNWbE5tZDFkaldFRnlaME5UZVRodE1XWWlMQ0owZVhCbElqb2liV1Z6YzJGblpTSXNJbkp2YkdV
aU9pSmhjM05wYzNSaGJuUWlMQ0p0YjJSbGJDSTZJbU5zWVhWa1pTMHlMakFpTENKamIyNTBaVzUw
SWpwYlhTd2ljM1J2Y0Y5eVpXRnpiMjRpT201MWJHd3NJbk4wYjNCZmMyVnhkV1Z1WTJVaU9tNTFi
R3dzSW5WellXZGxJanA3SW1sdWNIVjBYM1J2YTJWdWN5STZNemNzSW05MWRIQjFkRjkwYjJ0bGJu
TWlPakY5ZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcSJ9c5WqNgAAAPcAAABLfjjLPAs6ZXZl
bnQtdHlwZQcABWNodW5rDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdl
LXR5cGUHAAVldmVudHsiYnl0ZXMiOiJleUowZVhCbElqb2lZMjl1ZEdWdWRGOWliRzlqYTE5emRH
RnlkQ0lzSW1sdVpHVjRJam93TENKamIyNTBaVzUwWDJKc2IyTnJJanA3SW5SNWNHVWlPaUowWlho
MElpd2lkR1Y0ZENJNklpSjlmUT09IiwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHkifXQG
3pQAAAEFAAAAS4eQG6QLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGlj
YXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5
dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJs
SWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhRaU9pSlVhR2x6SW4xOSIsInAiOiJhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE0iffHQpi0AAAEaAAAAS2UgG/cLOmV2ZW50LXR5
cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBl
BwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJ
c0ltbHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJs
ZUhRaU9pSWdhWE1pZlgwPSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1NjcifYA9TRcAAAEGAAAAS8AwYXQLOmV2ZW50LXR5cGUH
AAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF
ZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlpYkc5amExOWtaV3gwWVNJc0lt
bHVaR1Y0SWpvd0xDSmtaV3gwWVNJNmV5SjBlWEJsSWpvaWRHVjRkRjlrWld4MFlTSXNJblJsZUhR
aU9pSWdZU0o5ZlE9PSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpL
TE1OIn26R/hGAAABDQAAAEu34FBlCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcA
EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SjBlWEJs
SWpvaVkyOXVkR1Z1ZEY5aWJHOWphMTlrWld4MFlTSXNJbWx1WkdWNElqb3dMQ0prWld4MFlTSTZl
eUowZVhCbElqb2lkR1Y0ZEY5a1pXeDBZU0lzSW5SbGVIUWlPaUlnZEdWemRDSjlmUT09IiwicCI6
ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFEifUsoqQQAAADHAAAA
S98Zc7oLOmV2ZW50LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNv
bg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pWTI5dWRHVnVkRjlp
Ykc5amExOXpkRzl3SWl3aWFXNWtaWGdpT2pCOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ekFCQ0RFRkdISUpLIn289g6LAAABLgAAAEsxgQWxCzpldmVudC10eXBlBwAFY2h1bmsNOmNv
bnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRl
cyI6ImV5SjBlWEJsSWpvaWJXVnpjMkZuWlY5a1pXeDBZU0lzSW1SbGJIUmhJanA3SW5OMGIzQmZj
bVZoYzI5dUlqb2laVzVrWDNSMWNtNGlMQ0p6ZEc5d1gzTmxjWFZsYm1ObElqcHVkV3hzZlN3aWRY
TmhaMlVpT25zaWIzVjBjSFYwWDNSdmEyVnVjeUk2T0gxOSIsInAiOiJhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVYifezNQVkAAAFWAAAAS/gjrr8LOmV2ZW50
LXR5cGUHAAVjaHVuaw06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10
eXBlBwAFZXZlbnR7ImJ5dGVzIjoiZXlKMGVYQmxJam9pYldWemMyRm5aVjl6ZEc5d0lpd2lZVzFo
ZW05dUxXSmxaSEp2WTJzdGFXNTJiMk5oZEdsdmJrMWxkSEpwWTNNaU9uc2lhVzV3ZFhSVWIydGxi
a052ZFc1MElqb3pOeXdpYjNWMGNIVjBWRzlyWlc1RGIzVnVkQ0k2T0N3aWFXNTJiMk5oZEdsdmJr
eGhkR1Z1WTNraU9qUXpNaXdpWm1seWMzUkNlWFJsVEdGMFpXNWplU0k2TXpVNGZYMD0iLCJwIjoi
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUYifYwQjVc=
headers:
Connection:
- keep-alive
Content-Type:
- application/vnd.amazon.eventstream
Date:
- Thu, 13 Feb 2025 14:11:44 GMT
Set-Cookie: test_set_cookie
Transfer-Encoding:
- chunked
X-Amzn-Bedrock-Content-Type:
- application/json
x-amzn-RequestId:
- 2423a140-3984-4d26-8741-1484ad05d541
status:
code: 200
message: OK
version: 1

View File

@ -12,6 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# pylint:disable=too-many-lines
from __future__ import annotations
import json
@ -83,6 +85,87 @@ def test_converse_with_content(
assert_message_in_logs(logs[0], "gen_ai.user.message", user_content, span)
@pytest.mark.skipif(
BOTO3_VERSION < (1, 35, 56), reason="Converse API not available"
)
@pytest.mark.vcr()
def test_converse_with_content_different_events(
span_exporter,
log_exporter,
bedrock_runtime_client,
instrument_with_content,
):
# pylint:disable=too-many-locals
messages = anthropic_claude_converse_messages()
llm_model_value = "anthropic.claude-v2"
system_content = anthropic_claude_converse_system()
response = bedrock_runtime_client.converse(
system=system_content,
messages=messages,
modelId=llm_model_value,
)
(span,) = span_exporter.get_finished_spans()
assert_converse_completion_attributes(
span,
llm_model_value,
response,
"chat",
)
logs = log_exporter.get_finished_logs()
assert len(logs) == 4
assert_message_in_logs(
logs[0], "gen_ai.system.message", {"content": system_content}, span
)
user_message, assistant_message, last_user_message = messages
user_content = filter_message_keys(user_message, ["content"])
assert_message_in_logs(logs[1], "gen_ai.user.message", user_content, span)
assistant_content = filter_message_keys(assistant_message, ["content"])
assert_message_in_logs(
logs[2], "gen_ai.assistant.message", assistant_content, span
)
last_user_content = filter_message_keys(last_user_message, ["content"])
assert_message_in_logs(
logs[3], "gen_ai.user.message", last_user_content, span
)
@pytest.mark.skipif(
BOTO3_VERSION < (1, 35, 56), reason="Converse API not available"
)
@pytest.mark.vcr()
def test_converse_no_content_different_events(
span_exporter,
log_exporter,
bedrock_runtime_client,
instrument_no_content,
):
messages = anthropic_claude_converse_messages()
llm_model_value = "anthropic.claude-v2"
system_content = anthropic_claude_converse_system()
response = bedrock_runtime_client.converse(
system=system_content,
messages=messages,
modelId=llm_model_value,
)
(span,) = span_exporter.get_finished_spans()
assert_converse_completion_attributes(
span,
llm_model_value,
response,
"chat",
)
logs = log_exporter.get_finished_logs()
assert len(logs) == 4
assert_message_in_logs(logs[0], "gen_ai.system.message", None, span)
assert_message_in_logs(logs[1], "gen_ai.user.message", None, span)
assert_message_in_logs(logs[2], "gen_ai.assistant.message", None, span)
assert_message_in_logs(logs[3], "gen_ai.user.message", None, span)
@pytest.mark.skipif(
BOTO3_VERSION < (1, 35, 56), reason="Converse API not available"
)
@ -225,6 +308,58 @@ def test_converse_stream_with_content(
assert_message_in_logs(logs[0], "gen_ai.user.message", user_content, span)
@pytest.mark.skipif(
BOTO3_VERSION < (1, 35, 56), reason="ConverseStream API not available"
)
@pytest.mark.vcr()
def test_converse_stream_with_content_different_events(
span_exporter,
log_exporter,
bedrock_runtime_client,
instrument_with_content,
):
# pylint:disable=too-many-locals
messages = anthropic_claude_converse_messages()
llm_model_value = "anthropic.claude-v2"
system_content = anthropic_claude_converse_system()
response = bedrock_runtime_client.converse_stream(
system=system_content,
messages=messages,
modelId=llm_model_value,
)
# consume the stream in order to have it traced
for _ in response["stream"]:
pass
(span,) = span_exporter.get_finished_spans()
assert_stream_completion_attributes(
span,
llm_model_value,
input_tokens=mock.ANY,
output_tokens=mock.ANY,
finish_reason=("end_turn",),
operation_name="chat",
)
logs = log_exporter.get_finished_logs()
assert len(logs) == 4
assert_message_in_logs(
logs[0], "gen_ai.system.message", {"content": system_content}, span
)
user_message, assistant_message, last_user_message = messages
user_content = filter_message_keys(user_message, ["content"])
assert_message_in_logs(logs[1], "gen_ai.user.message", user_content, span)
assistant_content = filter_message_keys(assistant_message, ["content"])
assert_message_in_logs(
logs[2], "gen_ai.assistant.message", assistant_content, span
)
last_user_content = filter_message_keys(last_user_message, ["content"])
assert_message_in_logs(
logs[3], "gen_ai.user.message", last_user_content, span
)
@pytest.mark.skipif(
BOTO3_VERSION < (1, 35, 56), reason="ConverseStream API not available"
)
@ -289,6 +424,47 @@ def test_converse_stream_no_content(
assert_message_in_logs(logs[0], "gen_ai.user.message", None, span)
@pytest.mark.skipif(
BOTO3_VERSION < (1, 35, 56), reason="ConverseStream API not available"
)
@pytest.mark.vcr()
def test_converse_stream_no_content_different_events(
span_exporter,
log_exporter,
bedrock_runtime_client,
instrument_no_content,
):
messages = anthropic_claude_converse_messages()
llm_model_value = "anthropic.claude-v2"
system_content = anthropic_claude_converse_system()
response = bedrock_runtime_client.converse_stream(
system=system_content,
messages=messages,
modelId=llm_model_value,
)
# consume the stream in order to have it traced
for _ in response["stream"]:
pass
(span,) = span_exporter.get_finished_spans()
assert_stream_completion_attributes(
span,
llm_model_value,
input_tokens=mock.ANY,
output_tokens=mock.ANY,
finish_reason=("end_turn",),
operation_name="chat",
)
logs = log_exporter.get_finished_logs()
assert len(logs) == 4
assert_message_in_logs(logs[0], "gen_ai.system.message", None, span)
assert_message_in_logs(logs[1], "gen_ai.user.message", None, span)
assert_message_in_logs(logs[2], "gen_ai.assistant.message", None, span)
assert_message_in_logs(logs[3], "gen_ai.user.message", None, span)
@pytest.mark.skipif(
BOTO3_VERSION < (1, 35, 56), reason="ConverseStream API not available"
)
@ -391,6 +567,8 @@ def get_invoke_model_body(
temperature=None,
top_p=None,
stop_sequences=None,
system=None,
messages=None,
):
def set_if_not_none(config, key, value):
if value is not None:
@ -404,10 +582,14 @@ def get_invoke_model_body(
set_if_not_none(config, "topP", top_p)
set_if_not_none(config, "stopSequences", stop_sequences)
body = {
"messages": [{"role": "user", "content": [{"text": prompt}]}],
"messages": messages
if messages
else [{"role": "user", "content": [{"text": prompt}]}],
"inferenceConfig": config,
"schemaVersion": "messages-v1",
}
if system:
body["system"] = system
elif llm_model == "amazon.titan-text-lite-v1":
config = {}
set_if_not_none(config, "maxTokenCount", max_tokens)
@ -417,11 +599,15 @@ def get_invoke_model_body(
body = {"inputText": prompt, "textGenerationConfig": config}
elif llm_model == "anthropic.claude-v2":
body = {
"messages": [
"messages": messages
if messages
else [
{"role": "user", "content": [{"text": prompt, "type": "text"}]}
],
"anthropic_version": "bedrock-2023-05-31",
}
if system:
body["system"] = system
set_if_not_none(body, "max_tokens", max_tokens)
set_if_not_none(body, "temperature", temperature)
set_if_not_none(body, "top_p", top_p)
@ -486,6 +672,69 @@ def test_invoke_model_with_content(
assert_message_in_logs(logs[0], "gen_ai.user.message", user_content, span)
@pytest.mark.parametrize(
"model_family",
["amazon.nova", "anthropic.claude"],
)
@pytest.mark.vcr()
def test_invoke_model_with_content_different_events(
span_exporter,
log_exporter,
bedrock_runtime_client,
instrument_with_content,
model_family,
):
# pylint:disable=too-many-locals
llm_model_value = get_model_name_from_family(model_family)
max_tokens = 10
if llm_model_value == "amazon.nova-micro-v1:0":
messages = amazon_nova_messages()
system = amazon_nova_system()
elif llm_model_value == "anthropic.claude-v2":
messages = anthropic_claude_messages()
system = anthropic_claude_system()
body = get_invoke_model_body(
llm_model_value,
system=system,
messages=messages,
max_tokens=max_tokens,
)
response = bedrock_runtime_client.invoke_model(
body=body,
modelId=llm_model_value,
)
(span,) = span_exporter.get_finished_spans()
assert_completion_attributes_from_streaming_body(
span,
llm_model_value,
response,
"chat",
request_max_tokens=max_tokens,
)
logs = log_exporter.get_finished_logs()
assert len(logs) == 4
assert_message_in_logs(
logs[0],
"gen_ai.system.message",
{"content": [{"text": "You are a friendly model"}]},
span,
)
user_message, assistant_message, last_user_message = messages
user_content = filter_message_keys(user_message, ["content"])
assert_message_in_logs(logs[1], "gen_ai.user.message", user_content, span)
assistant_content = filter_message_keys(assistant_message, ["content"])
assert_message_in_logs(
logs[2], "gen_ai.assistant.message", assistant_content, span
)
last_user_content = filter_message_keys(last_user_message, ["content"])
assert_message_in_logs(
logs[3], "gen_ai.user.message", last_user_content, span
)
@pytest.mark.parametrize(
"model_family",
["amazon.nova", "amazon.titan", "anthropic.claude"],
@ -525,6 +774,55 @@ def test_invoke_model_no_content(
assert_message_in_logs(logs[0], "gen_ai.user.message", None, span)
@pytest.mark.parametrize(
"model_family",
["amazon.nova", "anthropic.claude"],
)
@pytest.mark.vcr()
def test_invoke_model_no_content_different_events(
span_exporter,
log_exporter,
bedrock_runtime_client,
instrument_no_content,
model_family,
):
llm_model_value = get_model_name_from_family(model_family)
max_tokens = 10
if llm_model_value == "amazon.nova-micro-v1:0":
messages = amazon_nova_messages()
system = amazon_nova_system()
elif llm_model_value == "anthropic.claude-v2":
messages = anthropic_claude_messages()
system = anthropic_claude_system()
body = get_invoke_model_body(
llm_model_value,
max_tokens=max_tokens,
system=system,
messages=messages,
)
response = bedrock_runtime_client.invoke_model(
body=body,
modelId=llm_model_value,
)
(span,) = span_exporter.get_finished_spans()
assert_completion_attributes_from_streaming_body(
span,
llm_model_value,
response,
"chat",
request_max_tokens=max_tokens,
)
logs = log_exporter.get_finished_logs()
assert len(logs) == 4
assert_message_in_logs(logs[0], "gen_ai.system.message", None, span)
assert_message_in_logs(logs[1], "gen_ai.user.message", None, span)
assert_message_in_logs(logs[2], "gen_ai.assistant.message", None, span)
assert_message_in_logs(logs[3], "gen_ai.user.message", None, span)
@pytest.mark.vcr()
def test_invoke_model_with_invalid_model(
span_exporter,
@ -647,6 +945,221 @@ def test_invoke_model_with_response_stream_with_content(
assert_message_in_logs(logs[0], "gen_ai.user.message", user_content, span)
@pytest.mark.parametrize(
"model_family",
["amazon.nova", "anthropic.claude"],
)
@pytest.mark.vcr()
def test_invoke_model_with_response_stream_with_content_different_events(
span_exporter,
log_exporter,
bedrock_runtime_client,
instrument_with_content,
model_family,
):
# pylint:disable=too-many-locals
llm_model_value = get_model_name_from_family(model_family)
if llm_model_value == "amazon.nova-micro-v1:0":
messages = amazon_nova_messages()
system = amazon_nova_system()
finish_reason = "max_tokens"
elif llm_model_value == "anthropic.claude-v2":
messages = anthropic_claude_messages()
system = anthropic_claude_system()
finish_reason = "end_turn"
max_tokens = 10
body = get_invoke_model_body(
llm_model_value,
system=system,
messages=messages,
max_tokens=max_tokens,
)
response = bedrock_runtime_client.invoke_model_with_response_stream(
body=body,
modelId=llm_model_value,
)
# consume the stream in order to have it traced
for _ in response["body"]:
pass
(span,) = span_exporter.get_finished_spans()
assert_stream_completion_attributes(
span,
llm_model_value,
input_tokens=mock.ANY,
output_tokens=mock.ANY,
request_max_tokens=max_tokens,
finish_reason=(finish_reason,),
operation_name="chat",
)
logs = log_exporter.get_finished_logs()
assert len(logs) == 4
assert_message_in_logs(
logs[0],
"gen_ai.system.message",
{"content": [{"text": "You are a friendly model"}]},
span,
)
user_message, assistant_message, last_user_message = messages
user_content = filter_message_keys(user_message, ["content"])
assert_message_in_logs(logs[1], "gen_ai.user.message", user_content, span)
assistant_content = filter_message_keys(assistant_message, ["content"])
assert_message_in_logs(
logs[2], "gen_ai.assistant.message", assistant_content, span
)
last_user_content = filter_message_keys(last_user_message, ["content"])
assert_message_in_logs(
logs[3], "gen_ai.user.message", last_user_content, span
)
@pytest.mark.parametrize(
"model_family",
["amazon.nova", "amazon.titan", "anthropic.claude"],
)
@pytest.mark.vcr()
def test_invoke_model_with_response_stream_no_content(
span_exporter,
log_exporter,
bedrock_runtime_client,
instrument_no_content,
model_family,
):
# pylint:disable=too-many-locals,too-many-branches
llm_model_value = get_model_name_from_family(model_family)
max_tokens, temperature, top_p, stop_sequences = 10, 0.8, 1, ["|"]
body = get_invoke_model_body(
llm_model_value, max_tokens, temperature, top_p, stop_sequences
)
response = bedrock_runtime_client.invoke_model_with_response_stream(
body=body,
modelId=llm_model_value,
)
# consume the stream in order to have it traced
finish_reason = None
input_tokens, output_tokens = None, None
text = ""
for event in response["body"]:
json_bytes = event["chunk"].get("bytes", b"")
decoded = json_bytes.decode("utf-8")
chunk = json.loads(decoded)
# amazon.titan
if (stop_reason := chunk.get("completionReason")) is not None:
finish_reason = stop_reason
if (output_text := chunk.get("outputText")) is not None:
text += output_text
# amazon.titan, anthropic.claude
if invocation_metrics := chunk.get("amazon-bedrock-invocationMetrics"):
input_tokens = invocation_metrics["inputTokenCount"]
output_tokens = invocation_metrics["outputTokenCount"]
# anthropic.claude
if (message_type := chunk.get("type")) is not None:
if message_type == "content_block_start":
text += chunk["content_block"]["text"]
elif message_type == "content_block_delta":
text += chunk["delta"]["text"]
elif message_type == "message_delta":
finish_reason = chunk["delta"]["stop_reason"]
# amazon nova
if "contentBlockDelta" in chunk:
text += chunk["contentBlockDelta"]["delta"]["text"]
if "messageStop" in chunk:
finish_reason = chunk["messageStop"]["stopReason"]
if "metadata" in chunk:
usage = chunk["metadata"]["usage"]
input_tokens = usage["inputTokens"]
output_tokens = usage["outputTokens"]
assert text
assert finish_reason
assert input_tokens
assert output_tokens
(span,) = span_exporter.get_finished_spans()
assert_stream_completion_attributes(
span,
llm_model_value,
input_tokens,
output_tokens,
(finish_reason,),
"text_completion" if model_family == "amazon.titan" else "chat",
top_p,
temperature,
max_tokens,
stop_sequences,
)
logs = log_exporter.get_finished_logs()
assert len(logs) == 1
assert_message_in_logs(logs[0], "gen_ai.user.message", None, span)
@pytest.mark.parametrize(
"model_family",
["amazon.nova", "anthropic.claude"],
)
@pytest.mark.vcr()
def test_invoke_model_with_response_stream_no_content_different_events(
span_exporter,
log_exporter,
bedrock_runtime_client,
instrument_no_content,
model_family,
):
llm_model_value = get_model_name_from_family(model_family)
if llm_model_value == "amazon.nova-micro-v1:0":
messages = amazon_nova_messages()
system = amazon_nova_system()
finish_reason = "max_tokens"
elif llm_model_value == "anthropic.claude-v2":
messages = anthropic_claude_messages()
system = anthropic_claude_system()
finish_reason = "end_turn"
max_tokens = 10
body = get_invoke_model_body(
llm_model_value,
system=system,
messages=messages,
max_tokens=max_tokens,
)
response = bedrock_runtime_client.invoke_model_with_response_stream(
body=body,
modelId=llm_model_value,
)
# consume the stream in order to have it traced
for _ in response["body"]:
pass
(span,) = span_exporter.get_finished_spans()
assert_stream_completion_attributes(
span,
llm_model_value,
input_tokens=mock.ANY,
output_tokens=mock.ANY,
request_max_tokens=max_tokens,
finish_reason=(finish_reason,),
operation_name="chat",
)
logs = log_exporter.get_finished_logs()
assert len(logs) == 4
assert_message_in_logs(logs[0], "gen_ai.system.message", None, span)
assert_message_in_logs(logs[1], "gen_ai.user.message", None, span)
assert_message_in_logs(logs[2], "gen_ai.assistant.message", None, span)
assert_message_in_logs(logs[3], "gen_ai.user.message", None, span)
@pytest.mark.vcr()
def test_invoke_model_with_response_stream_handles_stream_error(
span_exporter,
@ -672,7 +1185,7 @@ def test_invoke_model_with_response_stream_handles_stream_error(
EventStream,
"_parse_event",
side_effect=EventStreamError(
{"modelStreamErrorException": {}}, "InvokeModelWithRespnseStream"
{"modelStreamErrorException": {}}, "InvokeModelWithResponseStream"
),
):
with pytest.raises(EventStreamError):
@ -726,3 +1239,49 @@ def test_invoke_model_with_response_stream_invalid_model(
logs = log_exporter.get_finished_logs()
assert len(logs) == 0
def amazon_nova_messages():
return [
{"role": "user", "content": [{"text": "Say this is a test"}]},
{"role": "assistant", "content": [{"text": "This is a test"}]},
{
"role": "user",
"content": [{"text": "Say again this is a test"}],
},
]
def amazon_nova_system():
return [
{"text": "You are a friendly model"},
]
def anthropic_claude_converse_messages():
return amazon_nova_messages()
def anthropic_claude_converse_system():
return amazon_nova_system()
def anthropic_claude_messages():
return [
{
"role": "user",
"content": [{"text": "Say this is a test", "type": "text"}],
},
{
"role": "assistant",
"content": [{"text": "This is a test", "type": "text"}],
},
{
"role": "user",
"content": [{"text": "Say again this is a test", "type": "text"}],
},
]
def anthropic_claude_system():
return "You are a friendly model"