langtrace-python-sdk 3.3.23__py3-none-any.whl → 3.3.25__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.
@@ -1,9 +1,7 @@
1
1
  from examples.awsbedrock_examples.converse import (
2
- use_converse_stream,
3
- use_converse,
4
2
  use_invoke_model_anthropic,
5
- use_invoke_model_cohere,
6
- use_invoke_model_amazon,
3
+ use_invoke_model_titan,
4
+ use_invoke_model_llama,
7
5
  )
8
6
  from langtrace_python_sdk import langtrace, with_langtrace_root_span
9
7
 
@@ -12,8 +10,9 @@ class AWSBedrockRunner:
12
10
  @with_langtrace_root_span("AWS_Bedrock")
13
11
  def run(self):
14
12
 
15
- use_converse_stream()
16
- use_converse()
17
- use_invoke_model_anthropic()
18
- use_invoke_model_cohere()
19
- use_invoke_model_amazon()
13
+ # use_converse_stream()
14
+ # use_converse()
15
+ # use_invoke_model_anthropic(stream=True)
16
+ # use_invoke_model_cohere()
17
+ # use_invoke_model_llama(stream=False)
18
+ use_invoke_model_titan(stream=False)
@@ -88,6 +88,12 @@ def use_invoke_model_titan(stream=False):
88
88
  response = brt.invoke_model_with_response_stream(
89
89
  body=body, modelId=modelId, accept=accept, contentType=contentType
90
90
  )
91
+ # Extract and print the response text in real-time.
92
+ for event in response["body"]:
93
+ chunk = json.loads(event["chunk"]["bytes"])
94
+ if "outputText" in chunk:
95
+ print(chunk["outputText"], end="")
96
+
91
97
  else:
92
98
  response = brt.invoke_model(
93
99
  body=body, modelId=modelId, accept=accept, contentType=contentType
@@ -130,7 +136,8 @@ def use_invoke_model_anthropic(stream=False):
130
136
  for event in stream_response:
131
137
  chunk = event.get("chunk")
132
138
  if chunk:
133
- print(json.loads(chunk.get("bytes").decode()))
139
+ # print(json.loads(chunk.get("bytes").decode()))
140
+ pass
134
141
 
135
142
  else:
136
143
  response = brt.invoke_model(
@@ -141,7 +148,7 @@ def use_invoke_model_anthropic(stream=False):
141
148
  print(response_body.get("completion"))
142
149
 
143
150
 
144
- def use_invoke_model_llama():
151
+ def use_invoke_model_llama(stream=False):
145
152
  model_id = "meta.llama3-8b-instruct-v1:0"
146
153
  prompt = "What is the capital of France?"
147
154
  max_gen_len = 128
@@ -157,11 +164,18 @@ def use_invoke_model_llama():
157
164
  "top_p": top_p,
158
165
  }
159
166
  )
160
- response = brt.invoke_model(body=body, modelId=model_id)
161
-
162
- response_body = json.loads(response.get("body").read())
163
167
 
164
- return response_body
168
+ if stream:
169
+ response = brt.invoke_model_with_response_stream(body=body, modelId=model_id)
170
+ for event in response["body"]:
171
+ chunk = json.loads(event["chunk"]["bytes"])
172
+ if "generation" in chunk:
173
+ # print(chunk["generation"], end="")
174
+ pass
175
+ else:
176
+ response = brt.invoke_model(body=body, modelId=model_id)
177
+ response_body = json.loads(response.get("body").read())
178
+ return response_body
165
179
 
166
180
 
167
181
  # print(get_foundation_models())
@@ -10,6 +10,7 @@ TIKTOKEN_MODEL_MAPPING = {
10
10
 
11
11
  SERVICE_PROVIDERS = {
12
12
  "ANTHROPIC": "Anthropic",
13
+ "ARCH": "Arch",
13
14
  "AZURE": "Azure",
14
15
  "CHROMA": "Chroma",
15
16
  "CREWAI": "CrewAI",
@@ -16,9 +16,7 @@ limitations under the License.
16
16
 
17
17
  import json
18
18
 
19
- from langtrace_python_sdk.instrumentation.aws_bedrock.bedrock_streaming_wrapper import (
20
- StreamingWrapper,
21
- )
19
+ from wrapt import ObjectProxy
22
20
  from .stream_body_wrapper import BufferedStreamBody
23
21
  from functools import wraps
24
22
  from langtrace.trace_attributes import (
@@ -87,6 +85,11 @@ def patch_aws_bedrock(tracer, version):
87
85
 
88
86
  client = wrapped(*args, **kwargs)
89
87
  client.invoke_model = patch_invoke_model(client.invoke_model, tracer, version)
88
+ client.invoke_model_with_response_stream = (
89
+ patch_invoke_model_with_response_stream(
90
+ client.invoke_model_with_response_stream, tracer, version
91
+ )
92
+ )
90
93
 
91
94
  client.converse = patch_converse(client.converse, tracer, version)
92
95
  client.converse_stream = patch_converse_stream(
@@ -186,6 +189,56 @@ def patch_invoke_model(original_method, tracer, version):
186
189
  return traced_method
187
190
 
188
191
 
192
+ def patch_invoke_model_with_response_stream(original_method, tracer, version):
193
+ @wraps(original_method)
194
+ def traced_method(*args, **kwargs):
195
+ modelId = kwargs.get("modelId")
196
+ (vendor, _) = modelId.split(".")
197
+ span_attributes = {
198
+ **get_langtrace_attributes(version, vendor, vendor_type="framework"),
199
+ **get_extra_attributes(),
200
+ }
201
+ span = tracer.start_span(
202
+ name=get_span_name("aws_bedrock.invoke_model_with_response_stream"),
203
+ kind=SpanKind.CLIENT,
204
+ context=set_span_in_context(trace.get_current_span()),
205
+ )
206
+ set_span_attributes(span, span_attributes)
207
+ response = original_method(*args, **kwargs)
208
+ if span.is_recording():
209
+ handle_streaming_call(span, kwargs, response)
210
+ return response
211
+
212
+ return traced_method
213
+
214
+
215
+ def handle_streaming_call(span, kwargs, response):
216
+
217
+ def stream_finished(response_body):
218
+ request_body = json.loads(kwargs.get("body"))
219
+
220
+ (vendor, model) = kwargs.get("modelId").split(".")
221
+
222
+ set_span_attribute(span, SpanAttributes.LLM_REQUEST_MODEL, model)
223
+ set_span_attribute(span, SpanAttributes.LLM_RESPONSE_MODEL, model)
224
+
225
+ if vendor == "amazon":
226
+ set_amazon_attributes(span, request_body, response_body)
227
+
228
+ if vendor == "anthropic":
229
+ if "prompt" in request_body:
230
+ set_anthropic_completions_attributes(span, request_body, response_body)
231
+ elif "messages" in request_body:
232
+ set_anthropic_messages_attributes(span, request_body, response_body)
233
+
234
+ if vendor == "meta":
235
+ set_llama_meta_attributes(span, request_body, response_body)
236
+
237
+ span.end()
238
+
239
+ response["body"] = StreamingBedrockWrapper(response["body"], stream_finished)
240
+
241
+
189
242
  def handle_call(span, kwargs, response):
190
243
  modelId = kwargs.get("modelId")
191
244
  (vendor, model_name) = modelId.split(".")
@@ -195,7 +248,6 @@ def handle_call(span, kwargs, response):
195
248
  request_body = json.loads(kwargs.get("body"))
196
249
  response_body = json.loads(response.get("body").read())
197
250
 
198
- set_span_attribute(span, SpanAttributes.LLM_SYSTEM, vendor)
199
251
  set_span_attribute(span, SpanAttributes.LLM_RESPONSE_MODEL, modelId)
200
252
  set_span_attribute(span, SpanAttributes.LLM_REQUEST_MODEL, modelId)
201
253
 
@@ -222,12 +274,18 @@ def set_llama_meta_attributes(span, request_body, response_body):
222
274
  set_span_attribute(
223
275
  span, SpanAttributes.LLM_REQUEST_MAX_TOKENS, request_body.get("max_gen_len")
224
276
  )
277
+ if "invocation_metrics" in response_body:
278
+ input_tokens = response_body.get("invocation_metrics").get("inputTokenCount")
279
+ output_tokens = response_body.get("invocation_metrics").get("outputTokenCount")
280
+ else:
281
+ input_tokens = response_body.get("prompt_token_count")
282
+ output_tokens = response_body.get("generation_token_count")
225
283
 
226
284
  set_usage_attributes(
227
285
  span,
228
286
  {
229
- "input_tokens": response_body.get("prompt_token_count"),
230
- "output_tokens": response_body.get("generation_token_count"),
287
+ "input_tokens": input_tokens,
288
+ "output_tokens": output_tokens,
231
289
  },
232
290
  )
233
291
 
@@ -245,7 +303,6 @@ def set_llama_meta_attributes(span, request_body, response_body):
245
303
  }
246
304
  ]
247
305
  set_span_attribute(span, SpanAttributes.LLM_PROMPTS, json.dumps(prompts))
248
- print(completions)
249
306
  set_event_completion(span, completions)
250
307
 
251
308
 
@@ -257,13 +314,22 @@ def set_amazon_attributes(span, request_body, response_body):
257
314
  "content": request_body.get("inputText"),
258
315
  }
259
316
  ]
260
- completions = [
261
- {
262
- "role": "assistant",
263
- "content": result.get("outputText"),
264
- }
265
- for result in response_body.get("results")
266
- ]
317
+ if "results" in response_body:
318
+ completions = [
319
+ {
320
+ "role": "assistant",
321
+ "content": result.get("outputText"),
322
+ }
323
+ for result in response_body.get("results")
324
+ ]
325
+
326
+ else:
327
+ completions = [
328
+ {
329
+ "role": "assistant",
330
+ "content": response_body.get("outputText"),
331
+ }
332
+ ]
267
333
  set_span_attribute(
268
334
  span, SpanAttributes.LLM_REQUEST_MAX_TOKENS, config.get("maxTokenCount")
269
335
  )
@@ -272,13 +338,19 @@ def set_amazon_attributes(span, request_body, response_body):
272
338
  )
273
339
  set_span_attribute(span, SpanAttributes.LLM_REQUEST_TOP_P, config.get("topP"))
274
340
  set_span_attribute(span, SpanAttributes.LLM_PROMPTS, json.dumps(prompts))
341
+ input_tokens = response_body.get("inputTextTokenCount")
342
+ if "results" in response_body:
343
+ output_tokens = sum(
344
+ int(result.get("tokenCount")) for result in response_body.get("results")
345
+ )
346
+ else:
347
+ output_tokens = response_body.get("outputTextTokenCount")
348
+
275
349
  set_usage_attributes(
276
350
  span,
277
351
  {
278
- "input_tokens": response_body.get("inputTextTokenCount"),
279
- "output_tokens": sum(
280
- int(result.get("tokenCount")) for result in response_body.get("results")
281
- ),
352
+ "input_tokens": input_tokens,
353
+ "output_tokens": output_tokens,
282
354
  },
283
355
  )
284
356
  set_event_completion(span, completions)
@@ -320,7 +392,7 @@ def set_anthropic_messages_attributes(span, request_body, response_body):
320
392
  set_span_attribute(
321
393
  span,
322
394
  SpanAttributes.LLM_REQUEST_MAX_TOKENS,
323
- request_body.get("max_tokens_to_sample"),
395
+ request_body.get("max_tokens_to_sample") or request_body.get("max_tokens"),
324
396
  )
325
397
  set_span_attribute(
326
398
  span,
@@ -394,3 +466,62 @@ def set_span_streaming_response(span, response):
394
466
  set_event_completion(
395
467
  span, [{"role": role or "assistant", "content": streaming_response}]
396
468
  )
469
+
470
+
471
+ class StreamingBedrockWrapper(ObjectProxy):
472
+ def __init__(
473
+ self,
474
+ response,
475
+ stream_done_callback=None,
476
+ ):
477
+ super().__init__(response)
478
+
479
+ self._stream_done_callback = stream_done_callback
480
+ self._accumulating_body = {"generation": ""}
481
+
482
+ def __iter__(self):
483
+ for event in self.__wrapped__:
484
+ self._process_event(event)
485
+ yield event
486
+
487
+ def _process_event(self, event):
488
+ chunk = event.get("chunk")
489
+ if not chunk:
490
+ return
491
+
492
+ decoded_chunk = json.loads(chunk.get("bytes").decode())
493
+ type = decoded_chunk.get("type")
494
+
495
+ if type is None and "outputText" in decoded_chunk:
496
+ self._stream_done_callback(decoded_chunk)
497
+ return
498
+ if "generation" in decoded_chunk:
499
+ self._accumulating_body["generation"] += decoded_chunk.get("generation")
500
+
501
+ if type == "message_start":
502
+ self._accumulating_body = decoded_chunk.get("message")
503
+ elif type == "content_block_start":
504
+ self._accumulating_body["content"].append(
505
+ decoded_chunk.get("content_block")
506
+ )
507
+ elif type == "content_block_delta":
508
+ self._accumulating_body["content"][-1]["text"] += decoded_chunk.get(
509
+ "delta"
510
+ ).get("text")
511
+
512
+ elif self.has_finished(type, decoded_chunk):
513
+ self._accumulating_body["invocation_metrics"] = decoded_chunk.get(
514
+ "amazon-bedrock-invocationMetrics"
515
+ )
516
+ self._stream_done_callback(self._accumulating_body)
517
+
518
+ def has_finished(self, type, chunk):
519
+ if type and type == "message_stop":
520
+ return True
521
+
522
+ if "completionReason" in chunk and chunk.get("completionReason") == "FINISH":
523
+ return True
524
+
525
+ if "stop_reason" in chunk and chunk.get("stop_reason") is not None:
526
+ return True
527
+ return False
@@ -254,6 +254,8 @@ def chat_completions_create(version: str, tracer: Tracer) -> Callable:
254
254
  service_provider = SERVICE_PROVIDERS["XAI"]
255
255
  elif "deepseek" in get_base_url(instance):
256
256
  service_provider = SERVICE_PROVIDERS["DEEPSEEK"]
257
+ elif ":12000" in get_base_url(instance) or ":10000" in get_base_url(instance):
258
+ service_provider = SERVICE_PROVIDERS["ARCH"]
257
259
  llm_prompts = []
258
260
  for item in kwargs.get("messages", []):
259
261
  tools = get_tool_calls(item)
@@ -348,6 +350,8 @@ def async_chat_completions_create(version: str, tracer: Tracer) -> Callable:
348
350
  service_provider = SERVICE_PROVIDERS["XAI"]
349
351
  elif "deepseek" in get_base_url(instance):
350
352
  service_provider = SERVICE_PROVIDERS["DEEPSEEK"]
353
+ elif ":12000" in get_base_url(instance) or ":10000" in get_base_url(instance):
354
+ service_provider = SERVICE_PROVIDERS["ARCH"]
351
355
  llm_prompts = []
352
356
  for item in kwargs.get("messages", []):
353
357
  tools = get_tool_calls(item)
@@ -447,6 +451,8 @@ def embeddings_create(version: str, tracer: Tracer) -> Callable:
447
451
  service_provider = SERVICE_PROVIDERS["XAI"]
448
452
  elif "deepseek" in base_url:
449
453
  service_provider = SERVICE_PROVIDERS["DEEPSEEK"]
454
+ elif ":12000" in base_url or ":10000" in base_url:
455
+ service_provider = SERVICE_PROVIDERS["ARCH"]
450
456
 
451
457
  span_attributes = {
452
458
  **get_langtrace_attributes(version, service_provider, vendor_type="llm"),
@@ -533,6 +539,8 @@ def async_embeddings_create(version: str, tracer: Tracer) -> Callable:
533
539
  service_provider = SERVICE_PROVIDERS["XAI"]
534
540
  elif "deepseek" in base_url:
535
541
  service_provider = SERVICE_PROVIDERS["DEEPSEEK"]
542
+ elif ":12000" in base_url or ":10000" in base_url:
543
+ service_provider = SERVICE_PROVIDERS["ARCH"]
536
544
 
537
545
  span_attributes = {
538
546
  **get_langtrace_attributes(version, service_provider, vendor_type="llm"),
@@ -1 +1 @@
1
- __version__ = "3.3.23"
1
+ __version__ = "3.3.25"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langtrace-python-sdk
3
- Version: 3.3.23
3
+ Version: 3.3.25
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>
@@ -3,8 +3,8 @@ examples/anthropic_example/__init__.py,sha256=03us1YuvAJR6fqXX8NH2kROBfTmyz7KzFV
3
3
  examples/anthropic_example/completion.py,sha256=3_YEZrt0BLVNJT_RbLXg6JGP2bweuc_HPC2MWR73tOM,713
4
4
  examples/autogen_example/__init__.py,sha256=UJgpzL2yOmzir-DAiGFR1PB1Zz3YcQvYcq5bCN8nl0A,158
5
5
  examples/autogen_example/main.py,sha256=6OJ73VCdHgVrqnekF1S1nK8mXCUABLbUUkQtr7wOCdw,2312
6
- examples/awsbedrock_examples/__init__.py,sha256=lVm2bgPNb4h83xRW2JbTsYf0DrZjrUr29g7-QleO4iQ,505
7
- examples/awsbedrock_examples/converse.py,sha256=-J0Hz6OSnIpO4idHol9nxL_Ri9GWwq95aqqi3wlCTRI,5317
6
+ examples/awsbedrock_examples/__init__.py,sha256=sQ6dq-K2vunY9Y8r8uS-ZwrqKd8XnvV-BukWQ2Gm0fA,537
7
+ examples/awsbedrock_examples/converse.py,sha256=41CyEla9vFT53ugLJYYHV6kchLEAfXZKMncoJHx1sds,5950
8
8
  examples/azureopenai_example/__init__.py,sha256=PaZM90r6VN4eSOXxb6wGsyhf9-RJCNqBypzk1Xa2GJI,271
9
9
  examples/azureopenai_example/completion.py,sha256=K_GeU0TfJ9lLDfW5VI0Lmm8_I0JXf1x9Qi83ImJ350c,668
10
10
  examples/cerebras_example/__init__.py,sha256=ydfNi0DjFMGVcfo79XVG3VEbzIrHo5wYBgSJzl_asNA,295
@@ -111,7 +111,7 @@ examples/weaviate_example/__init__.py,sha256=8JMDBsRSEV10HfTd-YC7xb4txBjD3la56sn
111
111
  examples/weaviate_example/query_text.py,sha256=wPHQTc_58kPoKTZMygVjTj-2ZcdrIuaausJfMxNQnQc,127162
112
112
  langtrace_python_sdk/__init__.py,sha256=VZM6i71NR7pBQK6XvJWRelknuTYUhqwqE7PlicKa5Wg,1166
113
113
  langtrace_python_sdk/langtrace.py,sha256=jvfrnkAxc41dmIvwNuVcXwCWyV2vqhGV5qAr5KiMHBA,13239
114
- langtrace_python_sdk/version.py,sha256=Q6BbHmX4u_5OYiZVZRbbX2mSRD5cDGkLiRAb8Pu2590,23
114
+ langtrace_python_sdk/version.py,sha256=az2Dhu6yZKkkThV8SgI4rYzbUuCu_ZG2DXjZd5fMiF0,23
115
115
  langtrace_python_sdk/constants/__init__.py,sha256=3CNYkWMdd1DrkGqzLUgNZXjdAlM6UFMlf_F-odAToyc,146
116
116
  langtrace_python_sdk/constants/exporter/langtrace_exporter.py,sha256=EVCrouYCpY98f0KSaKr4PzNxPULTZZO6dSA_crEOyJU,106
117
117
  langtrace_python_sdk/constants/instrumentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -119,7 +119,7 @@ langtrace_python_sdk/constants/instrumentation/anthropic.py,sha256=YX3llt3zwDY6X
119
119
  langtrace_python_sdk/constants/instrumentation/aws_bedrock.py,sha256=QwKtO4NBarOZoGkt5cFCcpxAw3zvZxcMMWBbzPPGv-g,422
120
120
  langtrace_python_sdk/constants/instrumentation/chroma.py,sha256=hiPGYdHS0Yj4Kh3eaYBbuCAl_swqIygu80yFqkOgdak,955
121
121
  langtrace_python_sdk/constants/instrumentation/cohere.py,sha256=9yD133VdrYZ5BoJR4nJHlj67gHEImB9-KsD-NkzHW1I,1159
122
- langtrace_python_sdk/constants/instrumentation/common.py,sha256=DPDX8icb0Tj3OrgpbL9WeiIaMG7Si2IKiSL8YRwwor4,1203
122
+ langtrace_python_sdk/constants/instrumentation/common.py,sha256=0_38AXPFLZnnI6T7wMiSDzTP8AAT-dmNi7Mui0q5WMg,1223
123
123
  langtrace_python_sdk/constants/instrumentation/embedchain.py,sha256=HodCJvaFjILoOG50OwFObxfVxt_8VUaIAIqvgoN3tzo,278
124
124
  langtrace_python_sdk/constants/instrumentation/gemini.py,sha256=UAmfgg9FM7uNeOCdPfWlir6OIH-8BoxFGPRpdBd9ZZs,358
125
125
  langtrace_python_sdk/constants/instrumentation/groq.py,sha256=VFXmIl4aqGY_fS0PAmjPj_Qm7Tibxbx7Ur_e7rQpqXc,134
@@ -147,7 +147,7 @@ langtrace_python_sdk/instrumentation/autogen/patch.py,sha256=7Sq3C8Q5tT27UkWXd1S
147
147
  langtrace_python_sdk/instrumentation/aws_bedrock/__init__.py,sha256=IHqPgR1kdDvcoV1nUb-B21PaJ_qbQB0jc011Udi1ioU,96
148
148
  langtrace_python_sdk/instrumentation/aws_bedrock/bedrock_streaming_wrapper.py,sha256=_EMlxfBhjNsB-2TrP0ek-vx1CK5bpgjXPmQWNT9eBcE,1370
149
149
  langtrace_python_sdk/instrumentation/aws_bedrock/instrumentation.py,sha256=M7Dyw1tG18ptD0ctCT9yHzO4UyKCcS8JkHg9WVaz9Ck,1473
150
- langtrace_python_sdk/instrumentation/aws_bedrock/patch.py,sha256=cZ20LS0lNCKoEeeJLVEG5aduuGrapu_u4v8Cl-z6gLg,13406
150
+ langtrace_python_sdk/instrumentation/aws_bedrock/patch.py,sha256=KKNp9gKzoj9YuLrqA0VMDe0FUSBzKtrbXiNN1hdciJM,17941
151
151
  langtrace_python_sdk/instrumentation/aws_bedrock/stream_body_wrapper.py,sha256=ENdhRVHBhdkIlJIc_tkf8ASijUzZdVZM-oonNLdNM48,1584
152
152
  langtrace_python_sdk/instrumentation/cerebras/__init__.py,sha256=9rHNg7PWcZ7a9jExQZlqwWPkvLGcPT-DGWot0_6Bx9k,92
153
153
  langtrace_python_sdk/instrumentation/cerebras/instrumentation.py,sha256=WPsaYxHanYnoxGjDk7fILGJSnSRUs_zoQ30JCyPBMII,1927
@@ -206,7 +206,7 @@ langtrace_python_sdk/instrumentation/ollama/instrumentation.py,sha256=jdsvkqUJAA
206
206
  langtrace_python_sdk/instrumentation/ollama/patch.py,sha256=w99r9wCCVDdJnZQEezYE2lW_iNFEtrldt9vq3ISAsag,5375
207
207
  langtrace_python_sdk/instrumentation/openai/__init__.py,sha256=VPHRNCQEdkizIVP2d0Uw_a7t8XOTSTprEIB8oboJFbs,95
208
208
  langtrace_python_sdk/instrumentation/openai/instrumentation.py,sha256=PZxI0qfoud1VsKGmJu49YDp0Z9z9TzCR8qxR3uznOMA,2810
209
- langtrace_python_sdk/instrumentation/openai/patch.py,sha256=u8qlCooN-JmGVWLe7jwAeBMHTIi35ktVvL9gWVBfDko,26809
209
+ langtrace_python_sdk/instrumentation/openai/patch.py,sha256=EQRE_b_os6jqdqKOj6XZb58QT3tUyCAcFUiwM0CDDLU,27329
210
210
  langtrace_python_sdk/instrumentation/openai/types.py,sha256=aVkoa7tmAbYfyOhnyMrDaVjQuwhmRNLMthlNtKMtWX8,4311
211
211
  langtrace_python_sdk/instrumentation/pinecone/__init__.py,sha256=DzXyGh9_MGWveJvXULkFwdkf7PbG2s3bAWtT1Dmz7Ok,99
212
212
  langtrace_python_sdk/instrumentation/pinecone/instrumentation.py,sha256=HDXkRITrVPwdQEoOYJOfMzZE_2-vDDvuqHTlD8W1lQw,1845
@@ -277,8 +277,8 @@ tests/pinecone/cassettes/test_query.yaml,sha256=b5v9G3ssUy00oG63PlFUR3JErF2Js-5A
277
277
  tests/pinecone/cassettes/test_upsert.yaml,sha256=neWmQ1v3d03V8WoLl8FoFeeCYImb8pxlJBWnFd_lITU,38607
278
278
  tests/qdrant/conftest.py,sha256=9n0uHxxIjWk9fbYc4bx-uP8lSAgLBVx-cV9UjnsyCHM,381
279
279
  tests/qdrant/test_qdrant.py,sha256=pzjAjVY2kmsmGfrI2Gs2xrolfuaNHz7l1fqGQCjp5_o,3353
280
- langtrace_python_sdk-3.3.23.dist-info/METADATA,sha256=KuERJmhF9i6f40sX0ty1TVq_6zaiAefIEmwTr78vkz8,15676
281
- langtrace_python_sdk-3.3.23.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
282
- langtrace_python_sdk-3.3.23.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
283
- langtrace_python_sdk-3.3.23.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
284
- langtrace_python_sdk-3.3.23.dist-info/RECORD,,
280
+ langtrace_python_sdk-3.3.25.dist-info/METADATA,sha256=s4G6wsJb-vgM1moTavHUaw6q_aWzKvpxrLgapDjxOsU,15676
281
+ langtrace_python_sdk-3.3.25.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
282
+ langtrace_python_sdk-3.3.25.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
283
+ langtrace_python_sdk-3.3.25.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
284
+ langtrace_python_sdk-3.3.25.dist-info/RECORD,,