openlit 1.34.30__py3-none-any.whl → 1.34.32__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.
- openlit/__helpers.py +235 -86
- openlit/__init__.py +19 -14
- openlit/_instrumentors.py +2 -1
- openlit/evals/all.py +50 -21
- openlit/evals/bias_detection.py +47 -20
- openlit/evals/hallucination.py +53 -22
- openlit/evals/toxicity.py +50 -21
- openlit/evals/utils.py +54 -30
- openlit/guard/all.py +61 -19
- openlit/guard/prompt_injection.py +34 -14
- openlit/guard/restrict_topic.py +46 -15
- openlit/guard/sensitive_topic.py +34 -14
- openlit/guard/utils.py +58 -22
- openlit/instrumentation/ag2/__init__.py +113 -6
- openlit/instrumentation/ag2/ag2.py +459 -17
- openlit/instrumentation/ag2/async_ag2.py +459 -17
- openlit/instrumentation/ag2/utils.py +475 -31
- openlit/instrumentation/ai21/__init__.py +43 -14
- openlit/instrumentation/ai21/ai21.py +47 -21
- openlit/instrumentation/ai21/async_ai21.py +47 -21
- openlit/instrumentation/ai21/utils.py +299 -78
- openlit/instrumentation/anthropic/__init__.py +21 -4
- openlit/instrumentation/anthropic/anthropic.py +28 -17
- openlit/instrumentation/anthropic/async_anthropic.py +28 -17
- openlit/instrumentation/anthropic/utils.py +145 -35
- openlit/instrumentation/assemblyai/__init__.py +11 -2
- openlit/instrumentation/assemblyai/assemblyai.py +15 -4
- openlit/instrumentation/assemblyai/utils.py +120 -25
- openlit/instrumentation/astra/__init__.py +43 -10
- openlit/instrumentation/astra/astra.py +28 -5
- openlit/instrumentation/astra/async_astra.py +28 -5
- openlit/instrumentation/astra/utils.py +151 -55
- openlit/instrumentation/azure_ai_inference/__init__.py +43 -10
- openlit/instrumentation/azure_ai_inference/async_azure_ai_inference.py +53 -21
- openlit/instrumentation/azure_ai_inference/azure_ai_inference.py +53 -21
- openlit/instrumentation/azure_ai_inference/utils.py +307 -83
- openlit/instrumentation/bedrock/__init__.py +21 -4
- openlit/instrumentation/bedrock/bedrock.py +63 -25
- openlit/instrumentation/bedrock/utils.py +139 -30
- openlit/instrumentation/chroma/__init__.py +89 -16
- openlit/instrumentation/chroma/chroma.py +28 -6
- openlit/instrumentation/chroma/utils.py +167 -51
- openlit/instrumentation/cohere/__init__.py +63 -18
- openlit/instrumentation/cohere/async_cohere.py +63 -24
- openlit/instrumentation/cohere/cohere.py +63 -24
- openlit/instrumentation/cohere/utils.py +286 -73
- openlit/instrumentation/controlflow/__init__.py +35 -9
- openlit/instrumentation/controlflow/controlflow.py +66 -33
- openlit/instrumentation/crawl4ai/__init__.py +25 -10
- openlit/instrumentation/crawl4ai/async_crawl4ai.py +78 -31
- openlit/instrumentation/crawl4ai/crawl4ai.py +78 -31
- openlit/instrumentation/crewai/__init__.py +40 -15
- openlit/instrumentation/crewai/async_crewai.py +32 -7
- openlit/instrumentation/crewai/crewai.py +32 -7
- openlit/instrumentation/crewai/utils.py +159 -56
- openlit/instrumentation/dynamiq/__init__.py +46 -12
- openlit/instrumentation/dynamiq/dynamiq.py +74 -33
- openlit/instrumentation/elevenlabs/__init__.py +23 -4
- openlit/instrumentation/elevenlabs/async_elevenlabs.py +16 -4
- openlit/instrumentation/elevenlabs/elevenlabs.py +16 -4
- openlit/instrumentation/elevenlabs/utils.py +128 -25
- openlit/instrumentation/embedchain/__init__.py +11 -2
- openlit/instrumentation/embedchain/embedchain.py +68 -35
- openlit/instrumentation/firecrawl/__init__.py +24 -7
- openlit/instrumentation/firecrawl/firecrawl.py +46 -20
- openlit/instrumentation/google_ai_studio/__init__.py +45 -10
- openlit/instrumentation/google_ai_studio/async_google_ai_studio.py +67 -44
- openlit/instrumentation/google_ai_studio/google_ai_studio.py +67 -44
- openlit/instrumentation/google_ai_studio/utils.py +180 -67
- openlit/instrumentation/gpt4all/__init__.py +22 -7
- openlit/instrumentation/gpt4all/gpt4all.py +67 -29
- openlit/instrumentation/gpt4all/utils.py +285 -61
- openlit/instrumentation/gpu/__init__.py +128 -47
- openlit/instrumentation/groq/__init__.py +21 -4
- openlit/instrumentation/groq/async_groq.py +33 -21
- openlit/instrumentation/groq/groq.py +33 -21
- openlit/instrumentation/groq/utils.py +192 -55
- openlit/instrumentation/haystack/__init__.py +70 -24
- openlit/instrumentation/haystack/async_haystack.py +28 -6
- openlit/instrumentation/haystack/haystack.py +28 -6
- openlit/instrumentation/haystack/utils.py +196 -74
- openlit/instrumentation/julep/__init__.py +69 -19
- openlit/instrumentation/julep/async_julep.py +53 -27
- openlit/instrumentation/julep/julep.py +53 -28
- openlit/instrumentation/langchain/__init__.py +74 -63
- openlit/instrumentation/langchain/callback_handler.py +1100 -0
- openlit/instrumentation/langchain_community/__init__.py +13 -2
- openlit/instrumentation/langchain_community/async_langchain_community.py +23 -5
- openlit/instrumentation/langchain_community/langchain_community.py +23 -5
- openlit/instrumentation/langchain_community/utils.py +35 -9
- openlit/instrumentation/letta/__init__.py +68 -15
- openlit/instrumentation/letta/letta.py +99 -54
- openlit/instrumentation/litellm/__init__.py +43 -14
- openlit/instrumentation/litellm/async_litellm.py +51 -26
- openlit/instrumentation/litellm/litellm.py +51 -26
- openlit/instrumentation/litellm/utils.py +304 -102
- openlit/instrumentation/llamaindex/__init__.py +267 -90
- openlit/instrumentation/llamaindex/async_llamaindex.py +28 -6
- openlit/instrumentation/llamaindex/llamaindex.py +28 -6
- openlit/instrumentation/llamaindex/utils.py +204 -91
- openlit/instrumentation/mem0/__init__.py +11 -2
- openlit/instrumentation/mem0/mem0.py +50 -29
- openlit/instrumentation/milvus/__init__.py +10 -2
- openlit/instrumentation/milvus/milvus.py +31 -6
- openlit/instrumentation/milvus/utils.py +166 -67
- openlit/instrumentation/mistral/__init__.py +63 -18
- openlit/instrumentation/mistral/async_mistral.py +63 -24
- openlit/instrumentation/mistral/mistral.py +63 -24
- openlit/instrumentation/mistral/utils.py +277 -69
- openlit/instrumentation/multion/__init__.py +69 -19
- openlit/instrumentation/multion/async_multion.py +57 -26
- openlit/instrumentation/multion/multion.py +57 -26
- openlit/instrumentation/ollama/__init__.py +39 -18
- openlit/instrumentation/ollama/async_ollama.py +57 -26
- openlit/instrumentation/ollama/ollama.py +57 -26
- openlit/instrumentation/ollama/utils.py +226 -50
- openlit/instrumentation/openai/__init__.py +156 -32
- openlit/instrumentation/openai/async_openai.py +147 -67
- openlit/instrumentation/openai/openai.py +150 -67
- openlit/instrumentation/openai/utils.py +657 -185
- openlit/instrumentation/openai_agents/__init__.py +5 -1
- openlit/instrumentation/openai_agents/processor.py +110 -90
- openlit/instrumentation/phidata/__init__.py +13 -5
- openlit/instrumentation/phidata/phidata.py +67 -32
- openlit/instrumentation/pinecone/__init__.py +48 -9
- openlit/instrumentation/pinecone/async_pinecone.py +27 -5
- openlit/instrumentation/pinecone/pinecone.py +27 -5
- openlit/instrumentation/pinecone/utils.py +153 -47
- openlit/instrumentation/premai/__init__.py +22 -7
- openlit/instrumentation/premai/premai.py +51 -26
- openlit/instrumentation/premai/utils.py +246 -59
- openlit/instrumentation/pydantic_ai/__init__.py +49 -22
- openlit/instrumentation/pydantic_ai/pydantic_ai.py +69 -16
- openlit/instrumentation/pydantic_ai/utils.py +89 -24
- openlit/instrumentation/qdrant/__init__.py +19 -4
- openlit/instrumentation/qdrant/async_qdrant.py +33 -7
- openlit/instrumentation/qdrant/qdrant.py +33 -7
- openlit/instrumentation/qdrant/utils.py +228 -93
- openlit/instrumentation/reka/__init__.py +23 -10
- openlit/instrumentation/reka/async_reka.py +17 -11
- openlit/instrumentation/reka/reka.py +17 -11
- openlit/instrumentation/reka/utils.py +138 -36
- openlit/instrumentation/together/__init__.py +44 -12
- openlit/instrumentation/together/async_together.py +50 -27
- openlit/instrumentation/together/together.py +50 -27
- openlit/instrumentation/together/utils.py +301 -71
- openlit/instrumentation/transformers/__init__.py +2 -1
- openlit/instrumentation/transformers/transformers.py +13 -3
- openlit/instrumentation/transformers/utils.py +139 -36
- openlit/instrumentation/vertexai/__init__.py +81 -16
- openlit/instrumentation/vertexai/async_vertexai.py +33 -15
- openlit/instrumentation/vertexai/utils.py +123 -27
- openlit/instrumentation/vertexai/vertexai.py +33 -15
- openlit/instrumentation/vllm/__init__.py +12 -5
- openlit/instrumentation/vllm/utils.py +121 -31
- openlit/instrumentation/vllm/vllm.py +16 -10
- openlit/otel/events.py +35 -10
- openlit/otel/metrics.py +32 -24
- openlit/otel/tracing.py +24 -9
- openlit/semcov/__init__.py +82 -6
- {openlit-1.34.30.dist-info → openlit-1.34.32.dist-info}/METADATA +2 -1
- openlit-1.34.32.dist-info/RECORD +166 -0
- openlit/instrumentation/langchain/async_langchain.py +0 -102
- openlit/instrumentation/langchain/langchain.py +0 -102
- openlit/instrumentation/langchain/utils.py +0 -252
- openlit-1.34.30.dist-info/RECORD +0 -168
- {openlit-1.34.30.dist-info → openlit-1.34.32.dist-info}/LICENSE +0 -0
- {openlit-1.34.30.dist-info → openlit-1.34.32.dist-info}/WHEEL +0 -0
@@ -12,12 +12,21 @@ from openlit.instrumentation.ai21.utils import (
|
|
12
12
|
process_chunk,
|
13
13
|
process_chat_response,
|
14
14
|
process_streaming_chat_response,
|
15
|
-
process_chat_rag_response
|
15
|
+
process_chat_rag_response,
|
16
16
|
)
|
17
17
|
from openlit.semcov import SemanticConvention
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
|
20
|
+
def chat(
|
21
|
+
version,
|
22
|
+
environment,
|
23
|
+
application_name,
|
24
|
+
tracer,
|
25
|
+
pricing_info,
|
26
|
+
capture_message_content,
|
27
|
+
metrics,
|
28
|
+
disable_metrics,
|
29
|
+
):
|
21
30
|
"""
|
22
31
|
Generates a telemetry wrapper for GenAI function call
|
23
32
|
"""
|
@@ -28,15 +37,15 @@ def chat(version, environment, application_name, tracer, pricing_info,
|
|
28
37
|
"""
|
29
38
|
|
30
39
|
def __init__(
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
+
self,
|
41
|
+
wrapped,
|
42
|
+
span,
|
43
|
+
span_name,
|
44
|
+
kwargs,
|
45
|
+
server_address,
|
46
|
+
server_port,
|
47
|
+
**args,
|
48
|
+
):
|
40
49
|
self.__wrapped__ = wrapped
|
41
50
|
self._span = span
|
42
51
|
self._span_name = span_name
|
@@ -77,7 +86,9 @@ def chat(version, environment, application_name, tracer, pricing_info,
|
|
77
86
|
return chunk
|
78
87
|
except StopIteration:
|
79
88
|
try:
|
80
|
-
with tracer.start_as_current_span(
|
89
|
+
with tracer.start_as_current_span(
|
90
|
+
self._span_name, kind=SpanKind.CLIENT
|
91
|
+
) as self._span:
|
81
92
|
process_streaming_chat_response(
|
82
93
|
self,
|
83
94
|
pricing_info=pricing_info,
|
@@ -86,7 +97,7 @@ def chat(version, environment, application_name, tracer, pricing_info,
|
|
86
97
|
metrics=metrics,
|
87
98
|
capture_message_content=capture_message_content,
|
88
99
|
disable_metrics=disable_metrics,
|
89
|
-
version=version
|
100
|
+
version=version,
|
90
101
|
)
|
91
102
|
|
92
103
|
except Exception as e:
|
@@ -100,7 +111,9 @@ def chat(version, environment, application_name, tracer, pricing_info,
|
|
100
111
|
"""
|
101
112
|
# Check if streaming is enabled for the API call
|
102
113
|
streaming = kwargs.get("stream", False)
|
103
|
-
server_address, server_port = set_server_address_and_port(
|
114
|
+
server_address, server_port = set_server_address_and_port(
|
115
|
+
instance, "api.ai21.com", 443
|
116
|
+
)
|
104
117
|
request_model = kwargs.get("model", "jamba-1.5-mini")
|
105
118
|
|
106
119
|
span_name = f"{SemanticConvention.GEN_AI_OPERATION_TYPE_CHAT} {request_model}"
|
@@ -109,7 +122,9 @@ def chat(version, environment, application_name, tracer, pricing_info,
|
|
109
122
|
# Special handling for streaming response
|
110
123
|
awaited_wrapped = wrapped(*args, **kwargs)
|
111
124
|
span = tracer.start_span(span_name, kind=SpanKind.CLIENT)
|
112
|
-
return TracedSyncStream(
|
125
|
+
return TracedSyncStream(
|
126
|
+
awaited_wrapped, span, span_name, kwargs, server_address, server_port
|
127
|
+
)
|
113
128
|
else:
|
114
129
|
# Handling for non-streaming responses
|
115
130
|
with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
|
@@ -131,7 +146,7 @@ def chat(version, environment, application_name, tracer, pricing_info,
|
|
131
146
|
capture_message_content=capture_message_content,
|
132
147
|
disable_metrics=disable_metrics,
|
133
148
|
version=version,
|
134
|
-
**kwargs
|
149
|
+
**kwargs,
|
135
150
|
)
|
136
151
|
|
137
152
|
except Exception as e:
|
@@ -141,8 +156,17 @@ def chat(version, environment, application_name, tracer, pricing_info,
|
|
141
156
|
|
142
157
|
return wrapper
|
143
158
|
|
144
|
-
|
145
|
-
|
159
|
+
|
160
|
+
def chat_rag(
|
161
|
+
version,
|
162
|
+
environment,
|
163
|
+
application_name,
|
164
|
+
tracer,
|
165
|
+
pricing_info,
|
166
|
+
capture_message_content,
|
167
|
+
metrics,
|
168
|
+
disable_metrics,
|
169
|
+
):
|
146
170
|
"""
|
147
171
|
Generates a telemetry wrapper for GenAI RAG function call
|
148
172
|
"""
|
@@ -151,7 +175,9 @@ def chat_rag(version, environment, application_name, tracer, pricing_info,
|
|
151
175
|
"""
|
152
176
|
Wraps the GenAI RAG function call.
|
153
177
|
"""
|
154
|
-
server_address, server_port = set_server_address_and_port(
|
178
|
+
server_address, server_port = set_server_address_and_port(
|
179
|
+
instance, "api.ai21.com", 443
|
180
|
+
)
|
155
181
|
request_model = kwargs.get("model", "jamba-1.5-mini")
|
156
182
|
|
157
183
|
span_name = f"{SemanticConvention.GEN_AI_OPERATION_TYPE_CHAT} {request_model}"
|
@@ -175,7 +201,7 @@ def chat_rag(version, environment, application_name, tracer, pricing_info,
|
|
175
201
|
capture_message_content=capture_message_content,
|
176
202
|
disable_metrics=disable_metrics,
|
177
203
|
version=version,
|
178
|
-
**kwargs
|
204
|
+
**kwargs,
|
179
205
|
)
|
180
206
|
|
181
207
|
except Exception as e:
|
@@ -12,12 +12,21 @@ from openlit.instrumentation.ai21.utils import (
|
|
12
12
|
process_chunk,
|
13
13
|
process_chat_response,
|
14
14
|
process_streaming_chat_response,
|
15
|
-
process_chat_rag_response
|
15
|
+
process_chat_rag_response,
|
16
16
|
)
|
17
17
|
from openlit.semcov import SemanticConvention
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
|
20
|
+
def async_chat(
|
21
|
+
version,
|
22
|
+
environment,
|
23
|
+
application_name,
|
24
|
+
tracer,
|
25
|
+
pricing_info,
|
26
|
+
capture_message_content,
|
27
|
+
metrics,
|
28
|
+
disable_metrics,
|
29
|
+
):
|
21
30
|
"""
|
22
31
|
Generates a telemetry wrapper for GenAI function call
|
23
32
|
"""
|
@@ -28,15 +37,15 @@ def async_chat(version, environment, application_name, tracer, pricing_info,
|
|
28
37
|
"""
|
29
38
|
|
30
39
|
def __init__(
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
+
self,
|
41
|
+
wrapped,
|
42
|
+
span,
|
43
|
+
span_name,
|
44
|
+
kwargs,
|
45
|
+
server_address,
|
46
|
+
server_port,
|
47
|
+
**args,
|
48
|
+
):
|
40
49
|
self.__wrapped__ = wrapped
|
41
50
|
self._span = span
|
42
51
|
self._span_name = span_name
|
@@ -77,7 +86,9 @@ def async_chat(version, environment, application_name, tracer, pricing_info,
|
|
77
86
|
return chunk
|
78
87
|
except StopAsyncIteration:
|
79
88
|
try:
|
80
|
-
with tracer.start_as_current_span(
|
89
|
+
with tracer.start_as_current_span(
|
90
|
+
self._span_name, kind=SpanKind.CLIENT
|
91
|
+
) as self._span:
|
81
92
|
process_streaming_chat_response(
|
82
93
|
self,
|
83
94
|
pricing_info=pricing_info,
|
@@ -86,7 +97,7 @@ def async_chat(version, environment, application_name, tracer, pricing_info,
|
|
86
97
|
metrics=metrics,
|
87
98
|
capture_message_content=capture_message_content,
|
88
99
|
disable_metrics=disable_metrics,
|
89
|
-
version=version
|
100
|
+
version=version,
|
90
101
|
)
|
91
102
|
|
92
103
|
except Exception as e:
|
@@ -100,7 +111,9 @@ def async_chat(version, environment, application_name, tracer, pricing_info,
|
|
100
111
|
"""
|
101
112
|
# Check if streaming is enabled for the API call
|
102
113
|
streaming = kwargs.get("stream", False)
|
103
|
-
server_address, server_port = set_server_address_and_port(
|
114
|
+
server_address, server_port = set_server_address_and_port(
|
115
|
+
instance, "api.ai21.com", 443
|
116
|
+
)
|
104
117
|
request_model = kwargs.get("model", "jamba-1.5-mini")
|
105
118
|
|
106
119
|
span_name = f"{SemanticConvention.GEN_AI_OPERATION_TYPE_CHAT} {request_model}"
|
@@ -109,7 +122,9 @@ def async_chat(version, environment, application_name, tracer, pricing_info,
|
|
109
122
|
# Special handling for streaming response
|
110
123
|
awaited_wrapped = await wrapped(*args, **kwargs)
|
111
124
|
span = tracer.start_span(span_name, kind=SpanKind.CLIENT)
|
112
|
-
return TracedAsyncStream(
|
125
|
+
return TracedAsyncStream(
|
126
|
+
awaited_wrapped, span, span_name, kwargs, server_address, server_port
|
127
|
+
)
|
113
128
|
else:
|
114
129
|
# Handling for non-streaming responses
|
115
130
|
with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
|
@@ -131,7 +146,7 @@ def async_chat(version, environment, application_name, tracer, pricing_info,
|
|
131
146
|
capture_message_content=capture_message_content,
|
132
147
|
disable_metrics=disable_metrics,
|
133
148
|
version=version,
|
134
|
-
**kwargs
|
149
|
+
**kwargs,
|
135
150
|
)
|
136
151
|
|
137
152
|
except Exception as e:
|
@@ -141,8 +156,17 @@ def async_chat(version, environment, application_name, tracer, pricing_info,
|
|
141
156
|
|
142
157
|
return wrapper
|
143
158
|
|
144
|
-
|
145
|
-
|
159
|
+
|
160
|
+
def async_chat_rag(
|
161
|
+
version,
|
162
|
+
environment,
|
163
|
+
application_name,
|
164
|
+
tracer,
|
165
|
+
pricing_info,
|
166
|
+
capture_message_content,
|
167
|
+
metrics,
|
168
|
+
disable_metrics,
|
169
|
+
):
|
146
170
|
"""
|
147
171
|
Generates a telemetry wrapper for GenAI RAG function call
|
148
172
|
"""
|
@@ -151,7 +175,9 @@ def async_chat_rag(version, environment, application_name, tracer, pricing_info,
|
|
151
175
|
"""
|
152
176
|
Wraps the GenAI RAG function call.
|
153
177
|
"""
|
154
|
-
server_address, server_port = set_server_address_and_port(
|
178
|
+
server_address, server_port = set_server_address_and_port(
|
179
|
+
instance, "api.ai21.com", 443
|
180
|
+
)
|
155
181
|
request_model = kwargs.get("model", "jamba-1.5-mini")
|
156
182
|
|
157
183
|
span_name = f"{SemanticConvention.GEN_AI_OPERATION_TYPE_CHAT} {request_model}"
|
@@ -175,7 +201,7 @@ def async_chat_rag(version, environment, application_name, tracer, pricing_info,
|
|
175
201
|
capture_message_content=capture_message_content,
|
176
202
|
disable_metrics=disable_metrics,
|
177
203
|
version=version,
|
178
|
-
**kwargs
|
204
|
+
**kwargs,
|
179
205
|
)
|
180
206
|
|
181
207
|
except Exception as e:
|