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.
- examples/awsbedrock_examples/__init__.py +10 -0
- examples/awsbedrock_examples/converse.py +34 -0
- langtrace_python_sdk/constants/instrumentation/aws_bedrock.py +12 -0
- langtrace_python_sdk/constants/instrumentation/common.py +2 -0
- langtrace_python_sdk/instrumentation/__init__.py +2 -0
- langtrace_python_sdk/instrumentation/aws_bedrock/__init__.py +3 -0
- langtrace_python_sdk/instrumentation/aws_bedrock/instrumentation.py +58 -0
- langtrace_python_sdk/instrumentation/aws_bedrock/patch.py +157 -0
- langtrace_python_sdk/instrumentation/groq/patch.py +4 -0
- langtrace_python_sdk/instrumentation/litellm/patch.py +4 -0
- langtrace_python_sdk/instrumentation/openai/patch.py +4 -0
- langtrace_python_sdk/langtrace.py +2 -0
- langtrace_python_sdk/types/__init__.py +7 -0
- langtrace_python_sdk/version.py +1 -1
- {langtrace_python_sdk-3.1.3.dist-info → langtrace_python_sdk-3.2.0.dist-info}/METADATA +3 -2
- {langtrace_python_sdk-3.1.3.dist-info → langtrace_python_sdk-3.2.0.dist-info}/RECORD +19 -13
- {langtrace_python_sdk-3.1.3.dist-info → langtrace_python_sdk-3.2.0.dist-info}/WHEEL +0 -0
- {langtrace_python_sdk-3.1.3.dist-info → langtrace_python_sdk-3.2.0.dist-info}/entry_points.txt +0 -0
- {langtrace_python_sdk-3.1.3.dist-info → langtrace_python_sdk-3.2.0.dist-info}/licenses/LICENSE +0 -0
@@ -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
|
+
}
|
@@ -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,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]
|
langtrace_python_sdk/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "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.
|
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
|
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=
|
102
|
-
langtrace_python_sdk/version.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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.
|
247
|
-
langtrace_python_sdk-3.
|
248
|
-
langtrace_python_sdk-3.
|
249
|
-
langtrace_python_sdk-3.
|
250
|
-
langtrace_python_sdk-3.
|
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,,
|
File without changes
|
{langtrace_python_sdk-3.1.3.dist-info → langtrace_python_sdk-3.2.0.dist-info}/entry_points.txt
RENAMED
File without changes
|
{langtrace_python_sdk-3.1.3.dist-info → langtrace_python_sdk-3.2.0.dist-info}/licenses/LICENSE
RENAMED
File without changes
|