ragaai-catalyst 2.1.4b5__py3-none-any.whl → 2.1.4b7__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.
- ragaai_catalyst/tracers/agentic_tracing/tracers/agent_tracer.py +4 -4
- ragaai_catalyst/tracers/agentic_tracing/tracers/base.py +83 -0
- ragaai_catalyst/tracers/agentic_tracing/tracers/llm_tracer.py +4 -4
- ragaai_catalyst/tracers/agentic_tracing/tracers/tool_tracer.py +4 -5
- ragaai_catalyst/tracers/llamaindex_callback.py +1 -1
- ragaai_catalyst/tracers/tracer.py +3 -2
- {ragaai_catalyst-2.1.4b5.dist-info → ragaai_catalyst-2.1.4b7.dist-info}/METADATA +1 -1
- {ragaai_catalyst-2.1.4b5.dist-info → ragaai_catalyst-2.1.4b7.dist-info}/RECORD +10 -10
- {ragaai_catalyst-2.1.4b5.dist-info → ragaai_catalyst-2.1.4b7.dist-info}/WHEEL +0 -0
- {ragaai_catalyst-2.1.4b5.dist-info → ragaai_catalyst-2.1.4b7.dist-info}/top_level.txt +0 -0
@@ -528,12 +528,12 @@ class AgentTracerMixin:
|
|
528
528
|
metrics = []
|
529
529
|
if name in self.span_attributes_dict:
|
530
530
|
raw_metrics = self.span_attributes_dict[name].metrics or []
|
531
|
-
# Check for duplicates
|
532
531
|
for metric in raw_metrics:
|
533
|
-
|
534
|
-
|
535
|
-
|
532
|
+
base_metric_name = metric["name"]
|
533
|
+
counter = sum(1 for x in self.visited_metrics if x.startswith(base_metric_name))
|
534
|
+
metric_name = f'{base_metric_name}_{counter}' if counter > 0 else base_metric_name
|
536
535
|
self.visited_metrics.append(metric_name)
|
536
|
+
metric["name"] = metric_name
|
537
537
|
metrics.append(metric)
|
538
538
|
|
539
539
|
component = {
|
@@ -9,6 +9,8 @@ from typing import List, Any
|
|
9
9
|
import uuid
|
10
10
|
import sys
|
11
11
|
import tempfile
|
12
|
+
import threading
|
13
|
+
import time
|
12
14
|
from ....ragaai_catalyst import RagaAICatalyst
|
13
15
|
from ..data.data_structure import (
|
14
16
|
Trace,
|
@@ -87,6 +89,14 @@ class BaseTracer:
|
|
87
89
|
self.file_tracker = TrackName()
|
88
90
|
self.span_attributes_dict = {}
|
89
91
|
|
92
|
+
self.interval_time = self.user_details['interval_time']
|
93
|
+
self.memory_usage_list = []
|
94
|
+
self.cpu_usage_list = []
|
95
|
+
self.disk_usage_list = []
|
96
|
+
self.network_usage_list = []
|
97
|
+
self.tracking_thread = None
|
98
|
+
self.tracking = False
|
99
|
+
|
90
100
|
def _get_system_info(self) -> SystemInfo:
|
91
101
|
# Get OS info
|
92
102
|
os_info = OSInfo(
|
@@ -158,8 +168,49 @@ class BaseTracer:
|
|
158
168
|
|
159
169
|
return Resources(cpu=cpu, memory=mem, disk=disk_resource, network=net)
|
160
170
|
|
171
|
+
def _track_memory_usage(self):
|
172
|
+
self.memory_usage_list = []
|
173
|
+
while self.tracking:
|
174
|
+
memory_usage = psutil.Process().memory_info().rss
|
175
|
+
self.memory_usage_list.append(memory_usage / (1024 * 1024)) # Convert to MB and append to the list
|
176
|
+
time.sleep(self.interval_time)
|
177
|
+
|
178
|
+
def _track_cpu_usage(self):
|
179
|
+
self.cpu_usage_list = []
|
180
|
+
while self.tracking:
|
181
|
+
cpu_usage = psutil.cpu_percent(interval=self.interval_time)
|
182
|
+
self.cpu_usage_list.append(cpu_usage)
|
183
|
+
time.sleep(self.interval_time)
|
184
|
+
|
185
|
+
def _track_disk_usage(self):
|
186
|
+
self.disk_usage_list = []
|
187
|
+
while self.tracking:
|
188
|
+
disk_io = psutil.disk_io_counters()
|
189
|
+
self.disk_usage_list.append({
|
190
|
+
'disk_read': disk_io.read_bytes / (1024 * 1024), # Convert to MB
|
191
|
+
'disk_write': disk_io.write_bytes / (1024 * 1024) # Convert to MB
|
192
|
+
})
|
193
|
+
time.sleep(self.interval_time)
|
194
|
+
|
195
|
+
def _track_network_usage(self):
|
196
|
+
self.network_usage_list = []
|
197
|
+
while self.tracking:
|
198
|
+
net_io = psutil.net_io_counters()
|
199
|
+
self.network_usage_list.append({
|
200
|
+
'uploads': net_io.bytes_sent / (1024 * 1024), # Convert to MB
|
201
|
+
'downloads': net_io.bytes_recv / (1024 * 1024) # Convert to MB
|
202
|
+
})
|
203
|
+
time.sleep(self.interval_time)
|
204
|
+
|
161
205
|
def start(self):
|
162
206
|
"""Initialize a new trace"""
|
207
|
+
self.tracking = True
|
208
|
+
self.tracking_thread = threading.Thread(target=self._track_memory_usage)
|
209
|
+
self.tracking_thread.start()
|
210
|
+
threading.Thread(target=self._track_cpu_usage).start()
|
211
|
+
threading.Thread(target=self._track_disk_usage).start()
|
212
|
+
threading.Thread(target=self._track_network_usage).start()
|
213
|
+
|
163
214
|
metadata = Metadata(
|
164
215
|
cost={},
|
165
216
|
tokens={},
|
@@ -198,6 +249,38 @@ class BaseTracer:
|
|
198
249
|
self.trace.data[0]["end_time"] = datetime.now().astimezone().isoformat()
|
199
250
|
self.trace.end_time = datetime.now().astimezone().isoformat()
|
200
251
|
|
252
|
+
#track memory usage
|
253
|
+
self.tracking = False
|
254
|
+
if self.tracking_thread is not None:
|
255
|
+
self.tracking_thread.join()
|
256
|
+
self.trace.metadata.resources.memory.values = self.memory_usage_list
|
257
|
+
|
258
|
+
#track cpu usage
|
259
|
+
self.trace.metadata.resources.cpu.values = self.cpu_usage_list
|
260
|
+
|
261
|
+
#track network and disk usage
|
262
|
+
network_upoloads, network_downloads = 0, 0
|
263
|
+
disk_read, disk_write = 0, 0
|
264
|
+
for network_usage, disk_usage in zip(self.network_usage_list, self.disk_usage_list):
|
265
|
+
network_upoloads += network_usage['uploads']
|
266
|
+
network_downloads += network_usage['downloads']
|
267
|
+
disk_read += disk_usage['disk_read']
|
268
|
+
disk_write += disk_usage['disk_write']
|
269
|
+
|
270
|
+
#track disk usage
|
271
|
+
self.trace.metadata.resources.disk.read = [disk_read / len(self.disk_usage_list)]
|
272
|
+
self.trace.metadata.resources.disk.write = [disk_write / len(self.disk_usage_list)]
|
273
|
+
|
274
|
+
#track network usage
|
275
|
+
self.trace.metadata.resources.network.uploads = [network_upoloads / len(self.network_usage_list)]
|
276
|
+
self.trace.metadata.resources.network.downloads = [network_downloads / len(self.network_usage_list)]
|
277
|
+
|
278
|
+
# update interval time
|
279
|
+
self.trace.metadata.resources.cpu.interval = float(self.interval_time)
|
280
|
+
self.trace.metadata.resources.memory.interval = float(self.interval_time)
|
281
|
+
self.trace.metadata.resources.disk.interval = float(self.interval_time)
|
282
|
+
self.trace.metadata.resources.network.interval = float(self.interval_time)
|
283
|
+
|
201
284
|
# Change span ids to int
|
202
285
|
self.trace = self._change_span_ids_to_int(self.trace)
|
203
286
|
self.trace = self._change_agent_input_output(self.trace)
|
@@ -364,12 +364,12 @@ class LLMTracerMixin:
|
|
364
364
|
metrics = []
|
365
365
|
if name in self.span_attributes_dict:
|
366
366
|
raw_metrics = self.span_attributes_dict[name].metrics or []
|
367
|
-
# Check for duplicates
|
368
367
|
for metric in raw_metrics:
|
369
|
-
|
370
|
-
|
371
|
-
|
368
|
+
base_metric_name = metric["name"]
|
369
|
+
counter = sum(1 for x in self.visited_metrics if x.startswith(base_metric_name))
|
370
|
+
metric_name = f'{base_metric_name}_{counter}' if counter > 0 else base_metric_name
|
372
371
|
self.visited_metrics.append(metric_name)
|
372
|
+
metric["name"] = metric_name
|
373
373
|
metrics.append(metric)
|
374
374
|
|
375
375
|
component = {
|
@@ -277,15 +277,14 @@ class ToolTracerMixin:
|
|
277
277
|
|
278
278
|
# metrics
|
279
279
|
metrics = []
|
280
|
-
metrics = []
|
281
280
|
if name in self.span_attributes_dict:
|
282
281
|
raw_metrics = self.span_attributes_dict[name].metrics or []
|
283
|
-
# Check for duplicates
|
284
282
|
for metric in raw_metrics:
|
285
|
-
|
286
|
-
|
287
|
-
|
283
|
+
base_metric_name = metric["name"]
|
284
|
+
counter = sum(1 for x in self.visited_metrics if x.startswith(base_metric_name))
|
285
|
+
metric_name = f'{base_metric_name}_{counter}' if counter > 0 else base_metric_name
|
288
286
|
self.visited_metrics.append(metric_name)
|
287
|
+
metric["name"] = metric_name
|
289
288
|
metrics.append(metric)
|
290
289
|
|
291
290
|
start_time = kwargs["start_time"]
|
@@ -220,7 +220,7 @@ class LlamaIndexTracer:
|
|
220
220
|
user_detail["trace_id"] = self._generate_trace_id()
|
221
221
|
metadata = user_detail["metadata"]
|
222
222
|
metadata["log_source"] = "llamaindex_tracer"
|
223
|
-
metadata["recorded_on"] = datetime.now().
|
223
|
+
metadata["recorded_on"] = datetime.now().isoformat()
|
224
224
|
user_detail["metadata"] = metadata
|
225
225
|
return user_detail
|
226
226
|
|
@@ -25,7 +25,6 @@ from ragaai_catalyst.tracers.agentic_tracing.utils.trace_utils import load_model
|
|
25
25
|
|
26
26
|
logger = logging.getLogger(__name__)
|
27
27
|
|
28
|
-
|
29
28
|
class Tracer(AgenticTracing):
|
30
29
|
NUM_PROJECTS = 100
|
31
30
|
TIMEOUT = 10
|
@@ -48,7 +47,8 @@ class Tracer(AgenticTracing):
|
|
48
47
|
'file_io':True,
|
49
48
|
'network':True,
|
50
49
|
'custom':True
|
51
|
-
}
|
50
|
+
},
|
51
|
+
interval_time=2,
|
52
52
|
# auto_instrumentation=True/False # to control automatic instrumentation of everything
|
53
53
|
|
54
54
|
):
|
@@ -70,6 +70,7 @@ class Tracer(AgenticTracing):
|
|
70
70
|
"project_name": project_name,
|
71
71
|
"project_id": None, # Will be set after project validation
|
72
72
|
"dataset_name": dataset_name,
|
73
|
+
"interval_time": interval_time,
|
73
74
|
"trace_name": trace_name if trace_name else f"trace_{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}",
|
74
75
|
"trace_user_detail": {"metadata": metadata} if metadata else {}
|
75
76
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ragaai_catalyst
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.4b7
|
4
4
|
Summary: RAGA AI CATALYST
|
5
5
|
Author-email: Kiran Scaria <kiran.scaria@raga.ai>, Kedar Gaikwad <kedar.gaikwad@raga.ai>, Dushyant Mahajan <dushyant.mahajan@raga.ai>, Siddhartha Kosti <siddhartha.kosti@raga.ai>, Ritika Goel <ritika.goel@raga.ai>, Vijay Chaurasia <vijay.chaurasia@raga.ai>
|
6
6
|
Requires-Python: <3.13,>=3.9
|
@@ -12,8 +12,8 @@ ragaai_catalyst/ragaai_catalyst.py,sha256=FdqMzwuQLqS2-3JJDsTQ8uh2itllOxfPrRUjb8
|
|
12
12
|
ragaai_catalyst/synthetic_data_generation.py,sha256=uDV9tNwto2xSkWg5XHXUvjErW-4P34CTrxaJpRfezyA,19250
|
13
13
|
ragaai_catalyst/utils.py,sha256=TlhEFwLyRU690HvANbyoRycR3nQ67lxVUQoUOfTPYQ0,3772
|
14
14
|
ragaai_catalyst/tracers/__init__.py,sha256=yxepo7iVjTNI_wFdk3Z6Ghu64SazVyszCPEHYrX5WQk,50
|
15
|
-
ragaai_catalyst/tracers/llamaindex_callback.py,sha256=
|
16
|
-
ragaai_catalyst/tracers/tracer.py,sha256=
|
15
|
+
ragaai_catalyst/tracers/llamaindex_callback.py,sha256=Qxq4khDwM3YmhPxjSVML8LTEmUNd0cgfOWwNGX6IyBw,14028
|
16
|
+
ragaai_catalyst/tracers/tracer.py,sha256=UX-01NYWcH2y4UW1W287Cn-jy760rgaFqu8llJbeMdg,15654
|
17
17
|
ragaai_catalyst/tracers/upload_traces.py,sha256=hs0PEmit3n3_uUqrdbwcBdyK5Nbkik3JQVwJMEwYTd4,4796
|
18
18
|
ragaai_catalyst/tracers/agentic_tracing/README.md,sha256=X4QwLb7-Jg7GQMIXj-SerZIgDETfw-7VgYlczOR8ZeQ,4508
|
19
19
|
ragaai_catalyst/tracers/agentic_tracing/__init__.py,sha256=yf6SKvOPSpH-9LiKaoLKXwqj5sez8F_5wkOb91yp0oE,260
|
@@ -26,14 +26,14 @@ ragaai_catalyst/tracers/agentic_tracing/tests/__init__.py,sha256=47DEQpj8HBSa-_T
|
|
26
26
|
ragaai_catalyst/tracers/agentic_tracing/tests/ai_travel_agent.py,sha256=S4rCcKzU_5SB62BYEbNn_1VbbTdG4396N8rdZ3ZNGcE,5654
|
27
27
|
ragaai_catalyst/tracers/agentic_tracing/tests/unique_decorator_test.py,sha256=Xk1cLzs-2A3dgyBwRRnCWs7Eubki40FVonwd433hPN8,4805
|
28
28
|
ragaai_catalyst/tracers/agentic_tracing/tracers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
|
-
ragaai_catalyst/tracers/agentic_tracing/tracers/agent_tracer.py,sha256=
|
30
|
-
ragaai_catalyst/tracers/agentic_tracing/tracers/base.py,sha256=
|
29
|
+
ragaai_catalyst/tracers/agentic_tracing/tracers/agent_tracer.py,sha256=aLiq5nPie5TT61QYtvAtvErsxjPFYiUxjayn5aCX1_k,25543
|
30
|
+
ragaai_catalyst/tracers/agentic_tracing/tracers/base.py,sha256=u2DX_BsMGsuJkWqN6ucxboMO8GnvOcArKJe5L08y-YI,35014
|
31
31
|
ragaai_catalyst/tracers/agentic_tracing/tracers/custom_tracer.py,sha256=uay8lU7T-CKsVu8KvWX31qfMqufK9S3Ive7XKo2Ksmk,12252
|
32
32
|
ragaai_catalyst/tracers/agentic_tracing/tracers/langgraph_tracer.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
-
ragaai_catalyst/tracers/agentic_tracing/tracers/llm_tracer.py,sha256=
|
33
|
+
ragaai_catalyst/tracers/agentic_tracing/tracers/llm_tracer.py,sha256=fn5qxb365GmQkJy_yZAY5TiiWRMFKPNJdYk8KFr8uWA,29343
|
34
34
|
ragaai_catalyst/tracers/agentic_tracing/tracers/main_tracer.py,sha256=nxUOQSyWBTnbsZfxmr1lje2OggqNf9fwtGUb-sBo6mI,15215
|
35
35
|
ragaai_catalyst/tracers/agentic_tracing/tracers/network_tracer.py,sha256=CviGiAg0W0krJxORMBDTosQytIoJDQ5RwU6xt_U_mOg,10408
|
36
|
-
ragaai_catalyst/tracers/agentic_tracing/tracers/tool_tracer.py,sha256=
|
36
|
+
ragaai_catalyst/tracers/agentic_tracing/tracers/tool_tracer.py,sha256=4h6epgRHPVRfTrCznwc6KPK6xevwBaZwE-q0Zj-4Kkk,12160
|
37
37
|
ragaai_catalyst/tracers/agentic_tracing/tracers/user_interaction_tracer.py,sha256=bhSUhNQCuJXKjgJAXhjKEYjnHMpYN90FSZdR84fNIKU,4614
|
38
38
|
ragaai_catalyst/tracers/agentic_tracing/upload/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
39
|
ragaai_catalyst/tracers/agentic_tracing/upload/upload_agentic_traces.py,sha256=1MDKXAAPzOEdxFKWWQrRgrmM3kz--DGXSywGXQmR3lQ,6041
|
@@ -60,7 +60,7 @@ ragaai_catalyst/tracers/instrumentators/llamaindex.py,sha256=SMrRlR4xM7k9HK43hak
|
|
60
60
|
ragaai_catalyst/tracers/instrumentators/openai.py,sha256=14R4KW9wQCR1xysLfsP_nxS7cqXrTPoD8En4MBAaZUU,379
|
61
61
|
ragaai_catalyst/tracers/utils/__init__.py,sha256=KeMaZtYaTojilpLv65qH08QmpYclfpacDA0U3wg6Ybw,64
|
62
62
|
ragaai_catalyst/tracers/utils/utils.py,sha256=ViygfJ7vZ7U0CTSA1lbxVloHp4NSlmfDzBRNCJuMhis,2374
|
63
|
-
ragaai_catalyst-2.1.
|
64
|
-
ragaai_catalyst-2.1.
|
65
|
-
ragaai_catalyst-2.1.
|
66
|
-
ragaai_catalyst-2.1.
|
63
|
+
ragaai_catalyst-2.1.4b7.dist-info/METADATA,sha256=ivt8Ahq71DIZMXQ2qXrtro3uEeywqK87vZi_6dgcvG0,12770
|
64
|
+
ragaai_catalyst-2.1.4b7.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
65
|
+
ragaai_catalyst-2.1.4b7.dist-info/top_level.txt,sha256=HpgsdRgEJMk8nqrU6qdCYk3di7MJkDL0B19lkc7dLfM,16
|
66
|
+
ragaai_catalyst-2.1.4b7.dist-info/RECORD,,
|
File without changes
|
File without changes
|