langtrace-python-sdk 3.8.18__py3-none-any.whl → 3.8.21__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,10 @@ APIS = {
5
5
  "METHOD": "aws_bedrock.invoke_model",
6
6
  "ENDPOINT": "/invoke-model",
7
7
  },
8
+ "INVOKE_MODEL_WITH_RESPONSE_STREAM": {
9
+ "METHOD": "aws_bedrock.invoke_model_with_response_stream",
10
+ "ENDPOINT": "/invoke-model-with-response-stream",
11
+ },
8
12
  "CONVERSE": {
9
13
  "METHOD": AWSBedrockMethods.CONVERSE.value,
10
14
  "ENDPOINT": "/converse",
@@ -15,8 +15,10 @@ limitations under the License.
15
15
  """
16
16
 
17
17
  import json
18
+ import io
18
19
 
19
20
  from wrapt import ObjectProxy
21
+ from itertools import tee
20
22
  from .stream_body_wrapper import BufferedStreamBody
21
23
  from functools import wraps
22
24
  from langtrace.trace_attributes import (
@@ -43,6 +45,7 @@ from langtrace_python_sdk.utils.llm import (
43
45
  set_span_attributes,
44
46
  set_usage_attributes,
45
47
  )
48
+ from langtrace_python_sdk.utils import set_event_prompt
46
49
 
47
50
 
48
51
  def converse_stream(original_method, version, tracer):
@@ -104,7 +107,7 @@ def patch_aws_bedrock(tracer, version):
104
107
  def patch_converse_stream(original_method, tracer, version):
105
108
  def traced_method(*args, **kwargs):
106
109
  modelId = kwargs.get("modelId")
107
- (vendor, _) = modelId.split(".")
110
+ vendor, _ = parse_vendor_and_model_name_from_model_id(modelId)
108
111
  input_content = [
109
112
  {
110
113
  "role": message.get("role", "user"),
@@ -128,7 +131,9 @@ def patch_converse_stream(original_method, tracer, version):
128
131
  response = original_method(*args, **kwargs)
129
132
 
130
133
  if span.is_recording():
131
- set_span_streaming_response(span, response)
134
+ stream1, stream2 = tee(response["stream"])
135
+ set_span_streaming_response(span, stream1)
136
+ response["stream"] = stream2
132
137
  return response
133
138
 
134
139
  return traced_method
@@ -137,7 +142,7 @@ def patch_converse_stream(original_method, tracer, version):
137
142
  def patch_converse(original_method, tracer, version):
138
143
  def traced_method(*args, **kwargs):
139
144
  modelId = kwargs.get("modelId")
140
- (vendor, _) = modelId.split(".")
145
+ vendor, _ = parse_vendor_and_model_name_from_model_id(modelId)
141
146
  input_content = [
142
147
  {
143
148
  "role": message.get("role", "user"),
@@ -167,12 +172,29 @@ def patch_converse(original_method, tracer, version):
167
172
  return traced_method
168
173
 
169
174
 
175
+ def parse_vendor_and_model_name_from_model_id(model_id):
176
+ if model_id.startswith("arn:aws:bedrock:"):
177
+ # This needs to be in one of the following forms:
178
+ # arn:aws:bedrock:region:account-id:foundation-model/vendor.model-name
179
+ # arn:aws:bedrock:region:account-id:custom-model/vendor.model-name/model-id
180
+ parts = model_id.split("/")
181
+ identifiers = parts[1].split(".")
182
+ return identifiers[0], identifiers[1]
183
+ parts = model_id.split(".")
184
+ if len(parts) == 1:
185
+ return parts[0], parts[0]
186
+ else:
187
+ return parts[-2], parts[-1]
188
+
189
+
170
190
  def patch_invoke_model(original_method, tracer, version):
171
191
  def traced_method(*args, **kwargs):
172
192
  modelId = kwargs.get("modelId")
173
- (vendor, _) = modelId.split(".")
193
+ vendor, _ = parse_vendor_and_model_name_from_model_id(modelId)
174
194
  span_attributes = {
175
195
  **get_langtrace_attributes(version, vendor, vendor_type="framework"),
196
+ SpanAttributes.LLM_PATH: APIS["INVOKE_MODEL"]["ENDPOINT"],
197
+ SpanAttributes.LLM_IS_STREAMING: False,
176
198
  **get_extra_attributes(),
177
199
  }
178
200
  with tracer.start_as_current_span(
@@ -193,9 +215,11 @@ def patch_invoke_model_with_response_stream(original_method, tracer, version):
193
215
  @wraps(original_method)
194
216
  def traced_method(*args, **kwargs):
195
217
  modelId = kwargs.get("modelId")
196
- (vendor, _) = modelId.split(".")
218
+ vendor, _ = parse_vendor_and_model_name_from_model_id(modelId)
197
219
  span_attributes = {
198
220
  **get_langtrace_attributes(version, vendor, vendor_type="framework"),
221
+ SpanAttributes.LLM_PATH: APIS["INVOKE_MODEL_WITH_RESPONSE_STREAM"]["ENDPOINT"],
222
+ SpanAttributes.LLM_IS_STREAMING: True,
199
223
  **get_extra_attributes(),
200
224
  }
201
225
  span = tracer.start_span(
@@ -217,7 +241,7 @@ def handle_streaming_call(span, kwargs, response):
217
241
  def stream_finished(response_body):
218
242
  request_body = json.loads(kwargs.get("body"))
219
243
 
220
- (vendor, model) = kwargs.get("modelId").split(".")
244
+ vendor, model = parse_vendor_and_model_name_from_model_id(kwargs.get("modelId"))
221
245
 
222
246
  set_span_attribute(span, SpanAttributes.LLM_REQUEST_MODEL, model)
223
247
  set_span_attribute(span, SpanAttributes.LLM_RESPONSE_MODEL, model)
@@ -241,18 +265,22 @@ def handle_streaming_call(span, kwargs, response):
241
265
 
242
266
  def handle_call(span, kwargs, response):
243
267
  modelId = kwargs.get("modelId")
244
- (vendor, model_name) = modelId.split(".")
268
+ vendor, model_name = parse_vendor_and_model_name_from_model_id(modelId)
269
+ read_response_body = response.get("body").read()
270
+ request_body = json.loads(kwargs.get("body"))
271
+ response_body = json.loads(read_response_body)
245
272
  response["body"] = BufferedStreamBody(
246
- response["body"]._raw_stream, response["body"]._content_length
273
+ io.BytesIO(read_response_body), len(read_response_body)
247
274
  )
248
- request_body = json.loads(kwargs.get("body"))
249
- response_body = json.loads(response.get("body").read())
250
275
 
251
276
  set_span_attribute(span, SpanAttributes.LLM_RESPONSE_MODEL, modelId)
252
277
  set_span_attribute(span, SpanAttributes.LLM_REQUEST_MODEL, modelId)
253
278
 
254
279
  if vendor == "amazon":
255
- set_amazon_attributes(span, request_body, response_body)
280
+ if model_name.startswith("titan-embed-text"):
281
+ set_amazon_embedding_attributes(span, request_body, response_body)
282
+ else:
283
+ set_amazon_attributes(span, request_body, response_body)
256
284
 
257
285
  if vendor == "anthropic":
258
286
  if "prompt" in request_body:
@@ -356,6 +384,27 @@ def set_amazon_attributes(span, request_body, response_body):
356
384
  set_event_completion(span, completions)
357
385
 
358
386
 
387
+ def set_amazon_embedding_attributes(span, request_body, response_body):
388
+ input_text = request_body.get("inputText")
389
+ set_event_prompt(span, input_text)
390
+
391
+ embeddings = response_body.get("embedding", [])
392
+ input_tokens = response_body.get("inputTextTokenCount")
393
+ set_usage_attributes(
394
+ span,
395
+ {
396
+ "input_tokens": input_tokens,
397
+ "output": len(embeddings),
398
+ },
399
+ )
400
+ set_span_attribute(
401
+ span, SpanAttributes.LLM_REQUEST_MODEL, request_body.get("modelId")
402
+ )
403
+ set_span_attribute(
404
+ span, SpanAttributes.LLM_RESPONSE_MODEL, request_body.get("modelId")
405
+ )
406
+
407
+
359
408
  def set_anthropic_completions_attributes(span, request_body, response_body):
360
409
  set_span_attribute(
361
410
  span,
@@ -442,10 +491,10 @@ def _set_response_attributes(span, kwargs, result):
442
491
  )
443
492
 
444
493
 
445
- def set_span_streaming_response(span, response):
494
+ def set_span_streaming_response(span, response_stream):
446
495
  streaming_response = ""
447
496
  role = None
448
- for event in response["stream"]:
497
+ for event in response_stream:
449
498
  if "messageStart" in event:
450
499
  role = event["messageStart"]["role"]
451
500
  elif "contentBlockDelta" in event:
@@ -475,13 +524,15 @@ class StreamingBedrockWrapper(ObjectProxy):
475
524
  stream_done_callback=None,
476
525
  ):
477
526
  super().__init__(response)
478
-
479
527
  self._stream_done_callback = stream_done_callback
480
528
  self._accumulating_body = {"generation": ""}
529
+ self.last_chunk = None
481
530
 
482
531
  def __iter__(self):
483
532
  for event in self.__wrapped__:
533
+ # Process the event
484
534
  self._process_event(event)
535
+ # Yield the original event immediately
485
536
  yield event
486
537
 
487
538
  def _process_event(self, event):
@@ -496,7 +547,11 @@ class StreamingBedrockWrapper(ObjectProxy):
496
547
  self._stream_done_callback(decoded_chunk)
497
548
  return
498
549
  if "generation" in decoded_chunk:
499
- self._accumulating_body["generation"] += decoded_chunk.get("generation")
550
+ generation = decoded_chunk.get("generation")
551
+ if self.last_chunk == generation:
552
+ return
553
+ self.last_chunk = generation
554
+ self._accumulating_body["generation"] += generation
500
555
 
501
556
  if type == "message_start":
502
557
  self._accumulating_body = decoded_chunk.get("message")
@@ -505,9 +560,11 @@ class StreamingBedrockWrapper(ObjectProxy):
505
560
  decoded_chunk.get("content_block")
506
561
  )
507
562
  elif type == "content_block_delta":
508
- self._accumulating_body["content"][-1]["text"] += decoded_chunk.get(
509
- "delta"
510
- ).get("text")
563
+ text = decoded_chunk.get("delta").get("text")
564
+ if self.last_chunk == text:
565
+ return
566
+ self.last_chunk = text
567
+ self._accumulating_body["content"][-1]["text"] += text
511
568
 
512
569
  elif self.has_finished(type, decoded_chunk):
513
570
  self._accumulating_body["invocation_metrics"] = decoded_chunk.get(
@@ -33,7 +33,7 @@ class PineconeInstrumentation(BaseInstrumentor):
33
33
  The PineconeInstrumentation class represents the Pinecone instrumentation"""
34
34
 
35
35
  def instrumentation_dependencies(self) -> Collection[str]:
36
- return ["pinecone >= 3.1.0"]
36
+ return ["pinecone >= 3.1.0", "pinecone <= 6.0.2"]
37
37
 
38
38
  def _instrument(self, **kwargs):
39
39
  tracer_provider = kwargs.get("tracer_provider")
@@ -1 +1 @@
1
- __version__ = "3.8.18"
1
+ __version__ = "3.8.21"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langtrace-python-sdk
3
- Version: 3.8.18
3
+ Version: 3.8.21
4
4
  Summary: Python SDK for LangTrace
5
5
  Project-URL: Homepage, https://github.com/Scale3-Labs/langtrace-python-sdk
6
6
  Author-email: Scale3 Labs <engineering@scale3labs.com>
@@ -12,6 +12,7 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: >=3.9
13
13
  Requires-Dist: boto3==1.38.0
14
14
  Requires-Dist: colorama>=0.4.6
15
+ Requires-Dist: deprecated==1.2.18
15
16
  Requires-Dist: fsspec>=2024.6.0
16
17
  Requires-Dist: opentelemetry-api>=1.25.0
17
18
  Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.25.0
@@ -44,7 +45,7 @@ Requires-Dist: ollama; extra == 'dev'
44
45
  Requires-Dist: openai-agents>=0.0.3; extra == 'dev'
45
46
  Requires-Dist: openai>=1.60.0; extra == 'dev'
46
47
  Requires-Dist: phidata; extra == 'dev'
47
- Requires-Dist: pinecone; extra == 'dev'
48
+ Requires-Dist: pinecone<=6.0.2,>=3.1.0; extra == 'dev'
48
49
  Requires-Dist: python-dotenv; extra == 'dev'
49
50
  Requires-Dist: qdrant-client; extra == 'dev'
50
51
  Requires-Dist: weaviate-client; extra == 'dev'
@@ -121,12 +121,12 @@ examples/weaviate_example/__init__.py,sha256=8JMDBsRSEV10HfTd-YC7xb4txBjD3la56sn
121
121
  examples/weaviate_example/query_text.py,sha256=wPHQTc_58kPoKTZMygVjTj-2ZcdrIuaausJfMxNQnQc,127162
122
122
  langtrace_python_sdk/__init__.py,sha256=VZM6i71NR7pBQK6XvJWRelknuTYUhqwqE7PlicKa5Wg,1166
123
123
  langtrace_python_sdk/langtrace.py,sha256=JYBCbklWv463lzRUH7pfkHAVoc3YHh-q_2Iv6LZ2HhU,14896
124
- langtrace_python_sdk/version.py,sha256=whHLu8P7QnGYdLeAzZ-eOHwlW3MJuanQ-a9U15xrJzY,23
124
+ langtrace_python_sdk/version.py,sha256=vZguhUk6WALg_04iMWuMykc6WCWL3Sr62kqgOBzr0_U,23
125
125
  langtrace_python_sdk/constants/__init__.py,sha256=3CNYkWMdd1DrkGqzLUgNZXjdAlM6UFMlf_F-odAToyc,146
126
126
  langtrace_python_sdk/constants/exporter/langtrace_exporter.py,sha256=EVCrouYCpY98f0KSaKr4PzNxPULTZZO6dSA_crEOyJU,106
127
127
  langtrace_python_sdk/constants/instrumentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
128
  langtrace_python_sdk/constants/instrumentation/anthropic.py,sha256=XZjpyILHQsx52Qe926ahisqTCi_iVReCkkj7Pr2gEZ8,241
129
- langtrace_python_sdk/constants/instrumentation/aws_bedrock.py,sha256=QwKtO4NBarOZoGkt5cFCcpxAw3zvZxcMMWBbzPPGv-g,422
129
+ langtrace_python_sdk/constants/instrumentation/aws_bedrock.py,sha256=-3fCK6pmGZvJEsvl0iN6pGvVY9eH3fOCS8dHQ1KhVCQ,597
130
130
  langtrace_python_sdk/constants/instrumentation/chroma.py,sha256=hiPGYdHS0Yj4Kh3eaYBbuCAl_swqIygu80yFqkOgdak,955
131
131
  langtrace_python_sdk/constants/instrumentation/cohere.py,sha256=9yD133VdrYZ5BoJR4nJHlj67gHEImB9-KsD-NkzHW1I,1159
132
132
  langtrace_python_sdk/constants/instrumentation/common.py,sha256=DxcrwO9iI4Q1-ECTAbfFzY6vjU3K9kyoU54W-I2Ebs0,1326
@@ -161,7 +161,7 @@ langtrace_python_sdk/instrumentation/autogen/patch.py,sha256=7Sq3C8Q5tT27UkWXd1S
161
161
  langtrace_python_sdk/instrumentation/aws_bedrock/__init__.py,sha256=IHqPgR1kdDvcoV1nUb-B21PaJ_qbQB0jc011Udi1ioU,96
162
162
  langtrace_python_sdk/instrumentation/aws_bedrock/bedrock_streaming_wrapper.py,sha256=_EMlxfBhjNsB-2TrP0ek-vx1CK5bpgjXPmQWNT9eBcE,1370
163
163
  langtrace_python_sdk/instrumentation/aws_bedrock/instrumentation.py,sha256=ohSlH-BPjIfQ6_wQbUyRDnVMWLY_XHeDv112J_MxC0k,1622
164
- langtrace_python_sdk/instrumentation/aws_bedrock/patch.py,sha256=KKNp9gKzoj9YuLrqA0VMDe0FUSBzKtrbXiNN1hdciJM,17941
164
+ langtrace_python_sdk/instrumentation/aws_bedrock/patch.py,sha256=Z6h4gViE83fKpX2XNJTH13PPho5Y5PWlCXgRaky0spU,20347
165
165
  langtrace_python_sdk/instrumentation/aws_bedrock/stream_body_wrapper.py,sha256=ENdhRVHBhdkIlJIc_tkf8ASijUzZdVZM-oonNLdNM48,1584
166
166
  langtrace_python_sdk/instrumentation/cerebras/__init__.py,sha256=9rHNg7PWcZ7a9jExQZlqwWPkvLGcPT-DGWot0_6Bx9k,92
167
167
  langtrace_python_sdk/instrumentation/cerebras/instrumentation.py,sha256=WPsaYxHanYnoxGjDk7fILGJSnSRUs_zoQ30JCyPBMII,1927
@@ -244,7 +244,7 @@ langtrace_python_sdk/instrumentation/phidata/__init__.py,sha256=q2v6luvqp9gFf1AJ
244
244
  langtrace_python_sdk/instrumentation/phidata/instrumentation.py,sha256=S639XMVOGmpIK9jug9NWrUBLqs1G5ywBZiIhVuCkwGk,2697
245
245
  langtrace_python_sdk/instrumentation/phidata/patch.py,sha256=-Jf_20wLLRGRM6sY3RreS-ocXjdq5m33-gxNtl_eUdQ,12133
246
246
  langtrace_python_sdk/instrumentation/pinecone/__init__.py,sha256=DzXyGh9_MGWveJvXULkFwdkf7PbG2s3bAWtT1Dmz7Ok,99
247
- langtrace_python_sdk/instrumentation/pinecone/instrumentation.py,sha256=2jhxGmXPrdSsrETRR_e58Rdc_uoKfRunvsCc660v6QA,1831
247
+ langtrace_python_sdk/instrumentation/pinecone/instrumentation.py,sha256=lgnssKInso65MciHkihEEay5EzZq94pRGa57-6tOfEQ,1852
248
248
  langtrace_python_sdk/instrumentation/pinecone/patch.py,sha256=S5fPFYgZEIHAJm92YDm_R3n8SZOHb5sYbCsSFbLOcu0,5248
249
249
  langtrace_python_sdk/instrumentation/pymongo/__init__.py,sha256=Q_ecuvZ0j5TxOCdD69BfZhCPT6rj7w5lHbTuDSpLYD4,97
250
250
  langtrace_python_sdk/instrumentation/pymongo/instrumentation.py,sha256=fG938JR2Be3zy19JUyvKxafYQPavnUV9eMtD7Vn0_fc,1597
@@ -277,6 +277,11 @@ tests/anthropic/test_anthropic.py,sha256=ODeGDGSZCopR7QVA8Y-Vvv3wBLs-LOlQ58LneU-
277
277
  tests/anthropic/cassettes/test_anthropic.yaml,sha256=z7YAqA_BBgI-hw7uyVMdLoIZdBYhKwl9cuTzUu9nAZs,2332
278
278
  tests/anthropic/cassettes/test_anthropic_streaming.yaml,sha256=D0w4-6dfsgrhbNLJEj8gZBV0yXfrAfA9u90Yu8Ac-TY,11675
279
279
  tests/anthropic/cassettes/test_async_anthropic_streaming.yaml,sha256=hQZPY2vwBaW3BWllLd0lcGQ73DjA8C3Ips1Hx9pA-ao,8373
280
+ tests/aws_bedrock/conftest.py,sha256=UtHlZzXXkg6nVZVvnRqoltzDxqfFJ4creqGoWp4MrPc,1210
281
+ tests/aws_bedrock/test_invoke_model.py,sha256=UH4X0NpLLBeScSFaUIETEf2eCgc7PQbQykad8H5GN2o,5179
282
+ tests/aws_bedrock/test_model_id_parsing.py,sha256=rqpu0yEel5r3pmXYFrl6WpP52BWj9yRmvjGk8wPdonE,1277
283
+ tests/aws_bedrock/cassettes/test_chat_completion.yaml,sha256=1rIXxEmMZ9HcvTpFhT9q1SltWb572Vfm8m4HXgF-WrY,1647
284
+ tests/aws_bedrock/cassettes/test_generate_embedding.yaml,sha256=HOhmpRXY6rK6unOcEBQxKGKDCGR9ApKgqFSDB8bnuss,20002
280
285
  tests/chroma/conftest.py,sha256=kqb4VydCnlVpkvBX5Bu-pfnVS-ZZfju9cp6vq76tkJI,309
281
286
  tests/chroma/test_chroma.py,sha256=-KJHunvvVi1OoKKOcKCeHO1s399Gm9vJfd-EzgllQmk,1220
282
287
  tests/cohere/conftest.py,sha256=jBbyg-tut-ZJN5_5D64sGmaPIhT_nQQQAiW43kl5Rz4,621
@@ -312,8 +317,8 @@ tests/pinecone/cassettes/test_query.yaml,sha256=b5v9G3ssUy00oG63PlFUR3JErF2Js-5A
312
317
  tests/pinecone/cassettes/test_upsert.yaml,sha256=neWmQ1v3d03V8WoLl8FoFeeCYImb8pxlJBWnFd_lITU,38607
313
318
  tests/qdrant/conftest.py,sha256=9n0uHxxIjWk9fbYc4bx-uP8lSAgLBVx-cV9UjnsyCHM,381
314
319
  tests/qdrant/test_qdrant.py,sha256=pzjAjVY2kmsmGfrI2Gs2xrolfuaNHz7l1fqGQCjp5_o,3353
315
- langtrace_python_sdk-3.8.18.dist-info/METADATA,sha256=XHSAwzWsHAh5FLLWZ9896hei2d_hqQeEkomYDIEV0KM,15853
316
- langtrace_python_sdk-3.8.18.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
317
- langtrace_python_sdk-3.8.18.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
318
- langtrace_python_sdk-3.8.18.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
319
- langtrace_python_sdk-3.8.18.dist-info/RECORD,,
320
+ langtrace_python_sdk-3.8.21.dist-info/METADATA,sha256=Y-YubNZGDxCSdpXDguuwPGG5QTRvVlES3EREzHBGZAA,15902
321
+ langtrace_python_sdk-3.8.21.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
322
+ langtrace_python_sdk-3.8.21.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
323
+ langtrace_python_sdk-3.8.21.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
324
+ langtrace_python_sdk-3.8.21.dist-info/RECORD,,
@@ -0,0 +1,45 @@
1
+ interactions:
2
+ - request:
3
+ body: '{"messages": [{"role": "user", "content": "Say this is a test three times"}],
4
+ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 100}'
5
+ headers:
6
+ Accept:
7
+ - !!binary |
8
+ YXBwbGljYXRpb24vanNvbg==
9
+ Content-Length:
10
+ - '139'
11
+ Content-Type:
12
+ - !!binary |
13
+ YXBwbGljYXRpb24vanNvbg==
14
+ User-Agent:
15
+ - !!binary |
16
+ Qm90bzMvMS4zOC4xOCBtZC9Cb3RvY29yZSMxLjM4LjE4IHVhLzIuMSBvcy9tYWNvcyMyNC40LjAg
17
+ bWQvYXJjaCNhcm02NCBsYW5nL3B5dGhvbiMzLjEzLjEgbWQvcHlpbXBsI0NQeXRob24gbS9aLGIg
18
+ Y2ZnL3JldHJ5LW1vZGUjc3RhbmRhcmQgQm90b2NvcmUvMS4zOC4xOA==
19
+ method: POST
20
+ uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-7-sonnet-20250219-v1%3A0/invoke
21
+ response:
22
+ body:
23
+ string: '{"id":"msg_bdrk_01NJB1bDTLkFh6pgfoAD5hkb","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[{"type":"text","text":"This
24
+ is a test.\nThis is a test.\nThis is a test."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":14,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":20}}'
25
+ headers:
26
+ Connection:
27
+ - keep-alive
28
+ Content-Length:
29
+ - '355'
30
+ Content-Type:
31
+ - application/json
32
+ Date:
33
+ - Mon, 19 May 2025 16:42:05 GMT
34
+ X-Amzn-Bedrock-Input-Token-Count:
35
+ - '14'
36
+ X-Amzn-Bedrock-Invocation-Latency:
37
+ - '926'
38
+ X-Amzn-Bedrock-Output-Token-Count:
39
+ - '20'
40
+ x-amzn-RequestId:
41
+ - c0a92363-ec28-4a8b-9c09-571131d946b0
42
+ status:
43
+ code: 200
44
+ message: OK
45
+ version: 1
@@ -0,0 +1,41 @@
1
+ interactions:
2
+ - request:
3
+ body: '{"inputText": "Say this is a test three times"}'
4
+ headers:
5
+ Accept:
6
+ - !!binary |
7
+ YXBwbGljYXRpb24vanNvbg==
8
+ Content-Length:
9
+ - '47'
10
+ Content-Type:
11
+ - !!binary |
12
+ YXBwbGljYXRpb24vanNvbg==
13
+ User-Agent:
14
+ - !!binary |
15
+ Qm90bzMvMS4zOC4xOCBtZC9Cb3RvY29yZSMxLjM4LjE4IHVhLzIuMSBvcy9tYWNvcyMyNC40LjAg
16
+ bWQvYXJjaCNhcm02NCBsYW5nL3B5dGhvbiMzLjEzLjEgbWQvcHlpbXBsI0NQeXRob24gbS9aLGIg
17
+ Y2ZnL3JldHJ5LW1vZGUjc3RhbmRhcmQgQm90b2NvcmUvMS4zOC4xOA==
18
+ method: POST
19
+ uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.titan-embed-text-v1/invoke
20
+ response:
21
+ body:
22
+ string: '{"embedding":[0.53515625,-0.64453125,-0.51953125,-0.1787109375,0.5234375,0.498046875,0.019287109375,-2.2172927856445312E-5,-0.1796875,1.220703125E-4,-0.54296875,-0.078125,0.07177734375,0.0966796875,-0.380859375,-0.0030517578125,-0.197265625,-0.283203125,-0.107421875,-0.03759765625,-0.765625,-0.0947265625,0.06298828125,0.73828125,0.263671875,0.00750732421875,0.234375,-0.423828125,0.023681640625,-0.076171875,-0.3984375,0.486328125,0.396484375,-1.140625,0.451171875,-0.1669921875,-0.0888671875,0.1474609375,0.5859375,-0.10888671875,0.076171875,0.3359375,0.34375,0.52734375,-0.1416015625,0.26171875,0.099609375,-0.375,-0.2373046875,0.490234375,-0.19140625,0.318359375,0.1396484375,-0.35546875,0.3671875,0.2578125,0.443359375,0.361328125,0.48046875,-0.361328125,0.0169677734375,-0.11767578125,-0.294921875,-0.72265625,-0.0771484375,0.1640625,-0.08154296875,-0.333984375,-0.61328125,0.00750732421875,-0.1220703125,-0.546875,-0.291015625,0.138671875,-0.01806640625,0.37109375,-0.00848388671875,0.08935546875,-0.06005859375,0.54296875,-0.216796875,-0.42578125,-0.0299072265625,0.412109375,-0.5390625,0.09765625,-0.55859375,0.5703125,1.354217529296875E-4,-0.50390625,-0.2021484375,0.88671875,0.2099609375,-0.044677734375,0.1669921875,0.43359375,-0.3984375,0.875,0.6015625,-0.15625,-0.228515625,0.1591796875,0.134765625,0.7734375,-0.138671875,0.29296875,-0.232421875,0.365234375,0.11572265625,0.50390625,-0.004486083984375,-0.279296875,0.6171875,-1.03125,-0.169921875,-0.4609375,0.08984375,-0.01336669921875,-0.1962890625,-0.3828125,0.53125,0.0830078125,0.353515625,-0.1650390625,-0.00799560546875,-0.6015625,0.142578125,0.2158203125,-0.046875,0.423828125,0.2451171875,0.33203125,-0.494140625,-0.4140625,0.1650390625,0.1533203125,-0.53515625,0.023193359375,0.275390625,0.09716796875,-0.18359375,-0.083984375,0.71875,0.2138671875,0.21875,0.026611328125,-0.1318359375,0.2109375,-0.93359375,-0.005706787109375,0.263671875,-0.419921875,-0.34375,-0.7578125,0.1396484375,-0.40234375,0.103515625,0.435546875,-0.625,0.150390625,0.3203125,0.6328125,-0.82421875,-0.59375,0.1591796875,-0.46875,0.08349609375,0.146484375,-0.1845703125,0.171875,0.421875,-0.34765625,0.37109375,0.140625,-0.04638671875,-0.03466796875,0.490234375,0.061767578125,-0.2255859375,-0.236328125,-0.234375,0.220703125,-0.016845703125,0.002716064453125,1.2578125,0.16015625,0.12109375,0.46484375,-0.19921875,-0.00909423828125,0.287109375,0.578125,-0.47265625,-0.353515625,-0.365234375,0.41796875,-0.248046875,-0.357421875,-0.56640625,-0.294921875,-0.353515625,0.1982421875,0.45703125,-0.06689453125,0.162109375,0.388671875,0.29296875,-0.051025390625,0.0732421875,0.30078125,0.11181640625,0.6484375,-0.349609375,1.0703125,0.5625,0.408203125,0.359375,0.220703125,-0.06982421875,-0.78125,-0.1962890625,-0.369140625,-0.016357421875,-0.287109375,-0.25390625,0.3671875,-0.004791259765625,-0.2275390625,0.40625,0.734375,-0.392578125,0.06298828125,-0.75390625,0.49609375,-0.01422119140625,-0.4296875,-0.609375,0.31640625,0.41015625,0.275390625,0.146484375,-0.39453125,-0.515625,-0.6953125,-0.267578125,-0.5703125,0.76171875,-0.271484375,0.28125,-0.140625,0.0810546875,0.71484375,-0.34375,-0.2001953125,-0.365234375,-0.0361328125,-0.62890625,0.39453125,0.60546875,-0.201171875,0.2216796875,-0.416015625,0.1865234375,0.330078125,0.8671875,-0.337890625,0.421875,-0.30859375,-0.030029296875,-0.28125,1.354217529296875E-4,-0.11669921875,0.3671875,0.16015625,-0.1728515625,-0.06298828125,-0.251953125,0.0322265625,0.66015625,-0.53125,0.205078125,0.375,0.54296875,0.3203125,-0.212890625,-0.478515625,-0.263671875,0.20703125,0.201171875,-0.1357421875,-0.59375,-0.1787109375,0.54296875,0.20703125,0.07275390625,0.203125,-0.1943359375,0.443359375,0.318359375,0.609375,-0.181640625,-0.1728515625,0.375,-1.2421875,0.1953125,-0.244140625,0.103515625,-0.1591796875,0.1455078125,-0.03466796875,-0.154296875,0.20703125,-0.341796875,0.283203125,-0.1611328125,0.328125,-0.2255859375,0.486328125,-0.83203125,-0.185546875,0.203125,-0.357421875,-0.357421875,-0.4453125,0.271484375,-0.00823974609375,0.298828125,-0.1826171875,0.2578125,-0.515625,-0.71875,-1.03125,-0.068359375,0.1875,1.0390625,0.07373046875,0.1572265625,0.45703125,-0.337890625,-0.296875,-0.0078125,-0.19921875,-0.0634765625,-0.58984375,-0.4453125,-0.08935546875,0.002227783203125,0.1416015625,-0.27734375,0.1396484375,0.10498046875,-0.185546875,0.2890625,-0.66015625,0.400390625,-0.0908203125,0.703125,0.193359375,-0.376953125,-0.06591796875,-0.09912109375,-0.0888671875,-0.0038909912109375,0.1103515625,-0.51953125,-0.279296875,-0.53125,-0.361328125,0.0294189453125,0.7265625,-0.09521484375,0.62890625,-0.224609375,-0.140625,0.1259765625,0.322265625,0.6015625,-0.396484375,-0.451171875,-0.384765625,-0.134765625,-0.54296875,-0.11865234375,0.275390625,-0.26171875,0.796875,-0.302734375,-0.8828125,0.78515625,-0.333984375,0.1611328125,0.37109375,0.234375,0.042724609375,0.53515625,0.2333984375,-0.061279296875,-0.10107421875,0.16796875,0.18359375,-0.005950927734375,0.435546875,-0.0927734375,-0.275390625,0.05029296875,1.2421875,-0.169921875,-0.05322265625,-0.3125,-0.2216796875,-0.21484375,-0.1806640625,-0.58984375,0.55859375,-0.390625,0.140625,0.32421875,-0.1484375,0.06884765625,-0.2138671875,0.2578125,0.255859375,0.26953125,0.107421875,0.1474609375,0.578125,-0.10791015625,0.294921875,-0.1962890625,0.404296875,0.10693359375,1.1484375,-0.65234375,0.365234375,0.39453125,0.5625,0.169921875,0.1875,0.58203125,-0.103515625,-0.72265625,-0.71484375,0.310546875,0.1572265625,-0.11083984375,-0.55078125,-0.1044921875,-0.28125,-1.0546875,-0.357421875,0.1728515625,0.40234375,0.150390625,-0.376953125,-0.33203125,0.67578125,-0.267578125,0.020751953125,0.38671875,0.2353515625,0.67578125,0.302734375,-0.185546875,0.265625,0.076171875,0.2314453125,1.4765625,-0.287109375,0.1015625,-0.42578125,-0.1728515625,-0.007049560546875,-0.08935546875,0.65234375,-0.26171875,0.197265625,-0.427734375,-0.95703125,-0.34765625,-0.5703125,0.1259765625,-0.11279296875,-0.453125,0.30859375,-0.10009765625,0.1337890625,0.07666015625,-0.19921875,0.07421875,0.56640625,0.71484375,0.640625,-0.482421875,-0.06640625,-0.2353515625,0.224609375,-4.00543212890625E-4,-1.0625,0.470703125,0.26953125,0.2353515625,0.2021484375,-0.470703125,0.35546875,0.01611328125,0.462890625,-0.265625,0.03857421875,-0.6796875,-0.11962890625,0.0272216796875,-0.30859375,0.1279296875,-0.2421875,0.330078125,0.5546875,-0.023193359375,-0.80859375,-0.2490234375,0.267578125,0.2216796875,0.2138671875,0.125,0.69921875,-0.10986328125,0.91015625,-0.28125,-0.005859375,-0.3828125,0.1923828125,-0.251953125,-0.625,-0.298828125,-0.224609375,-0.333984375,0.62890625,-0.109375,0.2490234375,0.11865234375,-0.022216796875,0.8203125,-0.291015625,0.0015869140625,0.5390625,-0.2353515625,0.310546875,0.07275390625,0.109375,0.04248046875,1.1328125,1.3203125,0.0498046875,-0.1826171875,0.306640625,0.2001953125,0.48046875,0.1943359375,-0.039306640625,0.26171875,-0.455078125,-0.0693359375,-0.2314453125,0.00958251953125,-0.283203125,0.0380859375,0.232421875,-0.06640625,-0.34375,-0.328125,0.09375,0.70703125,-0.1376953125,0.1416015625,-0.35546875,-0.00421142578125,1.328125,-0.33203125,-0.703125,-0.34765625,-0.59765625,-0.373046875,0.00714111328125,0.80078125,-0.06298828125,0.0361328125,-0.032958984375,-0.0771484375,-0.640625,0.1689453125,-0.37109375,-0.68359375,-0.1337890625,-0.255859375,0.439453125,-0.8984375,-0.11328125,0.31640625,-0.466796875,-0.345703125,-0.349609375,0.828125,-0.40234375,0.8359375,-0.00433349609375,-0.35546875,0.5546875,-0.54296875,0.61328125,-0.14453125,0.033935546875,0.53515625,0.205078125,-0.00799560546875,-0.26953125,-0.49609375,-0.2060546875,0.6015625,-0.01397705078125,-0.57421875,-0.26171875,0.06298828125,0.609375,-0.9375,-0.171875,-0.0859375,0.0419921875,0.6328125,-0.6796875,0.10791015625,0.609375,-0.2255859375,0.7265625,-0.193359375,-0.01708984375,-0.353515625,-1.392364501953125E-4,0.578125,-1.046875,-0.028564453125,-0.1650390625,0.419921875,0.01153564453125,0.047607421875,-1.1328125,0.46875,0.201171875,0.044677734375,-0.06640625,-0.0654296875,-0.142578125,-0.67578125,0.11376953125,-0.00360107421875,0.052490234375,-0.038330078125,-0.22265625,0.35546875,0.07080078125,-0.24609375,-0.1787109375,-0.1630859375,-0.70703125,-0.2021484375,0.36328125,-0.1630859375,0.099609375,-0.453125,0.0966796875,-0.7421875,0.435546875,0.4609375,-0.265625,0.298828125,0.05859375,-0.4765625,-0.85546875,-0.0703125,0.703125,0.010986328125,-0.294921875,0.34375,-0.091796875,-0.5,-0.8671875,-0.296875,-0.5859375,0.1328125,0.0947265625,0.13671875,0.07666015625,-0.48046875,0.271484375,0.314453125,0.478515625,0.13671875,0.328125,0.21875,0.1123046875,0.2490234375,-0.369140625,-0.050537109375,-0.126953125,-0.353515625,0.1669921875,-0.345703125,0.30859375,0.5546875,0.244140625,-0.0966796875,0.349609375,0.3828125,0.1796875,0.37109375,0.15625,-0.287109375,0.0908203125,-0.361328125,0.0908203125,-0.11181640625,-0.1552734375,0.08056640625,0.04052734375,0.59375,-0.08837890625,-0.1435546875,-0.4453125,0.77734375,0.515625,0.546875,-0.40625,-0.021728515625,-0.5078125,1.0234375,-0.072265625,-0.216796875,0.11767578125,-0.2890625,-0.390625,-0.019775390625,0.70703125,0.3515625,-0.484375,0.54296875,0.01446533203125,-0.11669921875,-0.279296875,-0.25390625,-0.6796875,0.80859375,-0.16015625,-0.1884765625,0.431640625,-0.09912109375,-0.1943359375,-0.0849609375,-0.0703125,0.345703125,0.349609375,-0.08349609375,-0.3515625,0.1650390625,0.5546875,-0.498046875,0.302734375,-0.140625,-0.12060546875,0.5390625,0.3046875,-0.02734375,0.08837890625,0.25,-0.12353515625,0.375,0.11474609375,0.228515625,-0.003631591796875,1.28125,0.66796875,-0.466796875,0.453125,0.71484375,0.205078125,0.01318359375,0.462890625,-0.99609375,-0.2353515625,0.76171875,-0.1533203125,0.2578125,0.55859375,-1.0078125,-0.041015625,0.16015625,0.1279296875,0.2265625,0.49609375,-0.07080078125,-0.498046875,0.337890625,-0.59375,-0.267578125,-0.2294921875,0.14453125,0.453125,-0.96875,0.010986328125,0.37890625,1.046875,-0.032470703125,0.10791015625,-0.1650390625,-0.1416015625,0.150390625,-0.3203125,-0.11328125,0.251953125,-0.265625,-0.79296875,0.427734375,-0.177734375,-0.55859375,0.55859375,-0.40234375,-0.400390625,-0.091796875,0.00244140625,-0.09716796875,0.0157470703125,0.41796875,-0.306640625,-0.56640625,0.55078125,0.12451171875,-0.1220703125,-0.451171875,-0.318359375,0.0302734375,-0.31640625,0.150390625,-0.54296875,-0.2734375,-0.28515625,0.80859375,-0.103515625,-0.0341796875,-0.47265625,-0.0966796875,0.03369140625,0.390625,0.2392578125,1.5,-0.0240478515625,-0.7734375,-0.60546875,0.1298828125,-0.1728515625,-0.0224609375,-0.3046875,-0.1298828125,-0.40234375,0.119140625,-0.55078125,0.12353515625,0.1650390625,0.25390625,-0.07666015625,0.294921875,-0.2265625,-0.2197265625,0.10693359375,0.173828125,-0.392578125,0.236328125,-0.177734375,0.62109375,0.1845703125,0.80078125,0.2314453125,-0.138671875,-0.22265625,0.0556640625,-0.427734375,-1.0078125,-0.201171875,0.130859375,-0.052978515625,0.107421875,0.390625,-0.3203125,-0.1357421875,0.1064453125,-0.609375,-0.396484375,0.26171875,-0.28125,0.189453125,-0.388671875,0.4140625,-0.58984375,-0.002960205078125,-0.369140625,0.7265625,0.1181640625,-0.439453125,-0.5078125,-0.142578125,0.1552734375,0.1904296875,0.28515625,-0.1328125,-0.177734375,-0.072265625,0.9609375,0.4453125,-0.62109375,0.88671875,0.12353515625,0.010986328125,-0.31640625,-0.1865234375,0.10205078125,-0.169921875,0.56640625,-0.357421875,0.14453125,-0.02685546875,-0.4765625,0.130859375,0.271484375,-0.0654296875,-1.03125,-0.5859375,-0.11181640625,-0.0859375,0.1435546875,0.4375,0.458984375,-0.2158203125,-0.28515625,-0.59375,-0.1279296875,2.9921531677246094E-5,0.00994873046875,0.73046875,0.2119140625,-0.76171875,-0.2060546875,0.008056640625,-0.09130859375,0.0228271484375,0.15234375,0.045654296875,0.64453125,0.0012359619140625,0.1474609375,0.345703125,0.671875,-0.2265625,-0.58203125,0.59375,0.04931640625,0.435546875,-0.3046875,-0.68359375,-0.494140625,0.412109375,0.0703125,0.169921875,1.0625,0.31640625,-0.9921875,-0.068359375,-0.349609375,-0.314453125,-0.1904296875,0.310546875,0.1748046875,0.49609375,0.84765625,-0.423828125,0.061767578125,-0.2451171875,0.0908203125,-0.408203125,-0.703125,0.8046875,-0.349609375,0.3046875,-0.54296875,-0.5234375,-0.3359375,-0.06640625,-0.275390625,0.1474609375,0.8828125,-0.55078125,0.10791015625,-0.103515625,1.0390625,-0.51953125,-0.42578125,0.77734375,-0.216796875,0.5546875,0.11669921875,-0.443359375,-0.380859375,-0.2109375,0.6171875,-0.83984375,0.5234375,0.337890625,0.01068115234375,0.053466796875,5.07354736328125E-4,-0.68359375,-0.1044921875,-0.07861328125,-0.388671875,-0.0712890625,-0.578125,-0.1796875,-0.609375,-0.228515625,0.2578125,0.98046875,-0.21484375,0.9609375,-0.427734375,-0.640625,0.173828125,0.33203125,-0.0439453125,0.05224609375,0.047607421875,-0.9609375,0.330078125,0.0888671875,-0.36328125,0.275390625,-0.119140625,0.263671875,-0.134765625,-0.10791015625,-0.578125,-0.076171875,0.66015625,0.0732421875,0.00140380859375,0.06201171875,0.00860595703125,-0.431640625,0.404296875,0.353515625,0.1728515625,0.2138671875,-0.2470703125,0.578125,-0.0225830078125,-0.515625,0.10107421875,0.375,0.33203125,0.53125,0.1826171875,-0.32421875,0.2373046875,-0.3046875,0.94140625,0.5625,-0.232421875,-0.1884765625,-0.004150390625,0.310546875,-0.2119140625,0.466796875,-0.5,-0.2158203125,0.171875,0.57421875,0.1611328125,-0.56640625,-0.00139617919921875,-0.4765625,0.5,-0.038330078125,0.99609375,0.06787109375,-0.0262451171875,0.06982421875,0.12158203125,-0.11767578125,0.14453125,-0.2119140625,0.8671875,0.5859375,0.412109375,-0.220703125,-0.71484375,-0.07763671875,0.25390625,0.75390625,0.3671875,-1.59375,0.326171875,0.1044921875,0.0029754638671875,-0.0264892578125,-0.119140625,-0.25390625,-0.345703125,0.244140625,0.302734375,0.23828125,0.390625,0.65625,0.43359375,0.0361328125,-0.0556640625,0.0703125,0.060302734375,-0.2890625,-0.25390625,0.34375,-0.8046875,0.169921875,0.59375,-0.33984375,0.2275390625,-0.01092529296875,-0.45703125,-0.6015625,0.059814453125,0.85546875,0.038330078125,-0.263671875,0.1484375,0.494140625,0.07275390625,-0.01190185546875,0.921875,-0.1591796875,0.7109375,-0.19140625,-0.275390625,-0.369140625,-0.201171875,-0.70703125,-0.41015625,0.408203125,-0.1435546875,-0.302734375,-1.046875,-0.255859375,0.010498046875,0.875,0.4375,-0.25390625,-0.70703125,0.10546875,0.0947265625,-0.302734375,0.15234375,0.63671875,-0.023681640625,0.345703125,0.640625,-0.09130859375,-0.50390625,0.173828125,0.0027923583984375,0.3359375,-0.7421875,0.1865234375,0.10400390625,-0.61328125,0.5234375,0.271484375,-0.41796875,-0.15625,-0.341796875,0.318359375,-0.3515625,-0.1708984375,-0.1435546875,-0.2490234375,0.095703125,0.38671875,0.10791015625,-0.1416015625,-0.27734375,0.1591796875,-0.61328125,1.4921875,0.2451171875,0.00750732421875,-0.055419921875,-0.09033203125,-0.07470703125,-0.1103515625,-0.322265625,-0.181640625,0.65234375,-0.427734375,0.033935546875,-0.85546875,-0.47265625,-0.0103759765625,0.796875,-0.10546875,-0.44140625,0.5703125,0.002044677734375,0.337890625,0.44140625,0.2060546875,-0.0283203125,0.01495361328125,0.41015625,-0.703125,-0.2421875,-0.388671875,-0.6875,-0.26171875,-0.1337890625,0.32421875,0.63671875,0.1884765625,0.1982421875,0.1474609375,-0.083984375,-0.46875,-0.58984375,-0.8359375,0.41796875,0.1376953125,0.03955078125,-0.291015625,-0.361328125,-0.78515625,-0.337890625,-0.123046875,0.24609375,-0.125,0.39453125,-0.70703125,0.302734375,-0.00714111328125,-0.68359375,-0.419921875,0.373046875,0.177734375,0.130859375,-0.42578125,0.45703125,-0.94921875,0.287109375,-0.6171875,-0.1826171875,-0.40234375,-0.40625,-0.228515625,0.1396484375,-0.1083984375,-0.255859375,-0.65625,-0.9296875,-0.365234375,-0.14453125,6.37054443359375E-4,0.271484375,0.6796875,0.1064453125,0.376953125,-0.4140625,0.1484375,0.051025390625,-0.2197265625,-0.283203125,-0.42578125,-0.2255859375,0.5546875,-0.1328125,0.1796875,-0.1650390625,-0.0732421875,-0.11669921875,0.173828125,0.1982421875,-0.1689453125,0.369140625,-1.3515625,-0.25390625,-0.310546875,-0.38671875,-1.1015625,-0.083984375,0.12451171875,-0.111328125,-0.458984375,-0.30859375,0.154296875,-0.2021484375,0.6015625,0.11376953125,-0.5703125,0.41015625,-0.4375,0.66015625,-0.37890625,-0.421875,-0.26953125,0.5546875,-0.00506591796875,0.6484375,0.038330078125,-0.1484375,0.0272216796875,-0.4921875,0.2470703125,0.267578125,-0.251953125,-0.369140625,0.042236328125,-0.150390625,-0.1728515625,0.466796875,-0.341796875,0.443359375,0.6015625,-0.154296875,0.07861328125,0.330078125,-0.671875,0.0233154296875,-0.625,1.28125,-0.25390625,0.6484375,-0.1689453125,0.36328125,-0.078125,0.4140625,0.71875,-0.09716796875,-0.0419921875,-0.68359375,-0.228515625,0.64453125,-0.201171875,0.10302734375,0.232421875,-0.20703125,-0.443359375,0.36328125,-0.1748046875,0.34765625,0.09912109375,0.07861328125,0.197265625,-0.455078125,0.1259765625,-0.1845703125,-0.470703125,0.984375,0.0184326171875,-0.01080322265625,-0.150390625,0.259765625,0.31640625,0.46875,0.09814453125,0.68359375,-0.322265625,-0.1416015625,-0.6953125,0.142578125,-0.1787109375,0.314453125,0.09619140625,0.53515625,0.49609375,-0.1298828125,-1.2109375,0.1611328125,0.625,-0.169921875,-0.2275390625,0.06298828125,-0.77734375,-0.5,-0.2373046875,-0.1787109375,0.32421875,0.47265625,0.40234375,0.345703125,0.099609375,0.45703125,-0.09765625,0.240234375,-0.2373046875,-0.333984375,0.62890625,0.1630859375,0.1279296875,-0.25390625,0.42578125,0.009521484375,0.470703125,-0.7421875,0.357421875,-0.16015625,0.0264892578125,-0.2451171875,-0.318359375,-0.06201171875,-0.326171875,-0.0859375,-0.3046875,0.52734375,0.1357421875,0.376953125,-0.042236328125,0.57421875,-0.0751953125,0.796875,-0.4609375,0.53125,-0.71484375,0.5078125,-0.6875,0.6796875,-0.09716796875,-0.6875,-0.2734375,-0.1103515625,-0.55078125,0.054443359375,-0.3359375,0.08447265625,-0.26953125,0.18359375,0.75390625,0.06689453125,-0.1611328125,0.259765625,-1.109375,-0.1708984375,-0.421875,-0.408203125,0.0022125244140625,0.671875,-0.150390625,0.45703125,0.6484375,0.28515625,-0.11572265625,-0.55078125,0.625,0.11328125,-0.1435546875,0.23828125,0.060546875,-0.2451171875,-0.07763671875,0.53125,-0.16796875,0.12451171875,-0.0625,0.265625,-0.2578125,0.09912109375,0.2431640625,0.23046875,0.357421875,0.21875,-0.326171875,0.244140625,-0.17578125,-0.359375,-0.32421875,-0.453125,-0.7734375,0.0289306640625,-0.0830078125,0.5,-0.50390625,-0.79296875,-0.042236328125,-0.1240234375,-0.33984375,0.5625,1.515625,0.228515625,0.357421875,-0.546875,-0.515625,0.62109375,-0.53125,-0.3203125,0.2119140625,-0.6640625,-0.1328125,0.08056640625,-1.1953125,0.373046875,0.0791015625,-0.28125,0.0296630859375,0.2353515625,-0.330078125,0.2275390625,0.036865234375,0.330078125,-0.9140625,0.4375,0.349609375,-0.0703125,-0.072265625,0.251953125,0.69140625,0.1328125,0.0016326904296875,-0.421875,0.326171875,-0.51953125,0.3671875,0.1982421875,-0.01336669921875,0.05908203125,-0.05908203125,-0.1240234375,0.01220703125,-0.6328125,0.77734375],"inputTextTokenCount":7}'
23
+ headers:
24
+ Connection:
25
+ - keep-alive
26
+ Content-Length:
27
+ - '18891'
28
+ Content-Type:
29
+ - application/json
30
+ Date:
31
+ - Mon, 19 May 2025 16:42:06 GMT
32
+ X-Amzn-Bedrock-Input-Token-Count:
33
+ - '7'
34
+ X-Amzn-Bedrock-Invocation-Latency:
35
+ - '68'
36
+ x-amzn-RequestId:
37
+ - 1b70cfa3-5b0a-41b1-acfb-271252abc5be
38
+ status:
39
+ code: 200
40
+ message: OK
41
+ version: 1
@@ -0,0 +1,48 @@
1
+ """Unit tests configuration module."""
2
+
3
+ import pytest
4
+ import os
5
+
6
+ from boto3.session import Session
7
+ from botocore.config import Config
8
+
9
+ from langtrace_python_sdk.instrumentation.aws_bedrock.instrumentation import (
10
+ AWSBedrockInstrumentation,
11
+ )
12
+
13
+
14
+ @pytest.fixture(autouse=True)
15
+ def environment():
16
+ if not os.getenv("AWS_ACCESS_KEY_ID"):
17
+ os.environ["AWS_ACCESS_KEY_ID"] = "test_aws_access_key_id"
18
+ if not os.getenv("AWS_SECRET_ACCESS_KEY"):
19
+ os.environ["AWS_SECRET_ACCESS_KEY"] = "test_aws_secret_access_key"
20
+
21
+
22
+ @pytest.fixture
23
+ def aws_bedrock_client():
24
+ bedrock_config = Config(
25
+ region_name="us-east-1",
26
+ connect_timeout=300,
27
+ read_timeout=300,
28
+ retries={"total_max_attempts": 2, "mode": "standard"},
29
+ )
30
+ return Session().client("bedrock-runtime", config=bedrock_config)
31
+
32
+
33
+ @pytest.fixture(scope="module")
34
+ def vcr_config():
35
+ return {
36
+ "filter_headers": [
37
+ "authorization",
38
+ "X-Amz-Date",
39
+ "X-Amz-Security-Token",
40
+ "amz-sdk-invocation-id",
41
+ "amz-sdk-request",
42
+ ]
43
+ }
44
+
45
+
46
+ @pytest.fixture(scope="session", autouse=True)
47
+ def instrument():
48
+ AWSBedrockInstrumentation().instrument()
@@ -0,0 +1,135 @@
1
+ import pytest
2
+ import json
3
+ from tests.utils import (
4
+ assert_completion_in_events,
5
+ assert_prompt_in_events,
6
+ assert_token_count,
7
+ )
8
+ from importlib_metadata import version as v
9
+
10
+ from langtrace.trace_attributes import SpanAttributes
11
+ from langtrace_python_sdk.constants.instrumentation.aws_bedrock import APIS
12
+
13
+ ANTHROPIC_VERSION = "bedrock-2023-05-31"
14
+
15
+
16
+ @pytest.mark.vcr()
17
+ def test_chat_completion(exporter, aws_bedrock_client):
18
+ model_id = "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
19
+ messages_value = [{"role": "user", "content": "Say this is a test three times"}]
20
+
21
+ kwargs = {
22
+ "modelId": model_id,
23
+ "accept": "application/json",
24
+ "contentType": "application/json",
25
+ "body": json.dumps(
26
+ {
27
+ "messages": messages_value,
28
+ "anthropic_version": ANTHROPIC_VERSION,
29
+ "max_tokens": 100,
30
+ }
31
+ ),
32
+ }
33
+
34
+ aws_bedrock_client.invoke_model(**kwargs)
35
+ spans = exporter.get_finished_spans()
36
+ completion_span = spans[-1]
37
+ assert completion_span.name == "aws_bedrock.invoke_model"
38
+
39
+ attributes = completion_span.attributes
40
+
41
+ assert attributes.get(SpanAttributes.LANGTRACE_SDK_NAME) == "langtrace-python-sdk"
42
+ assert attributes.get(SpanAttributes.LANGTRACE_SERVICE_NAME) == "anthropic"
43
+ assert attributes.get(SpanAttributes.LANGTRACE_SERVICE_TYPE) == "framework"
44
+ assert attributes.get(SpanAttributes.LANGTRACE_SERVICE_VERSION) == v("boto3")
45
+ assert attributes.get(SpanAttributes.LANGTRACE_VERSION) == v("langtrace-python-sdk")
46
+ assert attributes.get(SpanAttributes.LLM_PATH) == APIS["INVOKE_MODEL"]["ENDPOINT"]
47
+ assert attributes.get(SpanAttributes.LLM_RESPONSE_MODEL) == model_id
48
+ assert attributes.get(SpanAttributes.LLM_IS_STREAMING) is False
49
+ assert_prompt_in_events(completion_span.events)
50
+ assert_completion_in_events(completion_span.events)
51
+ assert_token_count(attributes)
52
+
53
+
54
+ @pytest.mark.skip(reason="Skipping streaming test due to no streaming support in vcrpy")
55
+ def test_chat_completion_streaming(exporter, aws_bedrock_client):
56
+ model_id = "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
57
+ messages_value = [{"role": "user", "content": "Say this is a test three times"}]
58
+
59
+ kwargs = {
60
+ "modelId": model_id,
61
+ "accept": "application/json",
62
+ "contentType": "application/json",
63
+ "body": json.dumps(
64
+ {
65
+ "messages": messages_value,
66
+ "anthropic_version": ANTHROPIC_VERSION,
67
+ "max_tokens": 100,
68
+ }
69
+ ),
70
+ }
71
+
72
+ response = aws_bedrock_client.invoke_model_with_response_stream(**kwargs)
73
+ chunk_count = 0
74
+
75
+ for chunk in response["body"]:
76
+ if chunk:
77
+ chunk_count += 1
78
+
79
+ spans = exporter.get_finished_spans()
80
+ streaming_span = spans[-1]
81
+ assert streaming_span.name == "aws_bedrock.invoke_model_with_response_stream"
82
+
83
+ attributes = streaming_span.attributes
84
+
85
+ assert attributes.get(SpanAttributes.LANGTRACE_SDK_NAME) == "langtrace-python-sdk"
86
+ assert attributes.get(SpanAttributes.LANGTRACE_SERVICE_NAME) == "anthropic"
87
+ assert attributes.get(SpanAttributes.LANGTRACE_SERVICE_TYPE) == "framework"
88
+ assert attributes.get(SpanAttributes.LANGTRACE_SERVICE_VERSION) == v("boto3")
89
+ assert attributes.get(SpanAttributes.LANGTRACE_VERSION) == v("langtrace-python-sdk")
90
+ assert (
91
+ attributes.get(SpanAttributes.LLM_PATH)
92
+ == APIS["INVOKE_MODEL_WITH_RESPONSE_STREAM"]["ENDPOINT"]
93
+ )
94
+ assert (
95
+ attributes.get(SpanAttributes.LLM_RESPONSE_MODEL)
96
+ == "claude-3-7-sonnet-20250219-v1:0"
97
+ )
98
+ assert attributes.get(SpanAttributes.LLM_IS_STREAMING) is True
99
+ assert_prompt_in_events(streaming_span.events)
100
+ assert_completion_in_events(streaming_span.events)
101
+ assert_token_count(attributes)
102
+
103
+
104
+ @pytest.mark.vcr()
105
+ def test_generate_embedding(exporter, aws_bedrock_client):
106
+ model_id = "amazon.titan-embed-text-v1"
107
+
108
+ kwargs = {
109
+ "modelId": model_id,
110
+ "accept": "application/json",
111
+ "contentType": "application/json",
112
+ "body": json.dumps(
113
+ {
114
+ "inputText": "Say this is a test three times",
115
+ }
116
+ ),
117
+ }
118
+
119
+ aws_bedrock_client.invoke_model(**kwargs)
120
+ spans = exporter.get_finished_spans()
121
+ completion_span = spans[-1]
122
+ assert completion_span.name == "aws_bedrock.invoke_model"
123
+
124
+ attributes = completion_span.attributes
125
+
126
+ assert attributes.get(SpanAttributes.LANGTRACE_SDK_NAME) == "langtrace-python-sdk"
127
+ assert attributes.get(SpanAttributes.LANGTRACE_SERVICE_NAME) == "amazon"
128
+ assert attributes.get(SpanAttributes.LANGTRACE_SERVICE_TYPE) == "framework"
129
+ assert attributes.get(SpanAttributes.LANGTRACE_SERVICE_VERSION) == v("boto3")
130
+ assert attributes.get(SpanAttributes.LANGTRACE_VERSION) == v("langtrace-python-sdk")
131
+ assert attributes.get(SpanAttributes.LLM_PATH) == APIS["INVOKE_MODEL"]["ENDPOINT"]
132
+ assert attributes.get(SpanAttributes.LLM_RESPONSE_MODEL) == model_id
133
+ assert attributes.get(SpanAttributes.LLM_IS_STREAMING) is False
134
+ assert_prompt_in_events(completion_span.events)
135
+ assert_token_count(attributes)
@@ -0,0 +1,34 @@
1
+ import pytest
2
+ from langtrace_python_sdk.instrumentation.aws_bedrock.patch import (
3
+ parse_vendor_and_model_name_from_model_id,
4
+ )
5
+
6
+
7
+ def test_model_id_parsing():
8
+ model_id = "anthropic.claude-3-opus-20240229"
9
+ vendor, model_name = parse_vendor_and_model_name_from_model_id(model_id)
10
+ assert vendor == "anthropic"
11
+ assert model_name == "claude-3-opus-20240229"
12
+
13
+
14
+ def test_model_id_parsing_cross_region_inference():
15
+ model_id = "us.anthropic.claude-3-opus-20240229"
16
+ vendor, model_name = parse_vendor_and_model_name_from_model_id(model_id)
17
+ assert vendor == "anthropic"
18
+ assert model_name == "claude-3-opus-20240229"
19
+
20
+
21
+ def test_model_id_parsing_arn_custom_model_inference():
22
+ model_id = (
23
+ "arn:aws:bedrock:us-east-1:123456789012:custom-model/amazon.my-model/abc123"
24
+ )
25
+ vendor, model_name = parse_vendor_and_model_name_from_model_id(model_id)
26
+ assert vendor == "amazon"
27
+ assert model_name == "my-model"
28
+
29
+
30
+ def test_model_id_parsing_arn_foundation_model_inference():
31
+ model_id = "arn:aws:bedrock:us-east-1:123456789012:foundation-model/anthropic.claude-3-opus-20240229"
32
+ vendor, model_name = parse_vendor_and_model_name_from_model_id(model_id)
33
+ assert vendor == "anthropic"
34
+ assert model_name == "claude-3-opus-20240229"