openlit 1.34.29__py3-none-any.whl → 1.34.31__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 +16 -13
- 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 +24 -8
- openlit/instrumentation/ag2/ag2.py +34 -13
- openlit/instrumentation/ag2/async_ag2.py +34 -13
- openlit/instrumentation/ag2/utils.py +133 -30
- 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 +111 -24
- openlit/instrumentation/crewai/async_crewai.py +114 -0
- openlit/instrumentation/crewai/crewai.py +104 -131
- openlit/instrumentation/crewai/utils.py +615 -0
- 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 +312 -101
- 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 +660 -186
- openlit/instrumentation/openai_agents/__init__.py +6 -2
- openlit/instrumentation/openai_agents/processor.py +409 -537
- 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 +101 -7
- {openlit-1.34.29.dist-info → openlit-1.34.31.dist-info}/METADATA +2 -1
- openlit-1.34.31.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.29.dist-info/RECORD +0 -166
- {openlit-1.34.29.dist-info → openlit-1.34.31.dist-info}/LICENSE +0 -0
- {openlit-1.34.29.dist-info → openlit-1.34.31.dist-info}/WHEEL +0 -0
@@ -20,8 +20,17 @@ from openlit.semcov import SemanticConvention
|
|
20
20
|
# Initialize logger for logging potential issues and operations
|
21
21
|
logger = logging.getLogger(__name__)
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
|
24
|
+
def async_complete(
|
25
|
+
version,
|
26
|
+
environment,
|
27
|
+
application_name,
|
28
|
+
tracer,
|
29
|
+
pricing_info,
|
30
|
+
capture_message_content,
|
31
|
+
metrics,
|
32
|
+
disable_metrics,
|
33
|
+
):
|
25
34
|
"""
|
26
35
|
Generates a telemetry wrapper for GenAI function call
|
27
36
|
"""
|
@@ -32,15 +41,15 @@ def async_complete(version, environment, application_name,
|
|
32
41
|
"""
|
33
42
|
|
34
43
|
def __init__(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
+
self,
|
45
|
+
wrapped,
|
46
|
+
span,
|
47
|
+
span_name,
|
48
|
+
kwargs,
|
49
|
+
server_address,
|
50
|
+
server_port,
|
51
|
+
**args,
|
52
|
+
):
|
44
53
|
self.__wrapped__ = wrapped
|
45
54
|
self._span = span
|
46
55
|
self._span_name = span_name
|
@@ -71,8 +80,14 @@ def async_complete(version, environment, application_name,
|
|
71
80
|
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
72
81
|
await self.__wrapped__.__aexit__(exc_type, exc_val, exc_tb)
|
73
82
|
process_streaming_chat_response(
|
74
|
-
self,
|
75
|
-
|
83
|
+
self,
|
84
|
+
pricing_info,
|
85
|
+
environment,
|
86
|
+
application_name,
|
87
|
+
metrics,
|
88
|
+
capture_message_content,
|
89
|
+
disable_metrics,
|
90
|
+
version,
|
76
91
|
)
|
77
92
|
|
78
93
|
def __aiter__(self):
|
@@ -92,7 +107,9 @@ def async_complete(version, environment, application_name,
|
|
92
107
|
"""
|
93
108
|
|
94
109
|
streaming = kwargs.get("stream", False)
|
95
|
-
server_address, server_port = set_server_address_and_port(
|
110
|
+
server_address, server_port = set_server_address_and_port(
|
111
|
+
instance, "models.github.ai", 443
|
112
|
+
)
|
96
113
|
request_model = kwargs.get("model", "gpt-4o")
|
97
114
|
|
98
115
|
span_name = f"{SemanticConvention.GEN_AI_OPERATION_TYPE_CHAT} {request_model}"
|
@@ -101,7 +118,9 @@ def async_complete(version, environment, application_name,
|
|
101
118
|
awaited_wrapped = await wrapped(*args, **kwargs)
|
102
119
|
span = tracer.start_span(span_name, kind=SpanKind.CLIENT)
|
103
120
|
|
104
|
-
return TracedAsyncStream(
|
121
|
+
return TracedAsyncStream(
|
122
|
+
awaited_wrapped, span, span_name, kwargs, server_address, server_port
|
123
|
+
)
|
105
124
|
|
106
125
|
else:
|
107
126
|
with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
|
@@ -121,15 +140,24 @@ def async_complete(version, environment, application_name,
|
|
121
140
|
capture_message_content=capture_message_content,
|
122
141
|
disable_metrics=disable_metrics,
|
123
142
|
version=version,
|
124
|
-
**kwargs
|
143
|
+
**kwargs,
|
125
144
|
)
|
126
145
|
|
127
146
|
return response
|
128
147
|
|
129
148
|
return wrapper
|
130
149
|
|
131
|
-
|
132
|
-
|
150
|
+
|
151
|
+
def async_embed(
|
152
|
+
version,
|
153
|
+
environment,
|
154
|
+
application_name,
|
155
|
+
tracer,
|
156
|
+
pricing_info,
|
157
|
+
capture_message_content,
|
158
|
+
metrics,
|
159
|
+
disable_metrics,
|
160
|
+
):
|
133
161
|
"""
|
134
162
|
Generates a telemetry wrapper for GenAI embedding function call
|
135
163
|
"""
|
@@ -139,10 +167,14 @@ def async_embed(version, environment, application_name,
|
|
139
167
|
Wraps the GenAI embedding function call.
|
140
168
|
"""
|
141
169
|
|
142
|
-
server_address, server_port = set_server_address_and_port(
|
170
|
+
server_address, server_port = set_server_address_and_port(
|
171
|
+
instance, "models.github.ai", 443
|
172
|
+
)
|
143
173
|
request_model = kwargs.get("model", "text-embedding-3-small")
|
144
174
|
|
145
|
-
span_name =
|
175
|
+
span_name = (
|
176
|
+
f"{SemanticConvention.GEN_AI_OPERATION_TYPE_EMBEDDING} {request_model}"
|
177
|
+
)
|
146
178
|
|
147
179
|
with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
|
148
180
|
start_time = time.time()
|
@@ -163,7 +195,7 @@ def async_embed(version, environment, application_name,
|
|
163
195
|
capture_message_content=capture_message_content,
|
164
196
|
disable_metrics=disable_metrics,
|
165
197
|
version=version,
|
166
|
-
**kwargs
|
198
|
+
**kwargs,
|
167
199
|
)
|
168
200
|
|
169
201
|
except Exception as e:
|
@@ -20,8 +20,17 @@ from openlit.semcov import SemanticConvention
|
|
20
20
|
# Initialize logger for logging potential issues and operations
|
21
21
|
logger = logging.getLogger(__name__)
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
|
24
|
+
def complete(
|
25
|
+
version,
|
26
|
+
environment,
|
27
|
+
application_name,
|
28
|
+
tracer,
|
29
|
+
pricing_info,
|
30
|
+
capture_message_content,
|
31
|
+
metrics,
|
32
|
+
disable_metrics,
|
33
|
+
):
|
25
34
|
"""
|
26
35
|
Generates a telemetry wrapper for GenAI function call
|
27
36
|
"""
|
@@ -32,15 +41,15 @@ def complete(version, environment, application_name,
|
|
32
41
|
"""
|
33
42
|
|
34
43
|
def __init__(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
+
self,
|
45
|
+
wrapped,
|
46
|
+
span,
|
47
|
+
span_name,
|
48
|
+
kwargs,
|
49
|
+
server_address,
|
50
|
+
server_port,
|
51
|
+
**args,
|
52
|
+
):
|
44
53
|
self.__wrapped__ = wrapped
|
45
54
|
self._span = span
|
46
55
|
self._span_name = span_name
|
@@ -71,8 +80,14 @@ def complete(version, environment, application_name,
|
|
71
80
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
72
81
|
self.__wrapped__.__exit__(exc_type, exc_val, exc_tb)
|
73
82
|
process_streaming_chat_response(
|
74
|
-
self,
|
75
|
-
|
83
|
+
self,
|
84
|
+
pricing_info,
|
85
|
+
environment,
|
86
|
+
application_name,
|
87
|
+
metrics,
|
88
|
+
capture_message_content,
|
89
|
+
disable_metrics,
|
90
|
+
version,
|
76
91
|
)
|
77
92
|
|
78
93
|
def __iter__(self):
|
@@ -92,7 +107,9 @@ def complete(version, environment, application_name,
|
|
92
107
|
"""
|
93
108
|
|
94
109
|
streaming = kwargs.get("stream", False)
|
95
|
-
server_address, server_port = set_server_address_and_port(
|
110
|
+
server_address, server_port = set_server_address_and_port(
|
111
|
+
instance, "models.github.ai", 443
|
112
|
+
)
|
96
113
|
request_model = kwargs.get("model", "gpt-4o")
|
97
114
|
|
98
115
|
span_name = f"{SemanticConvention.GEN_AI_OPERATION_TYPE_CHAT} {request_model}"
|
@@ -101,7 +118,9 @@ def complete(version, environment, application_name,
|
|
101
118
|
awaited_wrapped = wrapped(*args, **kwargs)
|
102
119
|
span = tracer.start_span(span_name, kind=SpanKind.CLIENT)
|
103
120
|
|
104
|
-
return TracedSyncStream(
|
121
|
+
return TracedSyncStream(
|
122
|
+
awaited_wrapped, span, span_name, kwargs, server_address, server_port
|
123
|
+
)
|
105
124
|
|
106
125
|
else:
|
107
126
|
with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
|
@@ -121,15 +140,24 @@ def complete(version, environment, application_name,
|
|
121
140
|
capture_message_content=capture_message_content,
|
122
141
|
disable_metrics=disable_metrics,
|
123
142
|
version=version,
|
124
|
-
**kwargs
|
143
|
+
**kwargs,
|
125
144
|
)
|
126
145
|
|
127
146
|
return response
|
128
147
|
|
129
148
|
return wrapper
|
130
149
|
|
131
|
-
|
132
|
-
|
150
|
+
|
151
|
+
def embed(
|
152
|
+
version,
|
153
|
+
environment,
|
154
|
+
application_name,
|
155
|
+
tracer,
|
156
|
+
pricing_info,
|
157
|
+
capture_message_content,
|
158
|
+
metrics,
|
159
|
+
disable_metrics,
|
160
|
+
):
|
133
161
|
"""
|
134
162
|
Generates a telemetry wrapper for GenAI embedding function call
|
135
163
|
"""
|
@@ -139,10 +167,14 @@ def embed(version, environment, application_name,
|
|
139
167
|
Wraps the GenAI embedding function call.
|
140
168
|
"""
|
141
169
|
|
142
|
-
server_address, server_port = set_server_address_and_port(
|
170
|
+
server_address, server_port = set_server_address_and_port(
|
171
|
+
instance, "models.github.ai", 443
|
172
|
+
)
|
143
173
|
request_model = kwargs.get("model", "text-embedding-3-small")
|
144
174
|
|
145
|
-
span_name =
|
175
|
+
span_name = (
|
176
|
+
f"{SemanticConvention.GEN_AI_OPERATION_TYPE_EMBEDDING} {request_model}"
|
177
|
+
)
|
146
178
|
|
147
179
|
with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
|
148
180
|
start_time = time.time()
|
@@ -163,7 +195,7 @@ def embed(version, environment, application_name,
|
|
163
195
|
capture_message_content=capture_message_content,
|
164
196
|
disable_metrics=disable_metrics,
|
165
197
|
version=version,
|
166
|
-
**kwargs
|
198
|
+
**kwargs,
|
167
199
|
)
|
168
200
|
|
169
201
|
except Exception as e:
|