langtrace-python-sdk 3.1.3__py3-none-any.whl → 3.2.0__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.
@@ -0,0 +1,10 @@
1
+ from examples.awsbedrock_examples.converse import use_converse
2
+ from langtrace_python_sdk import langtrace, with_langtrace_root_span
3
+
4
+ langtrace.init()
5
+
6
+
7
+ class AWSBedrockRunner:
8
+ @with_langtrace_root_span("AWS_Bedrock")
9
+ def run(self):
10
+ use_converse()
@@ -0,0 +1,34 @@
1
+ import os
2
+ import boto3
3
+ from langtrace_python_sdk import langtrace
4
+
5
+ langtrace.init(api_key=os.environ["LANGTRACE_API_KEY"])
6
+
7
+ def use_converse():
8
+ model_id = "anthropic.claude-3-haiku-20240307-v1:0"
9
+ client = boto3.client(
10
+ "bedrock-runtime",
11
+ region_name="us-east-1",
12
+ aws_access_key_id=os.environ["AWS_ACCESS_KEY_ID"],
13
+ aws_secret_access_key=os.environ["AWS_SECRET_ACCESS_KEY"],
14
+ )
15
+ conversation = [
16
+ {
17
+ "role": "user",
18
+ "content": [{"text": "Write a story about a magic backpack."}],
19
+ }
20
+ ]
21
+
22
+ try:
23
+ response = client.converse(
24
+ modelId=model_id,
25
+ messages=conversation,
26
+ inferenceConfig={"maxTokens":4096,"temperature":0},
27
+ additionalModelRequestFields={"top_k":250}
28
+ )
29
+ response_text = response["output"]["message"]["content"][0]["text"]
30
+ print(response_text)
31
+
32
+ except (Exception) as e:
33
+ print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}")
34
+ exit(1)
@@ -0,0 +1,12 @@
1
+ from langtrace.trace_attributes import AWSBedrockMethods
2
+
3
+ APIS = {
4
+ "CONVERSE": {
5
+ "METHOD": AWSBedrockMethods.CONVERSE.value,
6
+ "ENDPOINT": "/converse",
7
+ },
8
+ "CONVERSE_STREAM": {
9
+ "METHOD": AWSBedrockMethods.CONVERSE_STREAM.value,
10
+ "ENDPOINT": "/converse-stream",
11
+ },
12
+ }
@@ -33,6 +33,8 @@ SERVICE_PROVIDERS = {
33
33
  "MISTRAL": "Mistral",
34
34
  "EMBEDCHAIN": "Embedchain",
35
35
  "AUTOGEN": "Autogen",
36
+ "XAI": "XAI",
37
+ "AWS_BEDROCK": "AWS Bedrock",
36
38
  }
37
39
 
38
40
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY = "langtrace_additional_attributes"
@@ -18,6 +18,7 @@ from .autogen import AutogenInstrumentation
18
18
  from .vertexai import VertexAIInstrumentation
19
19
  from .gemini import GeminiInstrumentation
20
20
  from .mistral import MistralInstrumentation
21
+ from .aws_bedrock import AWSBedrockInstrumentation
21
22
  from .embedchain import EmbedchainInstrumentation
22
23
  from .litellm import LiteLLMInstrumentation
23
24
 
@@ -44,4 +45,5 @@ __all__ = [
44
45
  "VertexAIInstrumentation",
45
46
  "GeminiInstrumentation",
46
47
  "MistralInstrumentation",
48
+ "AWSBedrockInstrumentation",
47
49
  ]
@@ -0,0 +1,3 @@
1
+ from .instrumentation import AWSBedrockInstrumentation
2
+
3
+ __all__ = ["AWSBedrockInstrumentation"]
@@ -0,0 +1,58 @@
1
+ """
2
+ Copyright (c) 2024 Scale3 Labs
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ """
16
+
17
+ import importlib.metadata
18
+ import logging
19
+ from typing import Collection
20
+
21
+ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
22
+ from opentelemetry.trace import get_tracer
23
+ from wrapt import wrap_function_wrapper as _W
24
+
25
+ from langtrace_python_sdk.instrumentation.aws_bedrock.patch import (
26
+ converse, converse_stream
27
+ )
28
+
29
+ logging.basicConfig(level=logging.FATAL)
30
+
31
+ def _patch_client(client, version: str, tracer) -> None:
32
+
33
+ # Store original methods
34
+ original_converse = client.converse
35
+
36
+ # Replace with wrapped versions
37
+ client.converse = converse("aws_bedrock.converse", version, tracer)(original_converse)
38
+
39
+ class AWSBedrockInstrumentation(BaseInstrumentor):
40
+
41
+ def instrumentation_dependencies(self) -> Collection[str]:
42
+ return ["boto3 >= 1.35.31"]
43
+
44
+ def _instrument(self, **kwargs):
45
+ tracer_provider = kwargs.get("tracer_provider")
46
+ tracer = get_tracer(__name__, "", tracer_provider)
47
+ version = importlib.metadata.version("boto3")
48
+
49
+ def wrap_create_client(wrapped, instance, args, kwargs):
50
+ result = wrapped(*args, **kwargs)
51
+ if args and args[0] == 'bedrock-runtime':
52
+ _patch_client(result, version, tracer)
53
+ return result
54
+
55
+ _W("boto3", "client", wrap_create_client)
56
+
57
+ def _uninstrument(self, **kwargs):
58
+ pass
@@ -0,0 +1,157 @@
1
+ """
2
+ Copyright (c) 2024 Scale3 Labs
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ """
16
+
17
+ import json
18
+ from functools import wraps
19
+
20
+ from langtrace.trace_attributes import (
21
+ LLMSpanAttributes,
22
+ SpanAttributes,
23
+ )
24
+ from langtrace_python_sdk.utils import set_span_attribute
25
+ from langtrace_python_sdk.utils.silently_fail import silently_fail
26
+ from opentelemetry import trace
27
+ from opentelemetry.trace import SpanKind
28
+ from opentelemetry.trace.status import Status, StatusCode
29
+ from opentelemetry.trace.propagation import set_span_in_context
30
+ from langtrace_python_sdk.constants.instrumentation.common import (
31
+ SERVICE_PROVIDERS,
32
+ )
33
+ from langtrace_python_sdk.constants.instrumentation.aws_bedrock import APIS
34
+ from langtrace_python_sdk.utils.llm import (
35
+ get_extra_attributes,
36
+ get_langtrace_attributes,
37
+ get_llm_request_attributes,
38
+ get_llm_url,
39
+ get_span_name,
40
+ set_event_completion,
41
+ set_span_attributes,
42
+ )
43
+
44
+
45
+ def traced_aws_bedrock_call(api_name: str, operation_name: str):
46
+ def decorator(method_name: str, version: str, tracer):
47
+ def wrapper(original_method):
48
+ @wraps(original_method)
49
+ def wrapped_method(*args, **kwargs):
50
+ service_provider = SERVICE_PROVIDERS["AWS_BEDROCK"]
51
+
52
+ input_content = [
53
+ {
54
+ 'role': message.get('role', 'user'),
55
+ 'content': message.get('content', [])[0].get('text', "")
56
+ }
57
+ for message in kwargs.get('messages', [])
58
+ ]
59
+
60
+ span_attributes = {
61
+ **get_langtrace_attributes(version, service_provider, vendor_type="framework"),
62
+ **get_llm_request_attributes(kwargs, operation_name=operation_name, prompts=input_content),
63
+ **get_llm_url(args[0] if args else None),
64
+ SpanAttributes.LLM_PATH: APIS[api_name]["ENDPOINT"],
65
+ **get_extra_attributes(),
66
+ }
67
+
68
+ if api_name == "CONVERSE":
69
+ span_attributes.update({
70
+ SpanAttributes.LLM_REQUEST_MODEL: kwargs.get('modelId'),
71
+ SpanAttributes.LLM_REQUEST_MAX_TOKENS: kwargs.get('inferenceConfig', {}).get('maxTokens'),
72
+ SpanAttributes.LLM_REQUEST_TEMPERATURE: kwargs.get('inferenceConfig', {}).get('temperature'),
73
+ SpanAttributes.LLM_REQUEST_TOP_P: kwargs.get('inferenceConfig', {}).get('top_p'),
74
+ })
75
+
76
+ attributes = LLMSpanAttributes(**span_attributes)
77
+
78
+ with tracer.start_as_current_span(
79
+ name=get_span_name(APIS[api_name]["METHOD"]),
80
+ kind=SpanKind.CLIENT,
81
+ context=set_span_in_context(trace.get_current_span()),
82
+ ) as span:
83
+ set_span_attributes(span, attributes)
84
+ try:
85
+ result = original_method(*args, **kwargs)
86
+ _set_response_attributes(span, kwargs, result)
87
+ span.set_status(StatusCode.OK)
88
+ return result
89
+ except Exception as err:
90
+ span.record_exception(err)
91
+ span.set_status(Status(StatusCode.ERROR, str(err)))
92
+ raise err
93
+
94
+ return wrapped_method
95
+ return wrapper
96
+ return decorator
97
+
98
+
99
+ converse = traced_aws_bedrock_call("CONVERSE", "converse")
100
+
101
+
102
+ def converse_stream(original_method, version, tracer):
103
+ def traced_method(wrapped, instance, args, kwargs):
104
+ service_provider = SERVICE_PROVIDERS["AWS_BEDROCK"]
105
+
106
+ span_attributes = {
107
+ **get_langtrace_attributes
108
+ (version, service_provider, vendor_type="llm"),
109
+ **get_llm_request_attributes(kwargs),
110
+ **get_llm_url(instance),
111
+ SpanAttributes.LLM_PATH: APIS["CONVERSE_STREAM"]["ENDPOINT"],
112
+ **get_extra_attributes(),
113
+ }
114
+
115
+ attributes = LLMSpanAttributes(**span_attributes)
116
+
117
+ with tracer.start_as_current_span(
118
+ name=get_span_name(APIS["CONVERSE_STREAM"]["METHOD"]),
119
+ kind=SpanKind.CLIENT,
120
+ context=set_span_in_context(trace.get_current_span()),
121
+ ) as span:
122
+ set_span_attributes(span, attributes)
123
+ try:
124
+ result = wrapped(*args, **kwargs)
125
+ _set_response_attributes(span, kwargs, result)
126
+ span.set_status(StatusCode.OK)
127
+ return result
128
+ except Exception as err:
129
+ span.record_exception(err)
130
+ span.set_status(Status(StatusCode.ERROR, str(err)))
131
+ raise err
132
+
133
+ return traced_method
134
+
135
+
136
+ @silently_fail
137
+ def _set_response_attributes(span, kwargs, result):
138
+ set_span_attribute(span, SpanAttributes.LLM_RESPONSE_MODEL, kwargs.get('modelId'))
139
+ set_span_attribute(span, SpanAttributes.LLM_TOP_K, kwargs.get('additionalModelRequestFields', {}).get('top_k'))
140
+ content = result.get('output', {}).get('message', {}).get('content', [])
141
+ if len(content) > 0:
142
+ role = result.get('output', {}).get('message', {}).get('role', "assistant")
143
+ responses = [
144
+ {"role": role, "content": c.get('text', "")}
145
+ for c in content
146
+ ]
147
+ set_event_completion(span, responses)
148
+
149
+ if 'usage' in result:
150
+ set_span_attributes(
151
+ span,
152
+ {
153
+ SpanAttributes.LLM_USAGE_COMPLETION_TOKENS: result['usage'].get('outputTokens'),
154
+ SpanAttributes.LLM_USAGE_PROMPT_TOKENS: result['usage'].get('inputTokens'),
155
+ SpanAttributes.LLM_USAGE_TOTAL_TOKENS: result['usage'].get('totalTokens'),
156
+ }
157
+ )
@@ -55,6 +55,8 @@ def chat_completions_create(original_method, version, tracer):
55
55
  service_provider = SERVICE_PROVIDERS["PPLX"]
56
56
  elif "azure" in get_base_url(instance):
57
57
  service_provider = SERVICE_PROVIDERS["AZURE"]
58
+ elif "x.ai" in get_base_url(instance):
59
+ service_provider = SERVICE_PROVIDERS["XAI"]
58
60
 
59
61
  # handle tool calls in the kwargs
60
62
  llm_prompts = []
@@ -274,6 +276,8 @@ def async_chat_completions_create(original_method, version, tracer):
274
276
  service_provider = SERVICE_PROVIDERS["PPLX"]
275
277
  elif "azure" in get_base_url(instance):
276
278
  service_provider = SERVICE_PROVIDERS["AZURE"]
279
+ elif "x.ai" in get_base_url(instance):
280
+ service_provider = SERVICE_PROVIDERS["XAI"]
277
281
 
278
282
  # handle tool calls in the kwargs
279
283
  llm_prompts = []
@@ -248,6 +248,8 @@ def chat_completions_create(version: str, tracer: Tracer) -> Callable:
248
248
  service_provider = SERVICE_PROVIDERS["AZURE"]
249
249
  elif "groq" in get_base_url(instance):
250
250
  service_provider = SERVICE_PROVIDERS["GROQ"]
251
+ elif "x.ai" in get_base_url(instance):
252
+ service_provider = SERVICE_PROVIDERS["XAI"]
251
253
  llm_prompts = []
252
254
  for item in kwargs.get("messages", []):
253
255
  tools = get_tool_calls(item)
@@ -336,6 +338,8 @@ def async_chat_completions_create(version: str, tracer: Tracer) -> Callable:
336
338
  service_provider = SERVICE_PROVIDERS["PPLX"]
337
339
  elif "azure" in get_base_url(instance):
338
340
  service_provider = SERVICE_PROVIDERS["AZURE"]
341
+ elif "x.ai" in get_base_url(instance):
342
+ service_provider = SERVICE_PROVIDERS["XAI"]
339
343
  llm_prompts = []
340
344
  for item in kwargs.get("messages", []):
341
345
  tools = get_tool_calls(item)
@@ -249,6 +249,8 @@ def chat_completions_create(version: str, tracer: Tracer) -> Callable:
249
249
  service_provider = SERVICE_PROVIDERS["AZURE"]
250
250
  elif "groq" in get_base_url(instance):
251
251
  service_provider = SERVICE_PROVIDERS["GROQ"]
252
+ elif "x.ai" in get_base_url(instance):
253
+ service_provider = SERVICE_PROVIDERS["XAI"]
252
254
  llm_prompts = []
253
255
  for item in kwargs.get("messages", []):
254
256
  tools = get_tool_calls(item)
@@ -337,6 +339,8 @@ def async_chat_completions_create(version: str, tracer: Tracer) -> Callable:
337
339
  service_provider = SERVICE_PROVIDERS["PPLX"]
338
340
  elif "azure" in get_base_url(instance):
339
341
  service_provider = SERVICE_PROVIDERS["AZURE"]
342
+ elif "x.ai" in get_base_url(instance):
343
+ service_provider = SERVICE_PROVIDERS["XAI"]
340
344
  llm_prompts = []
341
345
  for item in kwargs.get("messages", []):
342
346
  tools = get_tool_calls(item)
@@ -56,6 +56,7 @@ from langtrace_python_sdk.instrumentation import (
56
56
  LiteLLMInstrumentation,
57
57
  LlamaindexInstrumentation,
58
58
  MistralInstrumentation,
59
+ AWSBedrockInstrumentation,
59
60
  OllamaInstrumentor,
60
61
  OpenAIInstrumentation,
61
62
  PineconeInstrumentation,
@@ -278,6 +279,7 @@ def init(
278
279
  "google-cloud-aiplatform": VertexAIInstrumentation(),
279
280
  "google-generativeai": GeminiInstrumentation(),
280
281
  "mistralai": MistralInstrumentation(),
282
+ "boto3": AWSBedrockInstrumentation(),
281
283
  "autogen": AutogenInstrumentation(),
282
284
  }
283
285
 
@@ -30,6 +30,7 @@ class InstrumentationType(Enum):
30
30
  SQLALCHEMY = "sqlalchemy"
31
31
  VERTEXAI = "vertexai"
32
32
  WEAVIATE = "weaviate"
33
+ AWS_BEDROCK = "boto3"
33
34
 
34
35
  @staticmethod
35
36
  def from_string(value: str):
@@ -62,6 +63,11 @@ class VendorMethods(TypedDict):
62
63
  "mistral.embeddings.create",
63
64
  ]
64
65
 
66
+ AwsBedrockMethods = Literal[
67
+ "aws_bedrock.converse",
68
+ "aws_bedrock.converse_stream",
69
+ ]
70
+
65
71
  ChromadbMethods = Literal[
66
72
  "chromadb.collection.add",
67
73
  "chromadb.collection.query",
@@ -112,6 +118,7 @@ class InstrumentationMethods(TypedDict):
112
118
  open_ai: List[VendorMethods.OpenaiMethods]
113
119
  groq: List[VendorMethods.GroqMethods]
114
120
  mistral: List[VendorMethods.MistralMethods]
121
+ aws_bedrock: List[VendorMethods.AwsBedrockMethods]
115
122
  pinecone: List[VendorMethods.PineconeMethods]
116
123
  llamaindex: List[VendorMethods.LlamaIndexMethods]
117
124
  chromadb: List[VendorMethods.ChromadbMethods]
@@ -1 +1 @@
1
- __version__ = "3.1.3"
1
+ __version__ = "3.2.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langtrace-python-sdk
3
- Version: 3.1.3
3
+ Version: 3.2.0
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>
@@ -21,11 +21,12 @@ Requires-Dist: opentelemetry-sdk>=1.25.0
21
21
  Requires-Dist: sentry-sdk>=2.14.0
22
22
  Requires-Dist: sqlalchemy
23
23
  Requires-Dist: tiktoken>=0.1.1
24
- Requires-Dist: trace-attributes==7.0.4
24
+ Requires-Dist: trace-attributes==7.1.0
25
25
  Requires-Dist: transformers>=4.11.3
26
26
  Requires-Dist: ujson>=5.10.0
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: anthropic; extra == 'dev'
29
+ Requires-Dist: boto3; extra == 'dev'
29
30
  Requires-Dist: chromadb; extra == 'dev'
30
31
  Requires-Dist: cohere; extra == 'dev'
31
32
  Requires-Dist: embedchain; extra == 'dev'
@@ -3,6 +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=MMaW1756Hqv8rRX6do_O_-SIfauLzoYxRgBemR9KL6g,263
7
+ examples/awsbedrock_examples/converse.py,sha256=vra4yfXYynWyFenoO8wdUnksPx_o481BQlpuWkddLZY,1024
6
8
  examples/azureopenai_example/__init__.py,sha256=PaZM90r6VN4eSOXxb6wGsyhf9-RJCNqBypzk1Xa2GJI,271
7
9
  examples/azureopenai_example/completion.py,sha256=K_GeU0TfJ9lLDfW5VI0Lmm8_I0JXf1x9Qi83ImJ350c,668
8
10
  examples/chroma_example/__init__.py,sha256=Mrf8KptW1hhzu6WDdRRTxbaB-0kM7x5u-Goc_zR7G5c,203
@@ -98,15 +100,16 @@ examples/vertexai_example/main.py,sha256=gndId5X5ksD-ycxnAWMdEqIDbLc3kz5Vt8vm4YP
98
100
  examples/weaviate_example/__init__.py,sha256=8JMDBsRSEV10HfTd-YC7xb4txBjD3la56snk-Bbg2Kw,618
99
101
  examples/weaviate_example/query_text.py,sha256=wPHQTc_58kPoKTZMygVjTj-2ZcdrIuaausJfMxNQnQc,127162
100
102
  langtrace_python_sdk/__init__.py,sha256=VZM6i71NR7pBQK6XvJWRelknuTYUhqwqE7PlicKa5Wg,1166
101
- langtrace_python_sdk/langtrace.py,sha256=dSOJtEGCq-D4EGWoBfLOF6xGy1IBYk5EG7zatq_h0-Y,12344
102
- langtrace_python_sdk/version.py,sha256=xoSqNkNOCK0xzFXnsO80epHc1vbiRC8Nbn4Cy-2wBX4,22
103
+ langtrace_python_sdk/langtrace.py,sha256=tqdGqEeVoAq0QhzY0l_BWXGwU25hUQkGIoh00gvFi3c,12421
104
+ langtrace_python_sdk/version.py,sha256=OUX37Yd6ZO82d0GJL2dmK0gZTtc_xvlTvGQIl2I-D8k,22
103
105
  langtrace_python_sdk/constants/__init__.py,sha256=3CNYkWMdd1DrkGqzLUgNZXjdAlM6UFMlf_F-odAToyc,146
104
106
  langtrace_python_sdk/constants/exporter/langtrace_exporter.py,sha256=d-3Qn5C_NTy1NkmdavZvy-6vePwTC5curN6QMy2haHc,50
105
107
  langtrace_python_sdk/constants/instrumentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
108
  langtrace_python_sdk/constants/instrumentation/anthropic.py,sha256=YX3llt3zwDY6XrYk3CB8WEVqgrzRXEw_ffyk56JoF3k,126
109
+ langtrace_python_sdk/constants/instrumentation/aws_bedrock.py,sha256=f9eukqoxrPgPeaBJX2gpBUz1uu0dZIPahOpvoudfbH8,310
107
110
  langtrace_python_sdk/constants/instrumentation/chroma.py,sha256=hiPGYdHS0Yj4Kh3eaYBbuCAl_swqIygu80yFqkOgdak,955
108
111
  langtrace_python_sdk/constants/instrumentation/cohere.py,sha256=tf9sDfb5K3qOAHChEE5o8eYWPZ1io58VsOjZDCZPxfw,577
109
- langtrace_python_sdk/constants/instrumentation/common.py,sha256=yqSheP9Yx_otzrau3KgdMSNHMvBpWzt2ahifoDTbLCg,1045
112
+ langtrace_python_sdk/constants/instrumentation/common.py,sha256=yOtmk9R_u1G2RP5edodmJ5O4I1ebl7HuHKDzd0XSwPw,1097
110
113
  langtrace_python_sdk/constants/instrumentation/embedchain.py,sha256=HodCJvaFjILoOG50OwFObxfVxt_8VUaIAIqvgoN3tzo,278
111
114
  langtrace_python_sdk/constants/instrumentation/gemini.py,sha256=UAmfgg9FM7uNeOCdPfWlir6OIH-8BoxFGPRpdBd9ZZs,358
112
115
  langtrace_python_sdk/constants/instrumentation/groq.py,sha256=VFXmIl4aqGY_fS0PAmjPj_Qm7Tibxbx7Ur_e7rQpqXc,134
@@ -121,7 +124,7 @@ langtrace_python_sdk/constants/instrumentation/weaviate.py,sha256=gtv-JBxvNGClEM
121
124
  langtrace_python_sdk/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
125
  langtrace_python_sdk/extensions/langtrace_exporter.py,sha256=UFupNL03zklVd5penpsfXjbWSb5qB39mEv2BY2wczSs,6307
123
126
  langtrace_python_sdk/extensions/langtrace_filesystem.py,sha256=34fZutG28EJ66l67OvTGsydAH3ZpXgikdE7hVLqBpG4,7863
124
- langtrace_python_sdk/instrumentation/__init__.py,sha256=U2uQxrczJzPxZUFaRniN2iEK5ujRk7QadG7iM0sLDEc,1696
127
+ langtrace_python_sdk/instrumentation/__init__.py,sha256=MUMbmAQ7YcnmhtitJT8QLVMqDdDjI4WtloctWf_jvJs,1780
125
128
  langtrace_python_sdk/instrumentation/anthropic/__init__.py,sha256=donrurJAGYlxrSRA3BIf76jGeUcAx9Tq8CVpah68S0Y,101
126
129
  langtrace_python_sdk/instrumentation/anthropic/instrumentation.py,sha256=ndXdruI0BG7n75rsuEpKjfzePxrZxg40gZ39ONmD_v4,1845
127
130
  langtrace_python_sdk/instrumentation/anthropic/patch.py,sha256=ztPN4VZujoxYOKhTbFnup7Ibms9NAzYCPAJY43NUgKw,4935
@@ -129,6 +132,9 @@ langtrace_python_sdk/instrumentation/anthropic/types.py,sha256=WdeXe2tkjAisMLK38
129
132
  langtrace_python_sdk/instrumentation/autogen/__init__.py,sha256=unDhpqWQIdHFw24lRsRu1Mm1NCZxZgyBrPRZrAJL3Lo,90
130
133
  langtrace_python_sdk/instrumentation/autogen/instrumentation.py,sha256=MVDUCBi6XzLQYmZd6myAounI0HeM8QWX5leuul5Hj0Q,1262
131
134
  langtrace_python_sdk/instrumentation/autogen/patch.py,sha256=mp6WxHYVqTXvqZOi6CnZNN0MmzoG5v9LPMU2fjkivsY,4650
135
+ langtrace_python_sdk/instrumentation/aws_bedrock/__init__.py,sha256=IHqPgR1kdDvcoV1nUb-B21PaJ_qbQB0jc011Udi1ioU,96
136
+ langtrace_python_sdk/instrumentation/aws_bedrock/instrumentation.py,sha256=2l-WiyWYUEoGre92rmylq2jPZ5w4jcxTXmCTuQNC1RU,1911
137
+ langtrace_python_sdk/instrumentation/aws_bedrock/patch.py,sha256=VAroMezSGKT2jQ5tggbdiMRIPr9mtLItGJJgZ-xoGls,6296
132
138
  langtrace_python_sdk/instrumentation/chroma/__init__.py,sha256=pNZ5UO8Q-d5VkXSobBf79reB6AmEl_usnnTp5Itv818,95
133
139
  langtrace_python_sdk/instrumentation/chroma/instrumentation.py,sha256=nT6PS6bsrIOO9kLV5GuUeRjMe6THHHAZGvqWBP1dYog,1807
134
140
  langtrace_python_sdk/instrumentation/chroma/patch.py,sha256=jYcqBeu-0cYA29PO880oXYRwYh-R1oseXmzfK6UDBps,9074
@@ -149,7 +155,7 @@ langtrace_python_sdk/instrumentation/gemini/instrumentation.py,sha256=eGWr2dy1f_
149
155
  langtrace_python_sdk/instrumentation/gemini/patch.py,sha256=thhqxrzk-nLiV0lzEwVWzbzOJndDarYIck6N9Gq3aTM,6151
150
156
  langtrace_python_sdk/instrumentation/groq/__init__.py,sha256=ZXeq_nrej6Lm_uoMFEg8wbSejhjB2UJ5IoHQBPc2-C0,91
151
157
  langtrace_python_sdk/instrumentation/groq/instrumentation.py,sha256=Ttf07XVKhdYY1_fqJc7QWiSdmgEhEVyQB_3Az2_wqYo,1832
152
- langtrace_python_sdk/instrumentation/groq/patch.py,sha256=MNz2brkSDQT2eRKJFAwUwMEOca9TQC4gsuYIx7WpEA4,22955
158
+ langtrace_python_sdk/instrumentation/groq/patch.py,sha256=J0h8SXEw2LyMIJhKZTVydEysyKfSLWkCuhEharzDS4w,23161
153
159
  langtrace_python_sdk/instrumentation/langchain/__init__.py,sha256=-7ZkqQFu64F-cxSFd1ZPrciODKqmUIyUbQQ-eHuQPyM,101
154
160
  langtrace_python_sdk/instrumentation/langchain/instrumentation.py,sha256=mek9-wlkuhFd7teSveQEd717i_a9yQtGdGyw7jOMIdo,3860
155
161
  langtrace_python_sdk/instrumentation/langchain/patch.py,sha256=sjmY-Ciu6G-qRV_mHJ2HFWqbEWXnA75GH_WFK_d_p6o,4410
@@ -164,7 +170,7 @@ langtrace_python_sdk/instrumentation/langgraph/instrumentation.py,sha256=SUZZhWS
164
170
  langtrace_python_sdk/instrumentation/langgraph/patch.py,sha256=PGe1ZywXctB_yYqnp8AtD8Xqj7EZ087-S5_2vLRYhEQ,4987
165
171
  langtrace_python_sdk/instrumentation/litellm/__init__.py,sha256=8uziCc56rFSRiPkYcrcBRbtppOANkZ7uZssCKAl2MKk,97
166
172
  langtrace_python_sdk/instrumentation/litellm/instrumentation.py,sha256=Km2q_yfZU6nSqPEXG2xbtTSjqv7xSS92Kxqzw-GtQno,2655
167
- langtrace_python_sdk/instrumentation/litellm/patch.py,sha256=6ed50KrSC-2Upoh12BlcqfRVzZ1iXcTr8U9cVh9LhvU,24263
173
+ langtrace_python_sdk/instrumentation/litellm/patch.py,sha256=wGPOlrLo4RHj1lXNv6wOz5H_p4G0XtzhVjgc-2m7Gik,24469
168
174
  langtrace_python_sdk/instrumentation/litellm/types.py,sha256=aVkoa7tmAbYfyOhnyMrDaVjQuwhmRNLMthlNtKMtWX8,4311
169
175
  langtrace_python_sdk/instrumentation/llamaindex/__init__.py,sha256=rHvuqpuQKLj57Ow7vuKRqxAN5jT0b5NBeHwhXbbnRa4,103
170
176
  langtrace_python_sdk/instrumentation/llamaindex/instrumentation.py,sha256=8iAg-Oxwf2W4S60qRfO5mvzORYxublgq7FdGWqUB4q8,2965
@@ -177,7 +183,7 @@ langtrace_python_sdk/instrumentation/ollama/instrumentation.py,sha256=jdsvkqUJAA
177
183
  langtrace_python_sdk/instrumentation/ollama/patch.py,sha256=7ETx0tQic5h_kH1f-IeptFwgNTBb4hSkTkWsB18Avm0,5375
178
184
  langtrace_python_sdk/instrumentation/openai/__init__.py,sha256=VPHRNCQEdkizIVP2d0Uw_a7t8XOTSTprEIB8oboJFbs,95
179
185
  langtrace_python_sdk/instrumentation/openai/instrumentation.py,sha256=PZxI0qfoud1VsKGmJu49YDp0Z9z9TzCR8qxR3uznOMA,2810
180
- langtrace_python_sdk/instrumentation/openai/patch.py,sha256=_xpvGmWBQtu_J0aPesgk-J6zXpZFblG3ukvs9ZzAm0w,24225
186
+ langtrace_python_sdk/instrumentation/openai/patch.py,sha256=MacQoaqs5b3zgCkD6z2k6fP9mruRtLSLWNNBXuZ70m8,24431
181
187
  langtrace_python_sdk/instrumentation/openai/types.py,sha256=aVkoa7tmAbYfyOhnyMrDaVjQuwhmRNLMthlNtKMtWX8,4311
182
188
  langtrace_python_sdk/instrumentation/pinecone/__init__.py,sha256=DzXyGh9_MGWveJvXULkFwdkf7PbG2s3bAWtT1Dmz7Ok,99
183
189
  langtrace_python_sdk/instrumentation/pinecone/instrumentation.py,sha256=HDXkRITrVPwdQEoOYJOfMzZE_2-vDDvuqHTlD8W1lQw,1845
@@ -191,7 +197,7 @@ langtrace_python_sdk/instrumentation/vertexai/patch.py,sha256=mLMmmmovYBaDXgnSSJ
191
197
  langtrace_python_sdk/instrumentation/weaviate/__init__.py,sha256=Mc-Je6evPo-kKQzerTG7bd1XO5JOh4YGTE3wBxaUBwg,99
192
198
  langtrace_python_sdk/instrumentation/weaviate/instrumentation.py,sha256=Kwq5QQTUQNRHrWrMnNe9X0TcqtXGiNpBidsuToRTqG0,2417
193
199
  langtrace_python_sdk/instrumentation/weaviate/patch.py,sha256=aWLDbNGz35V6XQUv4lkMD0O689suqh6KdTa33VDtUkE,6905
194
- langtrace_python_sdk/types/__init__.py,sha256=F3zef0ovPIr9hxmF8XK9tW3DKmq6eFrj3bZo3HCbNqA,4484
200
+ langtrace_python_sdk/types/__init__.py,sha256=2VykM6fNHRlkOaIEUCdK3VyaaVgk2rTIr9jMmCVj2Ag,4676
195
201
  langtrace_python_sdk/utils/__init__.py,sha256=O-Ra9IDd1MnxihdQUC8HW_wYFhk7KbTCK2BIl02yacQ,2935
196
202
  langtrace_python_sdk/utils/langtrace_sampler.py,sha256=BupNndHbU9IL_wGleKetz8FdcveqHMBVz1bfKTTW80w,1753
197
203
  langtrace_python_sdk/utils/llm.py,sha256=mA7nEpndjKwPY3LfYV8hv-83xrDlD8MSTW8mItp5tXI,14953
@@ -243,8 +249,8 @@ tests/pinecone/cassettes/test_query.yaml,sha256=b5v9G3ssUy00oG63PlFUR3JErF2Js-5A
243
249
  tests/pinecone/cassettes/test_upsert.yaml,sha256=neWmQ1v3d03V8WoLl8FoFeeCYImb8pxlJBWnFd_lITU,38607
244
250
  tests/qdrant/conftest.py,sha256=9n0uHxxIjWk9fbYc4bx-uP8lSAgLBVx-cV9UjnsyCHM,381
245
251
  tests/qdrant/test_qdrant.py,sha256=pzjAjVY2kmsmGfrI2Gs2xrolfuaNHz7l1fqGQCjp5_o,3353
246
- langtrace_python_sdk-3.1.3.dist-info/METADATA,sha256=rsm6B1gbhgnJWg1euM92k_E5V94JPG2EwjXx0SpCbtQ,15868
247
- langtrace_python_sdk-3.1.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
248
- langtrace_python_sdk-3.1.3.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
249
- langtrace_python_sdk-3.1.3.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
250
- langtrace_python_sdk-3.1.3.dist-info/RECORD,,
252
+ langtrace_python_sdk-3.2.0.dist-info/METADATA,sha256=_I75AdE1KxO_pccerUpV0G1A2gpAN2hv85Sc_m0VfNg,15905
253
+ langtrace_python_sdk-3.2.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
254
+ langtrace_python_sdk-3.2.0.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
255
+ langtrace_python_sdk-3.2.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
256
+ langtrace_python_sdk-3.2.0.dist-info/RECORD,,