ragaai-catalyst 2.0.7.2__py3-none-any.whl → 2.0.7.2b0__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 (29) hide show
  1. ragaai_catalyst/evaluation.py +107 -153
  2. ragaai_catalyst/tracers/agentic_tracing/Untitled-1.json +660 -0
  3. ragaai_catalyst/tracers/agentic_tracing/__init__.py +3 -0
  4. ragaai_catalyst/tracers/agentic_tracing/agent_tracer.py +311 -0
  5. ragaai_catalyst/tracers/agentic_tracing/agentic_tracing.py +212 -0
  6. ragaai_catalyst/tracers/agentic_tracing/base.py +270 -0
  7. ragaai_catalyst/tracers/agentic_tracing/data_structure.py +239 -0
  8. ragaai_catalyst/tracers/agentic_tracing/llm_tracer.py +906 -0
  9. ragaai_catalyst/tracers/agentic_tracing/network_tracer.py +286 -0
  10. ragaai_catalyst/tracers/agentic_tracing/sample.py +197 -0
  11. ragaai_catalyst/tracers/agentic_tracing/tool_tracer.py +235 -0
  12. ragaai_catalyst/tracers/agentic_tracing/unique_decorator.py +221 -0
  13. ragaai_catalyst/tracers/agentic_tracing/unique_decorator_test.py +172 -0
  14. ragaai_catalyst/tracers/agentic_tracing/user_interaction_tracer.py +67 -0
  15. ragaai_catalyst/tracers/agentic_tracing/utils/__init__.py +3 -0
  16. ragaai_catalyst/tracers/agentic_tracing/utils/api_utils.py +18 -0
  17. ragaai_catalyst/tracers/agentic_tracing/utils/data_classes.py +61 -0
  18. ragaai_catalyst/tracers/agentic_tracing/utils/generic.py +32 -0
  19. ragaai_catalyst/tracers/agentic_tracing/utils/llm_utils.py +181 -0
  20. ragaai_catalyst/tracers/agentic_tracing/utils/model_costs.json +5946 -0
  21. ragaai_catalyst/tracers/agentic_tracing/utils/trace_utils.py +74 -0
  22. ragaai_catalyst/tracers/tracer.py +26 -4
  23. ragaai_catalyst/tracers/upload_traces.py +127 -0
  24. ragaai_catalyst-2.0.7.2b0.dist-info/METADATA +39 -0
  25. ragaai_catalyst-2.0.7.2b0.dist-info/RECORD +50 -0
  26. ragaai_catalyst-2.0.7.2.dist-info/METADATA +0 -386
  27. ragaai_catalyst-2.0.7.2.dist-info/RECORD +0 -29
  28. {ragaai_catalyst-2.0.7.2.dist-info → ragaai_catalyst-2.0.7.2b0.dist-info}/WHEEL +0 -0
  29. {ragaai_catalyst-2.0.7.2.dist-info → ragaai_catalyst-2.0.7.2b0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,74 @@
1
+ import json
2
+ import os
3
+ from importlib import resources
4
+ from dataclasses import asdict
5
+
6
+
7
+ def convert_usage_to_dict(usage):
8
+ # Initialize the token_usage dictionary with default values
9
+ token_usage = {
10
+ "input": 0,
11
+ "completion": 0,
12
+ "reasoning": 0, # Default reasoning tokens to 0 unless specified
13
+ }
14
+
15
+ if usage:
16
+ if isinstance(usage, dict):
17
+ # Access usage data as dictionary keys
18
+ token_usage["input"] = usage.get("prompt_tokens", 0)
19
+ token_usage["completion"] = usage.get("completion_tokens", 0)
20
+ # If reasoning tokens are provided, adjust accordingly
21
+ token_usage["reasoning"] = usage.get("reasoning_tokens", 0)
22
+ else:
23
+ # Handle the case where usage is not a dictionary
24
+ # This could be an object with attributes, or something else
25
+ try:
26
+ token_usage["input"] = getattr(usage, "prompt_tokens", 0)
27
+ token_usage["completion"] = getattr(usage, "completion_tokens", 0)
28
+ token_usage["reasoning"] = getattr(usage, "reasoning_tokens", 0)
29
+ except AttributeError:
30
+ # If attributes are not found, log or handle the error as needed
31
+ print(f"Warning: Unexpected usage type: {type(usage)}")
32
+
33
+ return token_usage
34
+
35
+
36
+ def calculate_cost(
37
+ token_usage,
38
+ input_cost_per_token=0.0,
39
+ output_cost_per_token=0.0,
40
+ reasoning_cost_per_token=0.0,
41
+ ):
42
+ input_tokens = token_usage.get("prompt_tokens", 0)
43
+ output_tokens = token_usage.get("completion_tokens", 0)
44
+ reasoning_tokens = token_usage.get("reasoning_tokens", 0)
45
+
46
+ input_cost = input_tokens * input_cost_per_token
47
+ output_cost = output_tokens * output_cost_per_token
48
+ reasoning_cost = reasoning_tokens * reasoning_cost_per_token
49
+
50
+ total_cost = input_cost + output_cost + reasoning_cost
51
+
52
+ return {
53
+ "input": input_cost,
54
+ "completion": output_cost,
55
+ "reasoning": reasoning_cost,
56
+ "total": total_cost,
57
+ }
58
+
59
+
60
+ def load_model_costs():
61
+ try:
62
+ current_dir = os.path.dirname(os.path.abspath(__file__))
63
+ model_costs_path = os.path.join(current_dir, "model_costs.json")
64
+ with open(model_costs_path, "r") as file:
65
+ return json.load(file)
66
+ except FileNotFoundError:
67
+ with resources.open_text("utils", "model_costs.json") as file:
68
+ return json.load(file)
69
+
70
+
71
+ def log_event(event_data, log_file_path):
72
+ event_data = asdict(event_data)
73
+ with open(log_file_path, "a") as f:
74
+ f.write(json.dumps(event_data) + "\n")
@@ -19,11 +19,13 @@ from .instrumentators import (
19
19
  from .utils import get_unique_key
20
20
  # from .llamaindex_callback import LlamaIndexTracer
21
21
  from ..ragaai_catalyst import RagaAICatalyst
22
+ from .agentic_tracing.agentic_tracing import AgenticTracing
23
+ from .agentic_tracing.llm_tracer import LLMTracerMixin
22
24
 
23
25
  logger = logging.getLogger(__name__)
24
26
 
25
27
 
26
- class Tracer:
28
+ class Tracer(AgenticTracing):
27
29
  NUM_PROJECTS = 100
28
30
  TIMEOUT = 10
29
31
  def __init__(
@@ -41,6 +43,7 @@ class Tracer:
41
43
 
42
44
  Args:
43
45
  project_name (str): The name of the project.
46
+ dataset_name (str): The name of the dataset.
44
47
  tracer_type (str, optional): The type of tracer. Defaults to None.
45
48
  pipeline (dict, optional): The pipeline configuration. Defaults to None.
46
49
  metadata (dict, optional): The metadata. Defaults to None.
@@ -50,16 +53,28 @@ class Tracer:
50
53
  Returns:
51
54
  None
52
55
  """
56
+ # Set auto_instrument_llm to True to enable automatic LLM tracing
57
+ user_detail = {
58
+ "project_name": project_name,
59
+ "project_id": None, # Will be set after project validation
60
+ "dataset_name": dataset_name,
61
+ "trace_user_detail": {"metadata": metadata} if metadata else {}
62
+ }
63
+ super().__init__(user_detail=user_detail, auto_instrument_llm=True)
64
+ self.is_active = True
53
65
  self.project_name = project_name
54
66
  self.dataset_name = dataset_name
55
67
  self.tracer_type = tracer_type
56
68
  self.metadata = self._improve_metadata(metadata, tracer_type)
69
+ self.metadata["total_cost"] = 0.0
70
+ self.metadata["total_tokens"] = 0
57
71
  self.pipeline = pipeline
58
72
  self.description = description
59
73
  self.upload_timeout = upload_timeout
60
74
  self.base_url = f"{RagaAICatalyst.BASE_URL}"
61
75
  self.timeout = 10
62
76
  self.num_projects = 100
77
+ self.start_time = datetime.datetime.now(datetime.timezone.utc)
63
78
 
64
79
  try:
65
80
  response = requests.get(
@@ -81,6 +96,7 @@ class Tracer:
81
96
  self.project_id = [
82
97
  project["id"] for project in response.json()["data"]["content"] if project["name"] == project_name
83
98
  ][0]
99
+ self._pass_user_data()
84
100
 
85
101
  except requests.exceptions.RequestException as e:
86
102
  logger.error(f"Failed to retrieve projects list: {e}")
@@ -98,7 +114,8 @@ class Tracer:
98
114
  from .llamaindex_callback import LlamaIndexTracer
99
115
 
100
116
  else:
101
- raise ValueError (f"Currently supported tracer types are 'langchain' and 'llamaindex'.")
117
+ self._upload_task = None
118
+ # raise ValueError (f"Currently supported tracer types are 'langchain' and 'llamaindex'.")
102
119
 
103
120
  def _improve_metadata(self, metadata, tracer_type):
104
121
  if metadata is None:
@@ -157,7 +174,9 @@ class Tracer:
157
174
  elif self.tracer_type == "llamaindex":
158
175
  from .llamaindex_callback import LlamaIndexTracer
159
176
  return LlamaIndexTracer(self._pass_user_data()).start()
160
-
177
+ else:
178
+ super().start()
179
+ return self
161
180
 
162
181
  def stop(self):
163
182
  """Stop the tracer and initiate trace upload."""
@@ -172,7 +191,9 @@ class Tracer:
172
191
  return "Trace upload initiated. Use get_upload_status() to check the status."
173
192
  elif self.tracer_type == "llamaindex":
174
193
  from .llamaindex_callback import LlamaIndexTracer
175
- return LlamaIndexTracer().stop()
194
+ return LlamaIndexTracer(self._pass_user_data()).stop()
195
+ else:
196
+ super().stop()
176
197
 
177
198
  def get_upload_status(self):
178
199
  """Check the status of the trace upload."""
@@ -262,6 +283,7 @@ class Tracer:
262
283
  # Reset instrumentation flag
263
284
  self.is_instrumented = False
264
285
  # Note: We're not resetting all attributes here to allow for upload status checking
286
+
265
287
  def _pass_user_data(self):
266
288
  return {"project_name":self.project_name,
267
289
  "project_id": self.project_id,
@@ -0,0 +1,127 @@
1
+ import requests
2
+ import json
3
+ import os
4
+ from datetime import datetime
5
+
6
+
7
+ class UploadTraces:
8
+ def __init__(self,
9
+ json_file_path,
10
+ project_name,
11
+ project_id,
12
+ dataset_name,
13
+ user_detail,
14
+ base_url):
15
+ self.json_file_path = json_file_path
16
+ self.project_name = project_name
17
+ self.project_id = project_id
18
+ self.dataset_name = dataset_name
19
+ self.user_detail = user_detail
20
+ self.base_url = base_url
21
+ self.timeout = 10
22
+
23
+ def _create_dataset_schema_with_trace(self):
24
+ SCHEMA_MAPPING_NEW = {
25
+ "trace_id": {"columnType": "traceId"},
26
+ "trace_uri": {"columnType": "traceUri"},
27
+ "prompt": {"columnType": "prompt"},
28
+ "response":{"columnType": "response"},
29
+ "context": {"columnType": "context"},
30
+ "llm_model": {"columnType":"pipeline"},
31
+ "recorded_on": {"columnType": "metadata"},
32
+ "embed_model": {"columnType":"pipeline"},
33
+ "log_source": {"columnType": "metadata"},
34
+ "vector_store":{"columnType":"pipeline"},
35
+ "feedback": {"columnType":"feedBack"}
36
+ }
37
+ def make_request():
38
+ headers = {
39
+ "Content-Type": "application/json",
40
+ "Authorization": f"Bearer {os.getenv('RAGAAI_CATALYST_TOKEN')}",
41
+ "X-Project-Name": self.project_name,
42
+ }
43
+ payload = json.dumps({
44
+ "datasetName": self.dataset_name,
45
+ "schemaMapping": SCHEMA_MAPPING_NEW,
46
+ "traceFolderUrl": None,
47
+ })
48
+ response = requests.request("POST",
49
+ f"{self.base_url}/v1/llm/dataset/logs",
50
+ headers=headers,
51
+ data=payload,
52
+ timeout=self.timeout
53
+ )
54
+
55
+ return response
56
+
57
+ response = make_request()
58
+
59
+ if response.status_code == 401:
60
+ # get_token() # Fetch a new token and set it in the environment
61
+ response = make_request() # Retry the request
62
+ if response.status_code != 200:
63
+ return response.status_code
64
+ return response.status_code
65
+
66
+ def _get_presigned_url(self):
67
+ payload = json.dumps({
68
+ "datasetName": self.dataset_name,
69
+ "numFiles": 1,
70
+ })
71
+ headers = {
72
+ "Content-Type": "application/json",
73
+ "Authorization": f"Bearer {os.getenv('RAGAAI_CATALYST_TOKEN')}",
74
+ "X-Project-Name": self.project_name,
75
+ }
76
+
77
+ response = requests.request("GET",
78
+ f"{self.base_url}/v1/llm/presigned-url",
79
+ headers=headers,
80
+ data=payload,
81
+ timeout=self.timeout)
82
+ if response.status_code == 200:
83
+ presignedUrls = response.json()["data"]["presignedUrls"][0]
84
+ return presignedUrls
85
+
86
+ def _put_presigned_url(self, presignedUrl, filename):
87
+ headers = {
88
+ "Content-Type": "application/json",
89
+ }
90
+
91
+ if "blob.core.windows.net" in presignedUrl: # Azure
92
+ headers["x-ms-blob-type"] = "BlockBlob"
93
+ print(f"Uploading traces...")
94
+ with open(filename) as f:
95
+ payload = f.read().replace("\n", "").replace("\r", "").encode()
96
+
97
+
98
+ response = requests.request("PUT",
99
+ presignedUrl,
100
+ headers=headers,
101
+ data=payload,
102
+ timeout=self.timeout)
103
+ if response.status_code != 200 or response.status_code != 201:
104
+ return response, response.status_code
105
+
106
+ def _insert_traces(self, presignedUrl):
107
+ headers = {
108
+ "Authorization": f"Bearer {os.getenv('RAGAAI_CATALYST_TOKEN')}",
109
+ "Content-Type": "application/json",
110
+ "X-Project-Name": self.project_name,
111
+ }
112
+ payload = json.dumps({
113
+ "datasetName": self.dataset_name,
114
+ "presignedUrl": presignedUrl,
115
+ })
116
+ response = requests.request("POST",
117
+ f"{self.base_url}/v1/llm/insert/trace",
118
+ headers=headers,
119
+ data=payload,
120
+ timeout=self.timeout)
121
+
122
+ def upload_traces(self):
123
+ self._create_dataset_schema_with_trace()
124
+ presignedUrl = self._get_presigned_url()
125
+ self._put_presigned_url(presignedUrl, self.json_file_path)
126
+ self._insert_traces(presignedUrl)
127
+ print("Traces uplaoded")
@@ -0,0 +1,39 @@
1
+ Metadata-Version: 2.1
2
+ Name: ragaai_catalyst
3
+ Version: 2.0.7.2b0
4
+ Summary: RAGA AI CATALYST
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
+ Requires-Python: >=3.9
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: aiohttp>=3.10.2
9
+ Requires-Dist: opentelemetry-api==1.25.0
10
+ Requires-Dist: opentelemetry-sdk==1.25.0
11
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.25.0
12
+ Requires-Dist: opentelemetry-instrumentation==0.46b0
13
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.46b0
14
+ Requires-Dist: opentelemetry-instrumentation-asgi==0.46b0
15
+ Requires-Dist: opentelemetry-semantic-conventions==0.46b0
16
+ Requires-Dist: opentelemetry-util-http==0.46b0
17
+ Requires-Dist: opentelemetry-instrumentation-langchain~=0.24.0
18
+ Requires-Dist: opentelemetry-instrumentation-openai~=0.24.0
19
+ Requires-Dist: langchain-core>=0.2.11
20
+ Requires-Dist: langchain>=0.2.11
21
+ Requires-Dist: openai>=1.57.0
22
+ Requires-Dist: pandas>=2.1.1
23
+ Requires-Dist: groq>=0.11.0
24
+ Requires-Dist: PyPDF2>=3.0.1
25
+ Requires-Dist: google-generativeai>=0.8.2
26
+ Requires-Dist: Markdown>=3.7
27
+ Requires-Dist: litellm==1.51.1
28
+ Requires-Dist: tenacity==8.3.0
29
+ Requires-Dist: tqdm>=4.66.5
30
+ Requires-Dist: llama-index==0.10.0
31
+ Requires-Dist: pyopenssl==24.2.1
32
+ Requires-Dist: psutil>=5.9.5
33
+ Provides-Extra: dev
34
+ Requires-Dist: pytest; extra == "dev"
35
+ Requires-Dist: pytest-cov; extra == "dev"
36
+ Requires-Dist: black; extra == "dev"
37
+ Requires-Dist: isort; extra == "dev"
38
+ Requires-Dist: mypy; extra == "dev"
39
+ Requires-Dist: flake8; extra == "dev"
@@ -0,0 +1,50 @@
1
+ ragaai_catalyst/__init__.py,sha256=BdIJ_UUre0uEnRTsLw_hE0C0muWk6XWNZqdVOel22R4,537
2
+ ragaai_catalyst/_version.py,sha256=JKt9KaVNOMVeGs8ojO6LvIZr7ZkMzNN-gCcvryy4x8E,460
3
+ ragaai_catalyst/dataset.py,sha256=j_vu3Xkp_8qYW0J9Qnn53Uyh98MsugqYl5zxhOv9EOg,10731
4
+ ragaai_catalyst/evaluation.py,sha256=xrJ8kxw-fGNJgHsBTJCdH4jrxwzI6jpzUIQ9po-V4kc,20327
5
+ ragaai_catalyst/experiment.py,sha256=8KvqgJg5JVnt9ghhGDJvdb4mN7ETBX_E5gNxBT0Nsn8,19010
6
+ ragaai_catalyst/guard_executor.py,sha256=llPbE3DyVtrybojXknzBZj8-dtUrGBQwi9-ZiPJxGRo,3762
7
+ ragaai_catalyst/guardrails_manager.py,sha256=DILMOAASK57FH9BLq_8yC1AQzRJ8McMFLwCXgYwNAd4,11904
8
+ ragaai_catalyst/internal_api_completion.py,sha256=DdICI5yfEudiOAIC8L4oxH0Qz7kX-BZCdo9IWsi2gNo,2965
9
+ ragaai_catalyst/prompt_manager.py,sha256=W8ypramzOprrJ7-22d5vkBXIuIQ8v9XAzKDGxKsTK28,16550
10
+ ragaai_catalyst/proxy_call.py,sha256=CHxldeceZUaLU-to_hs_Kf1z_b2vHMssLS_cOBedu78,5499
11
+ ragaai_catalyst/ragaai_catalyst.py,sha256=FdqMzwuQLqS2-3JJDsTQ8uh2itllOxfPrRUjb8Kwmn0,17428
12
+ ragaai_catalyst/synthetic_data_generation.py,sha256=uDV9tNwto2xSkWg5XHXUvjErW-4P34CTrxaJpRfezyA,19250
13
+ ragaai_catalyst/utils.py,sha256=TlhEFwLyRU690HvANbyoRycR3nQ67lxVUQoUOfTPYQ0,3772
14
+ ragaai_catalyst/tracers/__init__.py,sha256=NppmJhD3sQ5R1q6teaZLS7rULj08Gb6JT8XiPRIe_B0,49
15
+ ragaai_catalyst/tracers/llamaindex_callback.py,sha256=vPE7MieKjfwLrLUnnPs20Df0xNYqoCCj-Mt2NbiuiKU,14023
16
+ ragaai_catalyst/tracers/tracer.py,sha256=F7LiIUKj1mCl9tl_xwJOWLP-80ICuw5KVBsismLpOM0,12280
17
+ ragaai_catalyst/tracers/upload_traces.py,sha256=hs0PEmit3n3_uUqrdbwcBdyK5Nbkik3JQVwJMEwYTd4,4796
18
+ ragaai_catalyst/tracers/agentic_tracing/Untitled-1.json,sha256=kqwtLzflk342U7Tvjf5Bari9m3I0dVMVU7wNShDwuW4,43639
19
+ ragaai_catalyst/tracers/agentic_tracing/__init__.py,sha256=6QyQI8P7aNFHTantNJOP1ZdSNrDKBLhlg_gGNj7tm1c,73
20
+ ragaai_catalyst/tracers/agentic_tracing/agent_tracer.py,sha256=n0fuZOguYScuRoRijz-16okfh54HWlpbTmt133msi64,11815
21
+ ragaai_catalyst/tracers/agentic_tracing/agentic_tracing.py,sha256=XvoOqEJjqzhE5Xa8mJ2knik6qrecxd1-kRZAFl7P0FI,8680
22
+ ragaai_catalyst/tracers/agentic_tracing/base.py,sha256=4YWt9Sdrs4IZoJldBN_tl0DCu4zLLEYyDoLvs36oFiw,9955
23
+ ragaai_catalyst/tracers/agentic_tracing/data_structure.py,sha256=YRZFTzenIIPJ-eDblnUUjY1QeECu6DozfhCgmj38n9s,4696
24
+ ragaai_catalyst/tracers/agentic_tracing/llm_tracer.py,sha256=hxvUc4CYeVncgzJThykyg8Dd98lgogSGbMch8pjF5C8,36766
25
+ ragaai_catalyst/tracers/agentic_tracing/network_tracer.py,sha256=6FTA15xMnum9omM_0Jd9cMIuWdKu1gR5Tc8fOXAkP8E,10068
26
+ ragaai_catalyst/tracers/agentic_tracing/sample.py,sha256=S4rCcKzU_5SB62BYEbNn_1VbbTdG4396N8rdZ3ZNGcE,5654
27
+ ragaai_catalyst/tracers/agentic_tracing/tool_tracer.py,sha256=O9HJ-lOTK5WYyv6u27W0pvQp4vfsuZGYDua6Ev2zzFc,8407
28
+ ragaai_catalyst/tracers/agentic_tracing/unique_decorator.py,sha256=WtcALkwS8dsJhqc1641toyH1lVwWyzFwRLBKY56XKJI,7448
29
+ ragaai_catalyst/tracers/agentic_tracing/unique_decorator_test.py,sha256=Xk1cLzs-2A3dgyBwRRnCWs7Eubki40FVonwd433hPN8,4805
30
+ ragaai_catalyst/tracers/agentic_tracing/user_interaction_tracer.py,sha256=7Y-31rcoJ4YeZn9gSnqJgujGpRX6rKAkq6Y0KDIMTOo,2085
31
+ ragaai_catalyst/tracers/agentic_tracing/utils/__init__.py,sha256=XdB3X_ufe4RVvGorxSqAiB9dYv4UD7Hvvuw3bsDUppY,60
32
+ ragaai_catalyst/tracers/agentic_tracing/utils/api_utils.py,sha256=JyNCbfpW-w4O9CjtemTqmor2Rh1WGpQwhRaDSRmBxw8,689
33
+ ragaai_catalyst/tracers/agentic_tracing/utils/data_classes.py,sha256=gFOadWzUORETaH3Y_HerHXs_aVFEt5ry2NQ36domW58,1267
34
+ ragaai_catalyst/tracers/agentic_tracing/utils/generic.py,sha256=WwXT01xmp8MSr7KinuDCSK9a1ifpLcT7ajFkvYviG_A,1190
35
+ ragaai_catalyst/tracers/agentic_tracing/utils/llm_utils.py,sha256=noCDrF1tG-n1LSdooq_-kkBw8z35YvsiGGhcy1-yL4M,5810
36
+ ragaai_catalyst/tracers/agentic_tracing/utils/model_costs.json,sha256=5jvhriJJkWT-nz8S-KsgsjOn9g7D2hKYob8URl9FHOk,215176
37
+ ragaai_catalyst/tracers/agentic_tracing/utils/trace_utils.py,sha256=9cFzfFqIA968bUG7LNTjdN7zbdEXUtcvRKg883ade2c,2586
38
+ ragaai_catalyst/tracers/exporters/__init__.py,sha256=kVA8zp05h3phu4e-iHSlnznp_PzMRczB7LphSsZgUjg,138
39
+ ragaai_catalyst/tracers/exporters/file_span_exporter.py,sha256=RgGteu-NVGprXKkynvyIO5yOjpbtA41R3W_NzCjnkwE,6445
40
+ ragaai_catalyst/tracers/exporters/raga_exporter.py,sha256=rQ5Wj71f2Ke3qLlV8KiWCskbGBR-ia_hlzDx86rPrEo,18188
41
+ ragaai_catalyst/tracers/instrumentators/__init__.py,sha256=FgnMQupoRTzmVsG9YKsLQera2Pfs-AluZv8CxwavoyQ,253
42
+ ragaai_catalyst/tracers/instrumentators/langchain.py,sha256=yMN0qVF0pUVk6R5M1vJoUXezDo1ejs4klCFRlE8x4vE,574
43
+ ragaai_catalyst/tracers/instrumentators/llamaindex.py,sha256=SMrRlR4xM7k9HK43hakE8rkrWHxMlmtmWD-AX6TeByc,416
44
+ ragaai_catalyst/tracers/instrumentators/openai.py,sha256=14R4KW9wQCR1xysLfsP_nxS7cqXrTPoD8En4MBAaZUU,379
45
+ ragaai_catalyst/tracers/utils/__init__.py,sha256=KeMaZtYaTojilpLv65qH08QmpYclfpacDA0U3wg6Ybw,64
46
+ ragaai_catalyst/tracers/utils/utils.py,sha256=ViygfJ7vZ7U0CTSA1lbxVloHp4NSlmfDzBRNCJuMhis,2374
47
+ ragaai_catalyst-2.0.7.2b0.dist-info/METADATA,sha256=dBXbhc2TWIyfwewQ2tmlnEcu8DU6hOyZVIPX22Gl-6w,1677
48
+ ragaai_catalyst-2.0.7.2b0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
49
+ ragaai_catalyst-2.0.7.2b0.dist-info/top_level.txt,sha256=HpgsdRgEJMk8nqrU6qdCYk3di7MJkDL0B19lkc7dLfM,16
50
+ ragaai_catalyst-2.0.7.2b0.dist-info/RECORD,,