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.
Files changed (168) hide show
  1. openlit/__helpers.py +235 -86
  2. openlit/__init__.py +16 -13
  3. openlit/_instrumentors.py +2 -1
  4. openlit/evals/all.py +50 -21
  5. openlit/evals/bias_detection.py +47 -20
  6. openlit/evals/hallucination.py +53 -22
  7. openlit/evals/toxicity.py +50 -21
  8. openlit/evals/utils.py +54 -30
  9. openlit/guard/all.py +61 -19
  10. openlit/guard/prompt_injection.py +34 -14
  11. openlit/guard/restrict_topic.py +46 -15
  12. openlit/guard/sensitive_topic.py +34 -14
  13. openlit/guard/utils.py +58 -22
  14. openlit/instrumentation/ag2/__init__.py +24 -8
  15. openlit/instrumentation/ag2/ag2.py +34 -13
  16. openlit/instrumentation/ag2/async_ag2.py +34 -13
  17. openlit/instrumentation/ag2/utils.py +133 -30
  18. openlit/instrumentation/ai21/__init__.py +43 -14
  19. openlit/instrumentation/ai21/ai21.py +47 -21
  20. openlit/instrumentation/ai21/async_ai21.py +47 -21
  21. openlit/instrumentation/ai21/utils.py +299 -78
  22. openlit/instrumentation/anthropic/__init__.py +21 -4
  23. openlit/instrumentation/anthropic/anthropic.py +28 -17
  24. openlit/instrumentation/anthropic/async_anthropic.py +28 -17
  25. openlit/instrumentation/anthropic/utils.py +145 -35
  26. openlit/instrumentation/assemblyai/__init__.py +11 -2
  27. openlit/instrumentation/assemblyai/assemblyai.py +15 -4
  28. openlit/instrumentation/assemblyai/utils.py +120 -25
  29. openlit/instrumentation/astra/__init__.py +43 -10
  30. openlit/instrumentation/astra/astra.py +28 -5
  31. openlit/instrumentation/astra/async_astra.py +28 -5
  32. openlit/instrumentation/astra/utils.py +151 -55
  33. openlit/instrumentation/azure_ai_inference/__init__.py +43 -10
  34. openlit/instrumentation/azure_ai_inference/async_azure_ai_inference.py +53 -21
  35. openlit/instrumentation/azure_ai_inference/azure_ai_inference.py +53 -21
  36. openlit/instrumentation/azure_ai_inference/utils.py +307 -83
  37. openlit/instrumentation/bedrock/__init__.py +21 -4
  38. openlit/instrumentation/bedrock/bedrock.py +63 -25
  39. openlit/instrumentation/bedrock/utils.py +139 -30
  40. openlit/instrumentation/chroma/__init__.py +89 -16
  41. openlit/instrumentation/chroma/chroma.py +28 -6
  42. openlit/instrumentation/chroma/utils.py +167 -51
  43. openlit/instrumentation/cohere/__init__.py +63 -18
  44. openlit/instrumentation/cohere/async_cohere.py +63 -24
  45. openlit/instrumentation/cohere/cohere.py +63 -24
  46. openlit/instrumentation/cohere/utils.py +286 -73
  47. openlit/instrumentation/controlflow/__init__.py +35 -9
  48. openlit/instrumentation/controlflow/controlflow.py +66 -33
  49. openlit/instrumentation/crawl4ai/__init__.py +25 -10
  50. openlit/instrumentation/crawl4ai/async_crawl4ai.py +78 -31
  51. openlit/instrumentation/crawl4ai/crawl4ai.py +78 -31
  52. openlit/instrumentation/crewai/__init__.py +111 -24
  53. openlit/instrumentation/crewai/async_crewai.py +114 -0
  54. openlit/instrumentation/crewai/crewai.py +104 -131
  55. openlit/instrumentation/crewai/utils.py +615 -0
  56. openlit/instrumentation/dynamiq/__init__.py +46 -12
  57. openlit/instrumentation/dynamiq/dynamiq.py +74 -33
  58. openlit/instrumentation/elevenlabs/__init__.py +23 -4
  59. openlit/instrumentation/elevenlabs/async_elevenlabs.py +16 -4
  60. openlit/instrumentation/elevenlabs/elevenlabs.py +16 -4
  61. openlit/instrumentation/elevenlabs/utils.py +128 -25
  62. openlit/instrumentation/embedchain/__init__.py +11 -2
  63. openlit/instrumentation/embedchain/embedchain.py +68 -35
  64. openlit/instrumentation/firecrawl/__init__.py +24 -7
  65. openlit/instrumentation/firecrawl/firecrawl.py +46 -20
  66. openlit/instrumentation/google_ai_studio/__init__.py +45 -10
  67. openlit/instrumentation/google_ai_studio/async_google_ai_studio.py +67 -44
  68. openlit/instrumentation/google_ai_studio/google_ai_studio.py +67 -44
  69. openlit/instrumentation/google_ai_studio/utils.py +180 -67
  70. openlit/instrumentation/gpt4all/__init__.py +22 -7
  71. openlit/instrumentation/gpt4all/gpt4all.py +67 -29
  72. openlit/instrumentation/gpt4all/utils.py +285 -61
  73. openlit/instrumentation/gpu/__init__.py +128 -47
  74. openlit/instrumentation/groq/__init__.py +21 -4
  75. openlit/instrumentation/groq/async_groq.py +33 -21
  76. openlit/instrumentation/groq/groq.py +33 -21
  77. openlit/instrumentation/groq/utils.py +192 -55
  78. openlit/instrumentation/haystack/__init__.py +70 -24
  79. openlit/instrumentation/haystack/async_haystack.py +28 -6
  80. openlit/instrumentation/haystack/haystack.py +28 -6
  81. openlit/instrumentation/haystack/utils.py +196 -74
  82. openlit/instrumentation/julep/__init__.py +69 -19
  83. openlit/instrumentation/julep/async_julep.py +53 -27
  84. openlit/instrumentation/julep/julep.py +53 -28
  85. openlit/instrumentation/langchain/__init__.py +74 -63
  86. openlit/instrumentation/langchain/callback_handler.py +1100 -0
  87. openlit/instrumentation/langchain_community/__init__.py +13 -2
  88. openlit/instrumentation/langchain_community/async_langchain_community.py +23 -5
  89. openlit/instrumentation/langchain_community/langchain_community.py +23 -5
  90. openlit/instrumentation/langchain_community/utils.py +35 -9
  91. openlit/instrumentation/letta/__init__.py +68 -15
  92. openlit/instrumentation/letta/letta.py +99 -54
  93. openlit/instrumentation/litellm/__init__.py +43 -14
  94. openlit/instrumentation/litellm/async_litellm.py +51 -26
  95. openlit/instrumentation/litellm/litellm.py +51 -26
  96. openlit/instrumentation/litellm/utils.py +312 -101
  97. openlit/instrumentation/llamaindex/__init__.py +267 -90
  98. openlit/instrumentation/llamaindex/async_llamaindex.py +28 -6
  99. openlit/instrumentation/llamaindex/llamaindex.py +28 -6
  100. openlit/instrumentation/llamaindex/utils.py +204 -91
  101. openlit/instrumentation/mem0/__init__.py +11 -2
  102. openlit/instrumentation/mem0/mem0.py +50 -29
  103. openlit/instrumentation/milvus/__init__.py +10 -2
  104. openlit/instrumentation/milvus/milvus.py +31 -6
  105. openlit/instrumentation/milvus/utils.py +166 -67
  106. openlit/instrumentation/mistral/__init__.py +63 -18
  107. openlit/instrumentation/mistral/async_mistral.py +63 -24
  108. openlit/instrumentation/mistral/mistral.py +63 -24
  109. openlit/instrumentation/mistral/utils.py +277 -69
  110. openlit/instrumentation/multion/__init__.py +69 -19
  111. openlit/instrumentation/multion/async_multion.py +57 -26
  112. openlit/instrumentation/multion/multion.py +57 -26
  113. openlit/instrumentation/ollama/__init__.py +39 -18
  114. openlit/instrumentation/ollama/async_ollama.py +57 -26
  115. openlit/instrumentation/ollama/ollama.py +57 -26
  116. openlit/instrumentation/ollama/utils.py +226 -50
  117. openlit/instrumentation/openai/__init__.py +156 -32
  118. openlit/instrumentation/openai/async_openai.py +147 -67
  119. openlit/instrumentation/openai/openai.py +150 -67
  120. openlit/instrumentation/openai/utils.py +660 -186
  121. openlit/instrumentation/openai_agents/__init__.py +6 -2
  122. openlit/instrumentation/openai_agents/processor.py +409 -537
  123. openlit/instrumentation/phidata/__init__.py +13 -5
  124. openlit/instrumentation/phidata/phidata.py +67 -32
  125. openlit/instrumentation/pinecone/__init__.py +48 -9
  126. openlit/instrumentation/pinecone/async_pinecone.py +27 -5
  127. openlit/instrumentation/pinecone/pinecone.py +27 -5
  128. openlit/instrumentation/pinecone/utils.py +153 -47
  129. openlit/instrumentation/premai/__init__.py +22 -7
  130. openlit/instrumentation/premai/premai.py +51 -26
  131. openlit/instrumentation/premai/utils.py +246 -59
  132. openlit/instrumentation/pydantic_ai/__init__.py +49 -22
  133. openlit/instrumentation/pydantic_ai/pydantic_ai.py +69 -16
  134. openlit/instrumentation/pydantic_ai/utils.py +89 -24
  135. openlit/instrumentation/qdrant/__init__.py +19 -4
  136. openlit/instrumentation/qdrant/async_qdrant.py +33 -7
  137. openlit/instrumentation/qdrant/qdrant.py +33 -7
  138. openlit/instrumentation/qdrant/utils.py +228 -93
  139. openlit/instrumentation/reka/__init__.py +23 -10
  140. openlit/instrumentation/reka/async_reka.py +17 -11
  141. openlit/instrumentation/reka/reka.py +17 -11
  142. openlit/instrumentation/reka/utils.py +138 -36
  143. openlit/instrumentation/together/__init__.py +44 -12
  144. openlit/instrumentation/together/async_together.py +50 -27
  145. openlit/instrumentation/together/together.py +50 -27
  146. openlit/instrumentation/together/utils.py +301 -71
  147. openlit/instrumentation/transformers/__init__.py +2 -1
  148. openlit/instrumentation/transformers/transformers.py +13 -3
  149. openlit/instrumentation/transformers/utils.py +139 -36
  150. openlit/instrumentation/vertexai/__init__.py +81 -16
  151. openlit/instrumentation/vertexai/async_vertexai.py +33 -15
  152. openlit/instrumentation/vertexai/utils.py +123 -27
  153. openlit/instrumentation/vertexai/vertexai.py +33 -15
  154. openlit/instrumentation/vllm/__init__.py +12 -5
  155. openlit/instrumentation/vllm/utils.py +121 -31
  156. openlit/instrumentation/vllm/vllm.py +16 -10
  157. openlit/otel/events.py +35 -10
  158. openlit/otel/metrics.py +32 -24
  159. openlit/otel/tracing.py +24 -9
  160. openlit/semcov/__init__.py +101 -7
  161. {openlit-1.34.29.dist-info → openlit-1.34.31.dist-info}/METADATA +2 -1
  162. openlit-1.34.31.dist-info/RECORD +166 -0
  163. openlit/instrumentation/langchain/async_langchain.py +0 -102
  164. openlit/instrumentation/langchain/langchain.py +0 -102
  165. openlit/instrumentation/langchain/utils.py +0 -252
  166. openlit-1.34.29.dist-info/RECORD +0 -166
  167. {openlit-1.34.29.dist-info → openlit-1.34.31.dist-info}/LICENSE +0 -0
  168. {openlit-1.34.29.dist-info → openlit-1.34.31.dist-info}/WHEEL +0 -0
@@ -1,102 +0,0 @@
1
- """
2
- Module for monitoring LangChain API calls.
3
- """
4
-
5
- import time
6
- from opentelemetry.trace import SpanKind
7
- from openlit.__helpers import (
8
- handle_exception,
9
- set_server_address_and_port
10
- )
11
- from openlit.instrumentation.langchain.utils import (
12
- get_model_from_instance,
13
- process_chat_response,
14
- process_hub_response,
15
- )
16
- from openlit.semcov import SemanticConvention
17
-
18
- def hub(gen_ai_endpoint, version, environment, application_name, tracer,
19
- pricing_info, capture_message_content, metrics, disable_metrics):
20
- """
21
- Generates a telemetry wrapper for LangChain hub operations.
22
- """
23
-
24
- def wrapper(wrapped, instance, args, kwargs):
25
- """
26
- Wraps the LangChain hub operation call.
27
- """
28
-
29
- server_address, server_port = set_server_address_and_port(instance, "langchain.com", 443)
30
-
31
- with tracer.start_as_current_span(gen_ai_endpoint, kind=SpanKind.CLIENT) as span:
32
- response = wrapped(*args, **kwargs)
33
-
34
- try:
35
- response = process_hub_response(
36
- response=response,
37
- gen_ai_endpoint=gen_ai_endpoint,
38
- server_port=server_port,
39
- server_address=server_address,
40
- environment=environment,
41
- application_name=application_name,
42
- span=span,
43
- version=version
44
- )
45
-
46
- except Exception as e:
47
- handle_exception(span, e)
48
-
49
- return response
50
-
51
- return wrapper
52
-
53
- def chat(gen_ai_endpoint, version, environment, application_name,
54
- tracer, pricing_info, capture_message_content, metrics, disable_metrics):
55
- """
56
- Generates a telemetry wrapper for GenAI operations.
57
- """
58
-
59
- def wrapper(wrapped, instance, args, kwargs):
60
- """
61
- Wraps the GenAI operation call.
62
- """
63
-
64
- server_address, server_port = set_server_address_and_port(instance, "langchain.com", 443)
65
- request_model = get_model_from_instance(instance)
66
-
67
- span_name = f"{SemanticConvention.GEN_AI_OPERATION_TYPE_CHAT} {request_model}"
68
-
69
- with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
70
- start_time = time.time()
71
- response = wrapped(*args, **kwargs)
72
- end_time = time.time()
73
-
74
- try:
75
- # Add instance to kwargs for processing
76
- kwargs["instance"] = instance
77
-
78
- response = process_chat_response(
79
- response=response,
80
- request_model=request_model,
81
- pricing_info=pricing_info,
82
- server_port=server_port,
83
- server_address=server_address,
84
- environment=environment,
85
- application_name=application_name,
86
- metrics=metrics,
87
- start_time=start_time,
88
- end_time=end_time,
89
- span=span,
90
- capture_message_content=capture_message_content,
91
- disable_metrics=disable_metrics,
92
- version=version,
93
- args=args,
94
- **kwargs
95
- )
96
-
97
- except Exception as e:
98
- handle_exception(span, e)
99
-
100
- return response
101
-
102
- return wrapper
@@ -1,252 +0,0 @@
1
- """
2
- LangChain OpenTelemetry instrumentation utility functions
3
- """
4
- import time
5
-
6
- from opentelemetry.trace import Status, StatusCode
7
-
8
- from openlit.__helpers import (
9
- get_chat_model_cost,
10
- general_tokens,
11
- record_completion_metrics,
12
- common_span_attributes,
13
- )
14
- from openlit.semcov import SemanticConvention
15
-
16
- def format_content(messages):
17
- """
18
- Format the messages into a string for span events.
19
- """
20
-
21
- if not messages:
22
- return ""
23
-
24
- # Handle string input (simple case)
25
- if isinstance(messages, str):
26
- return messages
27
-
28
- # Handle list of messages
29
- formatted_messages = []
30
- for message in messages:
31
- # Handle the case where message is a tuple
32
- if isinstance(message, tuple) and len(message) == 2:
33
- role, content = message
34
- # Handle the case where message is a dictionary
35
- elif isinstance(message, dict):
36
- role = message.get("role", "user")
37
- content = message.get("content", "")
38
- else:
39
- continue
40
-
41
- # Check if the content is a list
42
- if isinstance(content, list):
43
- content_str = ", ".join(
44
- f'{item["type"]}: {item["text"] if "text" in item else item["image_url"]}'
45
- if "type" in item else f'text: {item["text"]}'
46
- for item in content
47
- )
48
- formatted_messages.append(f"{role}: {content_str}")
49
- else:
50
- formatted_messages.append(f"{role}: {content}")
51
-
52
- return "\n".join(formatted_messages)
53
-
54
- def get_model_from_instance(instance):
55
- """
56
- Extract model name from LangChain instance.
57
- """
58
- if hasattr(instance, "model_id"):
59
- return instance.model_id
60
- elif hasattr(instance, "model"):
61
- return instance.model
62
- elif hasattr(instance, "model_name"):
63
- return instance.model_name
64
- else:
65
- return "langchain-model"
66
-
67
- def get_attribute_from_instance(instance, attribute_name, default=-1):
68
- """
69
- Get attribute from instance, checking model_kwargs first.
70
- """
71
- # Attempt to retrieve model_kwargs from the instance
72
- model_kwargs = getattr(instance, "model_kwargs", None)
73
-
74
- # Check for attribute in model_kwargs if it exists
75
- if model_kwargs and attribute_name in model_kwargs:
76
- value = model_kwargs[attribute_name]
77
- return value if value is not None else default
78
-
79
- # Attempt to get the attribute directly from the instance
80
- try:
81
- value = getattr(instance, attribute_name)
82
- # Return default if value is None
83
- return value if value is not None else default
84
- except AttributeError:
85
- # Special handling for "model" attribute to consider "model_id"
86
- if attribute_name == "model":
87
- return getattr(instance, "model_id", "langchain-model")
88
-
89
- # Default if the attribute isnt found in model_kwargs or the instance
90
- return default
91
-
92
- def common_chat_logic(scope, pricing_info, environment, application_name, metrics,
93
- capture_message_content, disable_metrics, version, is_stream):
94
- """
95
- Process chat request and generate Telemetry
96
- """
97
-
98
- scope._end_time = time.time()
99
- scope._tbt = 0 # LangChain doesnt support streaming yet
100
- scope._ttft = scope._end_time - scope._start_time
101
-
102
- # Extract prompt - check args[0] first (positional), then kwargs (keyword arguments)
103
- messages = None
104
- if scope._args and len(scope._args) > 0:
105
- messages = scope._args[0] # llm.invoke([("system", "..."), ("human", "...")])
106
- else:
107
- messages = scope._kwargs.get("messages", "") or scope._kwargs.get("input", "") # llm.invoke(messages=[...])
108
-
109
- formatted_messages = format_content(messages)
110
- request_model = scope._request_model
111
-
112
- # Use actual token counts from response if available, otherwise calculate them using general_tokens
113
- if (scope._input_tokens in [None, 0] or scope._output_tokens in [None, 0]):
114
- scope._input_tokens = general_tokens(str(formatted_messages))
115
- scope._output_tokens = general_tokens(str(scope._llmresponse))
116
-
117
- cost = get_chat_model_cost(request_model, pricing_info, scope._input_tokens, scope._output_tokens)
118
-
119
- # Common Span Attributes
120
- common_span_attributes(scope,
121
- SemanticConvention.GEN_AI_OPERATION_TYPE_CHAT, SemanticConvention.GEN_AI_SYSTEM_LANGCHAIN,
122
- scope._server_address, scope._server_port, request_model, scope._response_model,
123
- environment, application_name, is_stream, scope._tbt, scope._ttft, version)
124
-
125
- # Span Attributes for Request parameters
126
- instance = scope._kwargs.get("instance")
127
- if instance:
128
- scope._span.set_attribute(SemanticConvention.GEN_AI_REQUEST_TEMPERATURE,
129
- get_attribute_from_instance(instance, "temperature", 1.0))
130
- scope._span.set_attribute(SemanticConvention.GEN_AI_REQUEST_TOP_K,
131
- get_attribute_from_instance(instance, "top_k", 1.0))
132
- scope._span.set_attribute(SemanticConvention.GEN_AI_REQUEST_TOP_P,
133
- get_attribute_from_instance(instance, "top_p", 1.0))
134
-
135
- # Span Attributes for Response parameters
136
- scope._span.set_attribute(SemanticConvention.GEN_AI_RESPONSE_ID, scope._response_id)
137
- scope._span.set_attribute(SemanticConvention.GEN_AI_RESPONSE_FINISH_REASON, [scope._finish_reason])
138
- scope._span.set_attribute(SemanticConvention.GEN_AI_OUTPUT_TYPE, "text" if isinstance(scope._llmresponse, str) else "json")
139
-
140
- # Span Attributes for Cost and Tokens
141
- scope._span.set_attribute(SemanticConvention.GEN_AI_USAGE_INPUT_TOKENS, scope._input_tokens)
142
- scope._span.set_attribute(SemanticConvention.GEN_AI_USAGE_OUTPUT_TOKENS, scope._output_tokens)
143
- scope._span.set_attribute(SemanticConvention.GEN_AI_CLIENT_TOKEN_USAGE, scope._input_tokens + scope._output_tokens)
144
- scope._span.set_attribute(SemanticConvention.GEN_AI_USAGE_COST, cost)
145
-
146
- # Span Attributes for Content
147
- if capture_message_content:
148
- scope._span.set_attribute(SemanticConvention.GEN_AI_CONTENT_PROMPT, formatted_messages)
149
- scope._span.set_attribute(SemanticConvention.GEN_AI_CONTENT_COMPLETION, scope._llmresponse)
150
-
151
- # To be removed once the change to span_attributes (from span events) is complete
152
- scope._span.add_event(
153
- name=SemanticConvention.GEN_AI_CONTENT_PROMPT_EVENT,
154
- attributes={
155
- SemanticConvention.GEN_AI_CONTENT_PROMPT: formatted_messages,
156
- },
157
- )
158
- scope._span.add_event(
159
- name=SemanticConvention.GEN_AI_CONTENT_COMPLETION_EVENT,
160
- attributes={
161
- SemanticConvention.GEN_AI_CONTENT_COMPLETION: scope._llmresponse,
162
- },
163
- )
164
-
165
- scope._span.set_status(Status(StatusCode.OK))
166
-
167
- # Record metrics
168
- if not disable_metrics:
169
- record_completion_metrics(metrics, SemanticConvention.GEN_AI_OPERATION_TYPE_CHAT, SemanticConvention.GEN_AI_SYSTEM_LANGCHAIN,
170
- scope._server_address, scope._server_port, request_model, scope._response_model, environment,
171
- application_name, scope._start_time, scope._end_time, scope._input_tokens, scope._output_tokens,
172
- cost, scope._tbt, scope._ttft)
173
-
174
- def process_chat_response(response, request_model, pricing_info, server_port, server_address,
175
- environment, application_name, metrics, start_time, end_time,
176
- span, capture_message_content=False, disable_metrics=False,
177
- version="1.0.0", args=None, **kwargs):
178
- """
179
- Process chat response and generate telemetry.
180
- """
181
-
182
- # Create scope object
183
- scope = type("GenericScope", (), {})()
184
-
185
- scope._start_time = start_time
186
- scope._end_time = end_time
187
- scope._span = span
188
- scope._server_address = server_address
189
- scope._server_port = server_port
190
- scope._request_model = request_model
191
- scope._kwargs = kwargs
192
- scope._args = args or ()
193
-
194
- # Extract response content and metadata - only extract what comes from the response
195
- try:
196
- scope._llmresponse = response.content
197
- except AttributeError:
198
- scope._llmresponse = str(response)
199
-
200
- # Extract token information from usage_metadata if available
201
- usage_metadata = getattr(response, "usage_metadata", None)
202
- if usage_metadata:
203
- scope._input_tokens = usage_metadata.get("input_tokens", 0)
204
- scope._output_tokens = usage_metadata.get("output_tokens", 0)
205
- scope._total_tokens = usage_metadata.get("total_tokens", 0)
206
- else:
207
- # Will be calculated in common_chat_logic if not available
208
- scope._input_tokens = None
209
- scope._output_tokens = None
210
- scope._total_tokens = None
211
-
212
- # Extract response metadata
213
- response_metadata = getattr(response, "response_metadata", {})
214
- scope._response_model = response_metadata.get("model_name", request_model)
215
- scope._finish_reason = response_metadata.get("finish_reason", "stop")
216
-
217
- # Extract response ID
218
- scope._response_id = getattr(response, "id", "")
219
-
220
- common_chat_logic(scope, pricing_info, environment, application_name, metrics,
221
- capture_message_content, disable_metrics, version, is_stream=False)
222
-
223
- return response
224
-
225
-
226
-
227
- def process_hub_response(response, gen_ai_endpoint, server_port, server_address,
228
- environment, application_name, span, version="1.0.0"):
229
- """
230
- Process LangChain hub operations and generate telemetry.
231
- """
232
-
233
- # Set span attributes for hub operations
234
- span.set_attribute(SemanticConvention.GEN_AI_SYSTEM, SemanticConvention.GEN_AI_SYSTEM_LANGCHAIN)
235
- span.set_attribute(SemanticConvention.GEN_AI_ENDPOINT, gen_ai_endpoint)
236
- span.set_attribute(SemanticConvention.GEN_AI_OPERATION, SemanticConvention.GEN_AI_OPERATION_TYPE_FRAMEWORK)
237
- span.set_attribute(SemanticConvention.GEN_AI_SDK_VERSION, version)
238
- span.set_attribute(SemanticConvention.GEN_AI_ENVIRONMENT, environment)
239
- span.set_attribute(SemanticConvention.GEN_AI_APPLICATION_NAME, application_name)
240
-
241
- # Try to extract hub metadata
242
- try:
243
- span.set_attribute(SemanticConvention.GEN_AI_HUB_OWNER,
244
- response.metadata.get("lc_hub_owner", "unknown"))
245
- span.set_attribute(SemanticConvention.GEN_AI_HUB_REPO,
246
- response.metadata.get("lc_hub_repo", "unknown"))
247
- except (AttributeError, KeyError):
248
- pass
249
-
250
- span.set_status(Status(StatusCode.OK))
251
-
252
- return response
@@ -1,166 +0,0 @@
1
- openlit/__helpers.py,sha256=4A2sUiPTF4TK4dJ2pZgmSdFlU6Ket1LDUB9Jj_1Qtkg,20358
2
- openlit/__init__.py,sha256=gKMWmsqzb7xIJgbPvGO6yNcuzpf5lg1cShKrPSrE1MM,18560
3
- openlit/_instrumentors.py,sha256=k7IZCCl2IeDUcyeVHxaH1krjJPC90mlveH51u6ZnUSs,5744
4
- openlit/evals/__init__.py,sha256=nJe99nuLo1b5rf7pt9U9BCdSDedzbVi2Fj96cgl7msM,380
5
- openlit/evals/all.py,sha256=oWrue3PotE-rB5WePG3MRYSA-ro6WivkclSHjYlAqGs,7154
6
- openlit/evals/bias_detection.py,sha256=mCdsfK7x1vX7S3psC3g641IMlZ-7df3h-V6eiICj5N8,8154
7
- openlit/evals/hallucination.py,sha256=Yn5OfWVJKynAiImV_aAqCvc0zqYjdJ3XUppCnMTy1pg,7507
8
- openlit/evals/toxicity.py,sha256=Ii_kX2GToO9fDstDBuK4iN0tEQUkMoPWUBDMFFfeMC4,7000
9
- openlit/evals/utils.py,sha256=dxi4tv1bMBPp8u78WkyVyB8--3XnplMe_VfV3Eypww8,8479
10
- openlit/guard/__init__.py,sha256=B-D7iPadGFn5i7nEsQfVbS6feL1ViRht3zWTQ45Jgkg,417
11
- openlit/guard/all.py,sha256=s2TajvvNnx28U6tM7sAKfU9pHK09VwGsrOQ9rLCnhO0,9743
12
- openlit/guard/prompt_injection.py,sha256=3e4DKxB7QDzM-xPCpwEuureiH_2s_OTJ9BSckknPpzY,5784
13
- openlit/guard/restrict_topic.py,sha256=KTuWa7XeMsV4oXxOrD1CYZV0wXWxTfA0H3p_6q_IOsk,6444
14
- openlit/guard/sensitive_topic.py,sha256=RgVw_laFERv0nNdzBsAd2_3yLomMOK-gVq-P7oj1bTk,5552
15
- openlit/guard/utils.py,sha256=6hE3rCRjFXYjKRQYUo8YsqUSlvod48nOWp8MwoQEYdw,7670
16
- openlit/instrumentation/ag2/__init__.py,sha256=vHKx7ybxwtNMGoIyU3lPp8t33m3lWyA_B-1HtJoW0v4,1880
17
- openlit/instrumentation/ag2/ag2.py,sha256=ebsBWrXf7apjLumTB4hWw19-q9V0zacyDcJ-7oZoxew,3955
18
- openlit/instrumentation/ag2/async_ag2.py,sha256=5OnM7tos-T5O6mmxhOVI1EO3J47wodC_HSJPWpvmauM,4031
19
- openlit/instrumentation/ag2/utils.py,sha256=HwOqUQE4HqHLDLGf8nIPc_aiOVoV7iz30piw31F9pys,7073
20
- openlit/instrumentation/ai21/__init__.py,sha256=tKX643fwxPWPJq1EXEZd0Xpd6B0jl_ViPFmJ87f5B08,2539
21
- openlit/instrumentation/ai21/ai21.py,sha256=zyQMfCLcOFG1tQWrZmGeMaVAmj8MtCUeXQtPHmlUAO0,6533
22
- openlit/instrumentation/ai21/async_ai21.py,sha256=q1Dhxru4tUJu0U1Px3PptNqrSGW0-VfRGcqkLKFR8vQ,6659
23
- openlit/instrumentation/ai21/utils.py,sha256=5zf69uw_TT8u-q-6R6rBeGm1bX0WpsbrAq-MTTZJ9Bk,14309
24
- openlit/instrumentation/anthropic/__init__.py,sha256=mpb15zoUk1jymxUOyyk4IZSKlhsra-3MjO7RLbm1o-I,1753
25
- openlit/instrumentation/anthropic/anthropic.py,sha256=e5by3_c8zr_6XsQX4R96Wzj840dDiQZe25BgM5melU0,4892
26
- openlit/instrumentation/anthropic/async_anthropic.py,sha256=fZLqZO5gOMBn_KtTl-5MEDfoOFyQctpNxo6saVaCw8I,4994
27
- openlit/instrumentation/anthropic/utils.py,sha256=W9paSh2npsCwsHyf-RyHeg0eRDcE509_f-pqb2IeO9c,9761
28
- openlit/instrumentation/assemblyai/__init__.py,sha256=-pW7c5Vxa493yETQABbebx4be_sTx5VwkvQrIHbhRbI,1404
29
- openlit/instrumentation/assemblyai/assemblyai.py,sha256=SJZ-O6k8adlRWJ2gMIP62vXobHJ3VI87PQOCFw9Ilng,2071
30
- openlit/instrumentation/assemblyai/utils.py,sha256=driBfwWBveWTqHyPRtl1R8oEG6m07-GXycyCnDfZ9PM,6089
31
- openlit/instrumentation/astra/__init__.py,sha256=NBqmJfzJINFp3QT5sMVgvQYIzWB8FPb1Exxa-EATPss,4035
32
- openlit/instrumentation/astra/astra.py,sha256=JsuGgbVvFWn4iSocoXiA1L1X9q1pYezvp1LHk5dhPoY,2026
33
- openlit/instrumentation/astra/async_astra.py,sha256=0LSj3Zd9L5ZFTk9OWGx1eMgfsmBopPpHKDWIYeah7D4,2056
34
- openlit/instrumentation/astra/utils.py,sha256=rV3vcqPUcWj5rYjmga4ObWrnDDm-9V6kGqBRtVwqD24,12037
35
- openlit/instrumentation/azure_ai_inference/__init__.py,sha256=_GuYy4ypF6_HICpAC8dNQ5-FBjkcNzPTPF4q3fTM10Q,2512
36
- openlit/instrumentation/azure_ai_inference/async_azure_ai_inference.py,sha256=SFrniRWPqVBxFJVOpC8w1qNGSYZhCFXeKHVHu5pEdZI,5906
37
- openlit/instrumentation/azure_ai_inference/azure_ai_inference.py,sha256=hRFuuvaXflctNNbk7N2GOfKaC_eCHbrBWf9_1sZcaGY,5808
38
- openlit/instrumentation/azure_ai_inference/utils.py,sha256=JqKZgb6VppDbAQ2RdH_dQ2oWVnaqGIA1PCmMl1yrMtA,15491
39
- openlit/instrumentation/bedrock/__init__.py,sha256=D4Wyjb9kJASUQMy5hI41Mvp_csP4k4F6tASdQjt8IZ0,1681
40
- openlit/instrumentation/bedrock/bedrock.py,sha256=_2oTa9cf-OxHTFCmNUWT__vHnv7-wUcxm9-6nC1K3jg,8036
41
- openlit/instrumentation/bedrock/utils.py,sha256=7qn8pI-BQcW8ZLxYJb_W3Yzncqbz4QBCR9f2u9N7C4Y,9345
42
- openlit/instrumentation/chroma/__init__.py,sha256=CNlUbryf2gJ0-Ayf8d65Ec5GOkWrFl8ELqSUybuqQV4,3256
43
- openlit/instrumentation/chroma/chroma.py,sha256=pdKq-EkcNI4FwyGYPSxDyseJedmtgyukmBU1m-A2qAc,1995
44
- openlit/instrumentation/chroma/utils.py,sha256=AMRAKY8X88Er459eXcG0Il3VR-NoMPMnzDEI7USloeE,12312
45
- openlit/instrumentation/cohere/__init__.py,sha256=FIJ_QokUZcN9UsVPWckRfHiLVJ5zj3jtcOjQmjQA5f0,2978
46
- openlit/instrumentation/cohere/async_cohere.py,sha256=wgctJa-BcKEkVguLorR7mYRShv7GiioF1_zxevvzXTw,6990
47
- openlit/instrumentation/cohere/cohere.py,sha256=7YAj6kwJ1MDLFY3WtbPRehZFIseDVIbvPQJZxG8Qc6A,6814
48
- openlit/instrumentation/cohere/utils.py,sha256=5l3Av-t0GzawPd0j5L9jcpdJDGOvLq2YCMpo3usS4OY,14533
49
- openlit/instrumentation/controlflow/__init__.py,sha256=Y5xSj6bwkGufG989YtRGujzj8qrV4T5kXr4hzGb2nGk,2168
50
- openlit/instrumentation/controlflow/controlflow.py,sha256=hi4DtshGvnPjhElwX-ytkRn86r0Q6hLi9FhPCYFAG50,5561
51
- openlit/instrumentation/crawl4ai/__init__.py,sha256=TTFFeZkTgPZJAD1Tlr2LK-CTH2A7NkZK-5SHKFfFOtU,1947
52
- openlit/instrumentation/crawl4ai/async_crawl4ai.py,sha256=bqtopPKOMCfBx7in08QnpjYnPO09YV_uySR19YTuV98,4893
53
- openlit/instrumentation/crawl4ai/crawl4ai.py,sha256=kX5B5ItHBw-_qa-SjSmIjFQg0ZwckB1tMkoemCvg2rc,4875
54
- openlit/instrumentation/crewai/__init__.py,sha256=Yh-evzhxG-x3E2oRf71S1NIx_36JGu4TeIqFl1-2H5w,1834
55
- openlit/instrumentation/crewai/crewai.py,sha256=0MuubMHnnWeLhc5LnHtr74-hQaq8EAx-pIsocb4IIeE,7223
56
- openlit/instrumentation/dynamiq/__init__.py,sha256=LuIYSQpQH5Pk5Ngl_3Jy3bImGjZgh61La6sbVJfC1Io,2391
57
- openlit/instrumentation/dynamiq/dynamiq.py,sha256=0x-76VL5KG_HytmzAOi4ERPN0Wm5KLyMxHZmFbaWxxg,5309
58
- openlit/instrumentation/elevenlabs/__init__.py,sha256=YDOyrxdY9VACuHY5iZ3v3FaIPcNM7lAmUInJ6H-Cw-g,1897
59
- openlit/instrumentation/elevenlabs/async_elevenlabs.py,sha256=IjcFay1Cgdrq4IGsE1ZRQemSDBsqAqVYRkzUm8LAaBs,1925
60
- openlit/instrumentation/elevenlabs/elevenlabs.py,sha256=Y4zik8Ds4rv21258F-VEn8I4v1S39Vb__w8MI0lAzGw,1913
61
- openlit/instrumentation/elevenlabs/utils.py,sha256=GpphFe5F9h4s8azj155IgywbenNoRYN2DtNyDT7HWKA,5876
62
- openlit/instrumentation/embedchain/__init__.py,sha256=x2_qvJTwWog_mH6IY987Bp9mWxHtasqX2nZ3rwA7mb4,1959
63
- openlit/instrumentation/embedchain/embedchain.py,sha256=GwY_mh06odzM453L8Qxxf8A6NqZEc5FVq4F9ySN_4w0,7905
64
- openlit/instrumentation/firecrawl/__init__.py,sha256=kyVsAiDBC2djifqT2w1cPRAotiEyEabNvnBeSQxi9N8,1876
65
- openlit/instrumentation/firecrawl/firecrawl.py,sha256=4X38UrLYeGm3uez-edYA6qEc0nKC3p77yfKgKBBud0A,3826
66
- openlit/instrumentation/google_ai_studio/__init__.py,sha256=VLNOlaTFzjOpuUzloynvADewiTmaEu1wx8FerEbmsvg,2510
67
- openlit/instrumentation/google_ai_studio/async_google_ai_studio.py,sha256=UL5AdTwkzdTKUomTfETMgYjUl00qL7BB8U0izuXfKFo,5527
68
- openlit/instrumentation/google_ai_studio/google_ai_studio.py,sha256=nanOoXz-1uJtdh39aD438_yMk0no3AM7VVNKzDganHo,5429
69
- openlit/instrumentation/google_ai_studio/utils.py,sha256=-X5sHk216ajJrl4cP35f5vT8YAZaIE4yLKI7nWEKHkQ,11140
70
- openlit/instrumentation/gpt4all/__init__.py,sha256=kXciJbQMZYnTeAYLCjriVYXV7XzUUQrwEZPmyv1WXxI,1627
71
- openlit/instrumentation/gpt4all/gpt4all.py,sha256=6VkJbaPIDv5sbFXFiadH4IB0KljljnOZ1HaGAPuyp_E,6704
72
- openlit/instrumentation/gpt4all/utils.py,sha256=clyoIy1_ib-1_keQFMvyzTOcbWHeWPRpDhV-w2CtIAU,12470
73
- openlit/instrumentation/gpu/__init__.py,sha256=QQCFVEbRfdeTjmdFe-UeEiy19vEEWSIBpj2B1wYGhUs,11036
74
- openlit/instrumentation/groq/__init__.py,sha256=WImIz76RvG4w6r1s7I-n-2FiZSTWclV-jVctETNMxJU,1731
75
- openlit/instrumentation/groq/async_groq.py,sha256=hp3AN8B98cUbX4C0GksTbNb6kpg31FJUlhW32Wo8CnI,5113
76
- openlit/instrumentation/groq/groq.py,sha256=XfJakQCfEszvVJxzpemYBIVE73b5WVj8bAlDaeVKBMU,4994
77
- openlit/instrumentation/groq/utils.py,sha256=0ttCMcKmyDrSnmQtM20U5Yo6OllUPW5iBNBE5qW0jGk,9072
78
- openlit/instrumentation/haystack/__init__.py,sha256=69pn20PbbrWLRISQmI5VKEYLcOcTe0PPHcH4sbaEbX4,3353
79
- openlit/instrumentation/haystack/async_haystack.py,sha256=l4LeWL91ZSx_4azpRtdjRtYGL_A_mYc7ejrzqiP5Ysk,1884
80
- openlit/instrumentation/haystack/haystack.py,sha256=qsJ189pfR1F7bcCe7vYTFGA3tCgu2s5ar0pMHOmX_Ks,1847
81
- openlit/instrumentation/haystack/utils.py,sha256=A34ZQ97yKJcLi7NbCR_Uqg95BgyvcOvrEj3MSkw37xo,17083
82
- openlit/instrumentation/julep/__init__.py,sha256=g-hwXjvXAb5IDs5DR_P8rKsnD4beB9tupAzuuviQT3k,3216
83
- openlit/instrumentation/julep/async_julep.py,sha256=637HVs-_IYRA4DbBq4RVlLzd5iE9rwYvDZZ7ZFm8BbM,5315
84
- openlit/instrumentation/julep/julep.py,sha256=4QB2cA-bhk4qUnICzjwP9fF_ZHhXtmVfbxJNi81nuKM,5318
85
- openlit/instrumentation/langchain/__init__.py,sha256=idjeMAL8tCf1KimrS82D4RERbicSxBj82e8WNuaZWs8,2996
86
- openlit/instrumentation/langchain/async_langchain.py,sha256=5RtaBLifJoDYBPL3d53dT2GDmDzOh5oqyZeJIXAmWxg,3426
87
- openlit/instrumentation/langchain/langchain.py,sha256=6jO5QAZz_jYyauEyQ76nbTpiNrTLPwLNPKzXmlBn75Y,3336
88
- openlit/instrumentation/langchain/utils.py,sha256=ermEFuOY9Djh4Np4EHeh7XRzZc-B24A_CPLqkJhvzpY,10470
89
- openlit/instrumentation/langchain_community/__init__.py,sha256=DGNxMj6RAMQtTFD0plU826D3G-KupROwexN4GjmAFmk,2717
90
- openlit/instrumentation/langchain_community/async_langchain_community.py,sha256=BX6ErjSX9-RXBxB5cFwDrhVKpb3OGzwpzzw5VPMpp80,1590
91
- openlit/instrumentation/langchain_community/langchain_community.py,sha256=J-sN5eGC7r-OkPAU-lnbdG7-b_jtYs0esmFy51xdFIk,1560
92
- openlit/instrumentation/langchain_community/utils.py,sha256=qRN8GvQoFHhMdtHOOGoZXGOC6Xk_Y_4z0bxQU6mGPSA,3326
93
- openlit/instrumentation/letta/__init__.py,sha256=K8PtRKxuueyqEYE3LzxWJ74IieNKSI6dmk9sNRd8Mt0,3031
94
- openlit/instrumentation/letta/letta.py,sha256=SCIpJ4tdB1l1BmeQx4raaTS4MQO5X15pLvS4PepEKBE,8481
95
- openlit/instrumentation/litellm/__init__.py,sha256=D47yfDLLEKpkaRAy7_Yif70kj88AGqLQYZAABpTN4sE,2284
96
- openlit/instrumentation/litellm/async_litellm.py,sha256=GdMXyCLLuC9-7nXTsKTgvXOOQnw0oTbUwL_DYp_pNoE,6780
97
- openlit/instrumentation/litellm/litellm.py,sha256=xLna3I_jcywTtIs1tBjHAQKyKjNM07T8GHX9pIqZcQ0,6664
98
- openlit/instrumentation/litellm/utils.py,sha256=VMSnYkKn9yZtOphIh2ENNuqJtGjz1fXEYUKi5JGHC7A,13195
99
- openlit/instrumentation/llamaindex/__init__.py,sha256=B_76JO93uZiWhPGqvOVpZltOQbPw9JxuQw-HBBJZqQA,10121
100
- openlit/instrumentation/llamaindex/async_llamaindex.py,sha256=DdQmdhXtKgPpqsqgseB-MLZSm-1Sc51Q2uEeavhaIMw,1879
101
- openlit/instrumentation/llamaindex/llamaindex.py,sha256=2mmhYeZXSfXJLzu-yPNTTpoV-E2UAYdYroWIVDFgw0M,1932
102
- openlit/instrumentation/llamaindex/utils.py,sha256=rGFzN5J1-F9MAgr59VFC8TvOG8z0xFceXB6hrntqFH4,19043
103
- openlit/instrumentation/mem0/__init__.py,sha256=IadP3bKgz2HCbnrh9S7AW24uDauGkzsIWeOQaGkOCc4,2447
104
- openlit/instrumentation/mem0/mem0.py,sha256=mEK72AlUmydI1DZu8L9dnTx2B95MrIEzMfg6ExG93nQ,5336
105
- openlit/instrumentation/milvus/__init__.py,sha256=aFRRkJtUEJcoIQjMWPdBiAaODFZrGuvUPg-9lCGkg80,1839
106
- openlit/instrumentation/milvus/milvus.py,sha256=QCtVFGvlQkNPP2apsWOYMTsCPFugts6DMnF0Sm77AHA,1963
107
- openlit/instrumentation/milvus/utils.py,sha256=UDk6UmJ0ovCgcs2ynOXWmJEbIqnbipO0k0BsAmVKRvg,11609
108
- openlit/instrumentation/mistral/__init__.py,sha256=D4CLrx9KSSxAPA1m00743Og0Tl8BS47nsgp4qG5-qh8,2977
109
- openlit/instrumentation/mistral/async_mistral.py,sha256=LWq8tYahbA7NOPDdk6DWJAKuxR4GHOC49w6L1QuNtBw,6946
110
- openlit/instrumentation/mistral/mistral.py,sha256=lyXyPZuxVACcZoOz85G4FFH4KP77uGf3aOiFDdHLQFI,6771
111
- openlit/instrumentation/mistral/utils.py,sha256=B_sdUXXYPq6w3-qPX6lei0eKU6OxcgXOKG40TOZWDUQ,13200
112
- openlit/instrumentation/multion/__init__.py,sha256=Wr3lcDyG_YbOLkCUzBFhraAedF6E113tce8eSWlcz10,3149
113
- openlit/instrumentation/multion/async_multion.py,sha256=XutZnayCJOZ_NA9bvE1NUoej41KOGR7FRn2tpoGKMEU,6092
114
- openlit/instrumentation/multion/multion.py,sha256=-WqRAcu5qiEMY9XDmlJTQHuQiWfdwms9JDn127QCNb8,6074
115
- openlit/instrumentation/ollama/__init__.py,sha256=WxjqjuR8ovMU5dR08OELNqClbuM7ns4hDRiwWg9NXJk,3587
116
- openlit/instrumentation/ollama/async_ollama.py,sha256=ORXwem8lgSrhOcci55NkChIK9SNc3IYIpLjF_ogsGA8,6666
117
- openlit/instrumentation/ollama/ollama.py,sha256=8mvrWfU1c5h1L7lxWo47YBJ7g2u7QZmSZuuP0URtTDo,6538
118
- openlit/instrumentation/ollama/utils.py,sha256=TIE3_ur2U-iyCclna7TzwjDIFC9PZjRnZqNDV6NfG-0,11958
119
- openlit/instrumentation/openai/__init__.py,sha256=4RWRhrRa589jiwvFf8_fLBW6UB5Btrd17mcDKv5VhJk,5546
120
- openlit/instrumentation/openai/async_openai.py,sha256=QvEEKZnZYl9Vf-wsX1voTMMZed1eNhRI9aUT8CtFJi0,18003
121
- openlit/instrumentation/openai/openai.py,sha256=34_FqOwSroNOm_mmLzZb8Y7xtr5StwnUyRQmHP6HHJc,17698
122
- openlit/instrumentation/openai/utils.py,sha256=um8ReamuvmgpKDd6Xr32PGjeWejD8M8e7yzL5P_soBM,36340
123
- openlit/instrumentation/openai_agents/__init__.py,sha256=0CkxeGyUJcucDegogDtw_lKsA0drQogzwtgyBVmasIE,2351
124
- openlit/instrumentation/openai_agents/processor.py,sha256=7hHM8OuIwLwfCfEBZQlqaHKXUdTkiiZz23JppwsnXxw,25860
125
- openlit/instrumentation/phidata/__init__.py,sha256=tqls5-UI6FzbjxYgq_qqAfALhWJm8dHn2NtgqiQA4f8,1557
126
- openlit/instrumentation/phidata/phidata.py,sha256=ohrxs6i0Oik75P2BrjNGbK71tdZg94ZMmaXixrXwV5M,4834
127
- openlit/instrumentation/pinecone/__init__.py,sha256=-3wD35oCnwjwBQV3-gZs2XgpZ2wT9jmiMGjalpF9BhI,3683
128
- openlit/instrumentation/pinecone/async_pinecone.py,sha256=AXXsRvsOgqFlYRXfE971RUsiClmPnMvMiPjKgE7y-Nk,2035
129
- openlit/instrumentation/pinecone/pinecone.py,sha256=RjVkYvynaDcDIbmkyZnKvmeTK57Q48uOknDg7UF8MdM,1993
130
- openlit/instrumentation/pinecone/utils.py,sha256=Gke681uUWPhXQ38OeWBgScp08EPcwGkfzK2zQ2aGQKc,10392
131
- openlit/instrumentation/premai/__init__.py,sha256=3YlqyV-eNA_4aVUHDVUQUvGJRW8iVVcRtREw91yhbyw,1728
132
- openlit/instrumentation/premai/premai.py,sha256=rWRqfoIZUbTz-M7zgC2Z92gTVv9fCj1Z4iJcsG86YeI,6438
133
- openlit/instrumentation/premai/utils.py,sha256=K7EKGRDDh1X3OznG4z8H506zzFOHN6MH3oqtxM5eUyM,11409
134
- openlit/instrumentation/pydantic_ai/__init__.py,sha256=mq52QanFI4xDx6JK-qW5yzhFPXwznJqIYsuxRoBA2Xg,2023
135
- openlit/instrumentation/pydantic_ai/pydantic_ai.py,sha256=2F2hrowGqcPjTDLG9IeLY8OO-lXZKhLSU93XtZ3tt5A,1868
136
- openlit/instrumentation/pydantic_ai/utils.py,sha256=b0TqhSDnRqkPdM_qsOgMuXT3lwTvHzMYpaBv2qibiVo,4307
137
- openlit/instrumentation/qdrant/__init__.py,sha256=-2qoUBZXaZqVpOjM_XDp6_Nf4tCqErrGcNtVD6DGgb0,3010
138
- openlit/instrumentation/qdrant/async_qdrant.py,sha256=8e6CQGMMnvsTtfYTlxJBRwfHnqHcg-eKl6MIHGuZxL4,2259
139
- openlit/instrumentation/qdrant/qdrant.py,sha256=vu2NCzlsl3R4NB__JXexHKSDnUNbLQAhxIHt3EG6Zbs,2223
140
- openlit/instrumentation/qdrant/utils.py,sha256=XfjpesBq1S0YtwMLPJmYacrBEP9OeM2yBQYMSUieVPk,15223
141
- openlit/instrumentation/reka/__init__.py,sha256=wI5KUYyTAD8ni4E98uziy9WPqoQqlzybDXanFOqDan0,1720
142
- openlit/instrumentation/reka/async_reka.py,sha256=CZk5rr7njThDkmrauRAJmNtMBgsLarTbQ54raPQb92A,1909
143
- openlit/instrumentation/reka/reka.py,sha256=wou7vVdN_1Y5UZd4tpkLpTPAtgmAl6gmh_onLn4k4GE,1908
144
- openlit/instrumentation/reka/utils.py,sha256=qt1ZIsWkuFGX6iPMiUJ993dh1njvc81QJECD3BnSOpE,6632
145
- openlit/instrumentation/together/__init__.py,sha256=2o8LML05Ji_hs6xuyP3iz7vJcFIgKGaLaghSDPEcHGk,2468
146
- openlit/instrumentation/together/async_together.py,sha256=0-h5fKw6rIwN_fvWVpGuvVqizIuM9xFCzz8Z4oGgOj0,6822
147
- openlit/instrumentation/together/together.py,sha256=nY6mzHmHgoMbbnB_9eL0EBQjP0ltJVdkQj4pbamHAj0,6723
148
- openlit/instrumentation/together/utils.py,sha256=n7r_pM_sqFnJEAkL7OhPydr0Uct0A74vXdcYELdbeW0,14368
149
- openlit/instrumentation/transformers/__init__.py,sha256=hXq0WUZNl6Sz0Ihk29kA9i8Q1j0e1URFb7v7etnQpxI,1511
150
- openlit/instrumentation/transformers/transformers.py,sha256=MHnHVo_6NP0gSIqxen6qQpCrZ0fs8Ec80EdZumMpVNo,1797
151
- openlit/instrumentation/transformers/utils.py,sha256=MMy_SyRyDI4X-0mqbBwStac0xabmw0ZRvv_VWLA_Nkg,8426
152
- openlit/instrumentation/vertexai/__init__.py,sha256=ti0LBtnXVN8cC8AFkn_52JSKamfR5AL9MdNac9u1R28,3640
153
- openlit/instrumentation/vertexai/async_vertexai.py,sha256=CxogAXam2ZUpFaIyWI3llaJn5bXAtKYm0L3dYEWu278,4865
154
- openlit/instrumentation/vertexai/utils.py,sha256=7B5bYcBNLNpt3uG64yG0UUMMyfaqSRVPDaeebppBMmk,8425
155
- openlit/instrumentation/vertexai/vertexai.py,sha256=tHcnpw4s0ugaxP4hG5q3BFnUtLBcoEuqARdwR-dmf3c,4775
156
- openlit/instrumentation/vllm/__init__.py,sha256=uaSzQmgDuKJ-sh61sfVdzVt2qAZaozZIQ8sbmQ0XpZE,1357
157
- openlit/instrumentation/vllm/utils.py,sha256=HuCPNBgChWg9vA7DHNFCij_y8qj27DjZxdZ0Nvdt2fg,5751
158
- openlit/instrumentation/vllm/vllm.py,sha256=VzazF2f4LLwjZDO_G8lIN_d622oSJM0fIO9wjxXbhyg,2004
159
- openlit/otel/events.py,sha256=VrMjTpvnLtYRBHCiFwJojTQqqNpRCxoD4yJYeQrtPsk,3560
160
- openlit/otel/metrics.py,sha256=GM2PDloBGRhBTkHHkYaqmOwIAQkY124ZhW4sEqW1Fgk,7086
161
- openlit/otel/tracing.py,sha256=tjV2bEbEDPUB1Z46gE-UsJsb04sRdFrfbhIDkxViZc0,3103
162
- openlit/semcov/__init__.py,sha256=V1nmtUWyXVydBzCRUYknwpVlPxThZIP64VKiedd9e8A,18707
163
- openlit-1.34.29.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
164
- openlit-1.34.29.dist-info/METADATA,sha256=MTEXtKUMyUJ6AjDFY7MQMx_r75J38RaTSj7uWdG0G9E,23509
165
- openlit-1.34.29.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
166
- openlit-1.34.29.dist-info/RECORD,,