ragaai-catalyst 2.1.7.5b2__py3-none-any.whl → 2.1.7.5b4__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/dataset.py +4 -1
- ragaai_catalyst/evaluation.py +2 -2
- ragaai_catalyst/ragaai_catalyst.py +156 -54
- ragaai_catalyst/tracers/agentic_tracing/upload/upload_agentic_traces.py +18 -1
- ragaai_catalyst/tracers/agentic_tracing/upload/upload_code.py +14 -0
- ragaai_catalyst/tracers/tracer.py +44 -1
- {ragaai_catalyst-2.1.7.5b2.dist-info → ragaai_catalyst-2.1.7.5b4.dist-info}/METADATA +1 -1
- {ragaai_catalyst-2.1.7.5b2.dist-info → ragaai_catalyst-2.1.7.5b4.dist-info}/RECORD +11 -11
- {ragaai_catalyst-2.1.7.5b2.dist-info → ragaai_catalyst-2.1.7.5b4.dist-info}/WHEEL +1 -1
- {ragaai_catalyst-2.1.7.5b2.dist-info → ragaai_catalyst-2.1.7.5b4.dist-info}/licenses/LICENSE +0 -0
- {ragaai_catalyst-2.1.7.5b2.dist-info → ragaai_catalyst-2.1.7.5b4.dist-info}/top_level.txt +0 -0
ragaai_catalyst/dataset.py
CHANGED
@@ -257,7 +257,10 @@ class Dataset:
|
|
257
257
|
def generate_schema(mapping):
|
258
258
|
result = {}
|
259
259
|
for column, schema_element in mapping.items():
|
260
|
-
|
260
|
+
if isinstance(schema_element, dict):
|
261
|
+
result[column] = schema_element
|
262
|
+
else:
|
263
|
+
result[column] = {"columnType": schema_element}
|
261
264
|
return result
|
262
265
|
|
263
266
|
try:
|
ragaai_catalyst/evaluation.py
CHANGED
@@ -171,7 +171,7 @@ class Evaluation:
|
|
171
171
|
user_dataset_columns = [item["displayName"] for item in user_dataset_schema]
|
172
172
|
variableName = None
|
173
173
|
for key, val in schema_mapping.items():
|
174
|
-
if "".join(val.split("_")).lower()==schemaName:
|
174
|
+
if val==schemaName: #"".join(val.split("_")).lower()==schemaName or val.lower()==schemaName:
|
175
175
|
if key in user_dataset_columns:
|
176
176
|
variableName=key
|
177
177
|
else:
|
@@ -198,7 +198,7 @@ class Evaluation:
|
|
198
198
|
|
199
199
|
for field in requiredFields:
|
200
200
|
schemaName = field["name"]
|
201
|
-
variableName = self._get_variablename_from_user_schema_mapping(schemaName
|
201
|
+
variableName = self._get_variablename_from_user_schema_mapping(schemaName, metric_name, schema_mapping, metric_to_evaluate)
|
202
202
|
mapping.append({"schemaName": schemaName, "variableName": variableName})
|
203
203
|
return mapping
|
204
204
|
|
@@ -2,6 +2,7 @@ import os
|
|
2
2
|
import logging
|
3
3
|
import requests
|
4
4
|
import time
|
5
|
+
import threading
|
5
6
|
from typing import Dict, Optional, Union
|
6
7
|
import re
|
7
8
|
logger = logging.getLogger("RagaAICatalyst")
|
@@ -12,6 +13,7 @@ logging_level = (
|
|
12
13
|
class RagaAICatalyst:
|
13
14
|
BASE_URL = None
|
14
15
|
TIMEOUT = 10 # Default timeout in seconds
|
16
|
+
TOKEN_EXPIRY_TIME = 6 # Default token expiration time (6 hours in hours)
|
15
17
|
|
16
18
|
def __init__(
|
17
19
|
self,
|
@@ -19,6 +21,7 @@ class RagaAICatalyst:
|
|
19
21
|
secret_key,
|
20
22
|
api_keys: Optional[Dict[str, str]] = None,
|
21
23
|
base_url: Optional[str] = None,
|
24
|
+
token_expiry_time: Optional[float] = 6,
|
22
25
|
):
|
23
26
|
"""
|
24
27
|
Initializes a new instance of the RagaAICatalyst class.
|
@@ -28,6 +31,7 @@ class RagaAICatalyst:
|
|
28
31
|
secret_key (str): The secret key for the RagaAICatalyst.
|
29
32
|
api_keys (Optional[Dict[str, str]]): A dictionary of API keys for different services. Defaults to None.
|
30
33
|
base_url (Optional[str]): The base URL for the RagaAICatalyst API. Defaults to None.
|
34
|
+
token_expiry_time (Optional[float]): The time in hours before the token expires. Defaults to 0.1 hours.
|
31
35
|
|
32
36
|
Raises:
|
33
37
|
ValueError: If the RAGAAI_CATALYST_ACCESS_KEY and RAGAAI_CATALYST_SECRET_KEY environment variables are not set.
|
@@ -49,6 +53,14 @@ class RagaAICatalyst:
|
|
49
53
|
access_key, secret_key
|
50
54
|
)
|
51
55
|
|
56
|
+
# Initialize token management
|
57
|
+
self._token_expiry = None
|
58
|
+
self._token_refresh_lock = threading.Lock()
|
59
|
+
self._refresh_thread = None
|
60
|
+
|
61
|
+
# Set token expiration time (convert hours to seconds)
|
62
|
+
RagaAICatalyst.TOKEN_EXPIRY_TIME = token_expiry_time * 60 * 60
|
63
|
+
|
52
64
|
RagaAICatalyst.BASE_URL = (
|
53
65
|
os.getenv("RAGAAI_CATALYST_BASE_URL")
|
54
66
|
if os.getenv("RAGAAI_CATALYST_BASE_URL")
|
@@ -143,78 +155,168 @@ class RagaAICatalyst:
|
|
143
155
|
"""Get the API key for a specific service."""
|
144
156
|
return self.api_keys.get(service)
|
145
157
|
|
146
|
-
|
147
|
-
|
158
|
+
# Token expiration time is now configurable via the token_expiry_time parameter
|
159
|
+
# Default is 6 hours, but can be changed to 23 hours or any other value
|
160
|
+
|
161
|
+
def _get_credentials(self) -> tuple[str, str]:
|
162
|
+
"""Get access key and secret key from instance or environment."""
|
163
|
+
access_key = self.access_key or os.getenv("RAGAAI_CATALYST_ACCESS_KEY")
|
164
|
+
secret_key = self.secret_key or os.getenv("RAGAAI_CATALYST_SECRET_KEY")
|
165
|
+
return access_key, secret_key
|
166
|
+
|
167
|
+
def _refresh_token_async(self):
|
168
|
+
"""Refresh token in background thread."""
|
169
|
+
try:
|
170
|
+
self.get_token(force_refresh=True)
|
171
|
+
except Exception as e:
|
172
|
+
logger.error(f"Background token refresh failed: {str(e)}")
|
173
|
+
|
174
|
+
def _schedule_token_refresh(self):
|
175
|
+
"""Schedule a token refresh to happen 20 seconds before expiration."""
|
176
|
+
if not self._token_expiry:
|
177
|
+
return
|
178
|
+
|
179
|
+
# Calculate when to refresh (20 seconds before expiration)
|
180
|
+
current_time = time.time()
|
181
|
+
refresh_buffer = min(20, RagaAICatalyst.TOKEN_EXPIRY_TIME * 0.05) # 20 seconds or 5% of expiry time, whichever is smaller
|
182
|
+
time_until_refresh = max(self._token_expiry - current_time - refresh_buffer, 1) # At least 1 second
|
183
|
+
|
184
|
+
def delayed_refresh():
|
185
|
+
# Sleep until it's time to refresh
|
186
|
+
time.sleep(time_until_refresh)
|
187
|
+
logger.debug(f"Scheduled token refresh triggered")
|
188
|
+
self._refresh_token_async()
|
189
|
+
|
190
|
+
# Start a new thread for the delayed refresh
|
191
|
+
if not self._refresh_thread or not self._refresh_thread.is_alive():
|
192
|
+
self._refresh_thread = threading.Thread(target=delayed_refresh)
|
193
|
+
self._refresh_thread.daemon = True
|
194
|
+
self._refresh_thread.start()
|
195
|
+
logger.debug(f"Token refresh scheduled in {time_until_refresh:.1f} seconds")
|
196
|
+
|
197
|
+
def get_token(self, force_refresh=False) -> Union[str, None]:
|
148
198
|
"""
|
149
|
-
Retrieves a token
|
199
|
+
Retrieves or refreshes a token using the provided credentials.
|
200
|
+
|
201
|
+
Args:
|
202
|
+
force_refresh (bool): If True, forces a token refresh regardless of expiration.
|
150
203
|
|
151
204
|
Returns:
|
152
205
|
- A string representing the token if successful.
|
153
|
-
- None if
|
154
|
-
|
155
|
-
Raises:
|
156
|
-
- requests.exceptions.HTTPError: If there is an HTTP error while retrieving the token.
|
157
|
-
- requests.exceptions.RequestException: If there is an error while retrieving the token.
|
158
|
-
- ValueError: If there is a JSON decoding error or if authentication fails.
|
159
|
-
- Exception: If there is an unexpected error while retrieving the token.
|
206
|
+
- None if credentials are not set or if there is an error.
|
160
207
|
"""
|
161
|
-
|
162
|
-
|
208
|
+
with self._token_refresh_lock:
|
209
|
+
current_token = os.getenv("RAGAAI_CATALYST_TOKEN")
|
210
|
+
current_time = time.time()
|
163
211
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
)
|
168
|
-
return None
|
212
|
+
# Check if we need to refresh the token
|
213
|
+
if not force_refresh and current_token and self._token_expiry and current_time < self._token_expiry:
|
214
|
+
return current_token
|
169
215
|
|
170
|
-
|
171
|
-
|
216
|
+
access_key, secret_key = self._get_credentials()
|
217
|
+
if not access_key or not secret_key:
|
218
|
+
logger.error("Access key or secret key is not set")
|
219
|
+
return None
|
172
220
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
221
|
+
headers = {"Content-Type": "application/json"}
|
222
|
+
json_data = {"accessKey": access_key, "secretKey": secret_key}
|
223
|
+
|
224
|
+
start_time = time.time()
|
225
|
+
endpoint = f"{self.BASE_URL}/token"
|
226
|
+
response = requests.post(
|
227
|
+
endpoint,
|
228
|
+
headers=headers,
|
229
|
+
json=json_data,
|
230
|
+
timeout=self.TIMEOUT,
|
231
|
+
)
|
232
|
+
elapsed_ms = (time.time() - start_time) * 1000
|
233
|
+
logger.debug(
|
234
|
+
f"API Call: [POST] {endpoint} | Status: {response.status_code} | Time: {elapsed_ms:.2f}ms")
|
184
235
|
|
185
|
-
|
186
|
-
|
236
|
+
# Handle specific status codes before raising an error
|
237
|
+
if response.status_code == 400:
|
238
|
+
token_response = response.json()
|
239
|
+
if token_response.get("message") == "Please enter valid credentials":
|
240
|
+
raise Exception(
|
241
|
+
"Authentication failed. Invalid credentials provided. Please check your Access key and Secret key. \nTo view or create new keys, navigate to Settings -> Authenticate in the RagaAI Catalyst dashboard."
|
242
|
+
)
|
243
|
+
|
244
|
+
response.raise_for_status()
|
187
245
|
token_response = response.json()
|
188
|
-
if token_response.get("message") == "Please enter valid credentials":
|
189
|
-
raise Exception(
|
190
|
-
"Authentication failed. Invalid credentials provided. Please check your Access key and Secret key. \nTo view or create new keys, navigate to Settings -> Authenticate in the RagaAI Catalyst dashboard."
|
191
|
-
)
|
192
246
|
|
193
|
-
|
247
|
+
if not token_response.get("success", False):
|
248
|
+
logger.error(
|
249
|
+
"Token retrieval was not successful: %s",
|
250
|
+
token_response.get("message", "Unknown error"),
|
251
|
+
)
|
252
|
+
return None
|
253
|
+
|
254
|
+
token = token_response.get("data", {}).get("token")
|
255
|
+
if token:
|
256
|
+
os.environ["RAGAAI_CATALYST_TOKEN"] = token
|
257
|
+
self._token_expiry = time.time() + RagaAICatalyst.TOKEN_EXPIRY_TIME
|
258
|
+
logger.debug(f"Token refreshed successfully. Next refresh in {RagaAICatalyst.TOKEN_EXPIRY_TIME/3600:.1f} hours")
|
259
|
+
|
260
|
+
# Schedule token refresh 20 seconds before expiration
|
261
|
+
self._schedule_token_refresh()
|
262
|
+
|
263
|
+
return token
|
264
|
+
else:
|
265
|
+
logger.error("Token(s) not set")
|
266
|
+
return None
|
194
267
|
|
195
|
-
|
268
|
+
def ensure_valid_token(self) -> Union[str, None]:
|
269
|
+
"""
|
270
|
+
Ensures a valid token is available, with different handling for missing token vs expired token:
|
271
|
+
- Missing token: Synchronous retrieval (fail fast)
|
272
|
+
- Expired token: Synchronous refresh (since token is needed immediately)
|
196
273
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
274
|
+
Returns:
|
275
|
+
- A string representing the valid token if successful.
|
276
|
+
- None if unable to obtain a valid token.
|
277
|
+
"""
|
278
|
+
current_token = os.getenv("RAGAAI_CATALYST_TOKEN")
|
279
|
+
current_time = time.time()
|
280
|
+
|
281
|
+
# Case 1: No token - synchronous retrieval (fail fast)
|
282
|
+
if not current_token:
|
283
|
+
return self.get_token(force_refresh=True)
|
284
|
+
|
285
|
+
# Case 2: Token expired - synchronous refresh (since we need a valid token now)
|
286
|
+
if not self._token_expiry or current_time >= self._token_expiry:
|
287
|
+
logger.info("Token expired, refreshing synchronously")
|
288
|
+
return self.get_token(force_refresh=True)
|
289
|
+
|
290
|
+
# Case 3: Token valid but approaching expiry (less than 10% of lifetime remaining)
|
291
|
+
# Start background refresh but return current token
|
292
|
+
token_remaining_time = self._token_expiry - current_time
|
293
|
+
if token_remaining_time < (RagaAICatalyst.TOKEN_EXPIRY_TIME * 0.1):
|
294
|
+
if not self._refresh_thread or not self._refresh_thread.is_alive():
|
295
|
+
logger.info("Token approaching expiry, starting background refresh")
|
296
|
+
self._refresh_thread = threading.Thread(target=self._refresh_token_async)
|
297
|
+
self._refresh_thread.daemon = True
|
298
|
+
self._refresh_thread.start()
|
299
|
+
|
300
|
+
# Return current token (which is valid)
|
301
|
+
return current_token
|
302
|
+
|
303
|
+
def get_auth_header(self) -> Dict[str, str]:
|
304
|
+
"""
|
305
|
+
Returns a dictionary containing the Authorization header with a valid token.
|
306
|
+
This method should be used instead of directly accessing os.getenv("RAGAAI_CATALYST_TOKEN").
|
203
307
|
|
204
|
-
|
308
|
+
Returns:
|
309
|
+
- A dictionary with the Authorization header if successful.
|
310
|
+
- An empty dictionary if no valid token could be obtained.
|
311
|
+
"""
|
312
|
+
token = self.ensure_valid_token()
|
205
313
|
if token:
|
206
|
-
|
207
|
-
|
208
|
-
return token
|
209
|
-
else:
|
210
|
-
logger.error("Token(s) not set")
|
211
|
-
return None
|
314
|
+
return {"Authorization": f"Bearer {token}"}
|
315
|
+
return {}
|
212
316
|
|
213
317
|
def project_use_cases(self):
|
214
318
|
try:
|
215
|
-
headers =
|
216
|
-
"Authorization": f'Bearer {os.getenv("RAGAAI_CATALYST_TOKEN")}',
|
217
|
-
}
|
319
|
+
headers = self.get_auth_header()
|
218
320
|
start_time = time.time()
|
219
321
|
endpoint = f"{RagaAICatalyst.BASE_URL}/v2/llm/usecase"
|
220
322
|
response = requests.get(
|
@@ -57,9 +57,26 @@ class UploadAgenticTraces:
|
|
57
57
|
presignedURLs = response.json()["data"]["presignedUrls"][0]
|
58
58
|
presignedurl = self.update_presigned_url(presignedURLs,self.base_url)
|
59
59
|
return presignedurl
|
60
|
+
else:
|
61
|
+
# If POST fails, try GET
|
62
|
+
response = requests.request("GET",
|
63
|
+
endpoint,
|
64
|
+
headers=headers,
|
65
|
+
data=payload,
|
66
|
+
timeout=self.timeout)
|
67
|
+
elapsed_ms = (time.time() - start_time) * 1000
|
68
|
+
logger.debug(
|
69
|
+
f"API Call: [GET] {endpoint} | Status: {response.status_code} | Time: {elapsed_ms:.2f}ms")
|
70
|
+
if response.status_code == 200:
|
71
|
+
presignedURLs = response.json()["data"]["presignedUrls"][0]
|
72
|
+
presignedurl = self.update_presigned_url(presignedURLs,self.base_url)
|
73
|
+
return presignedurl
|
74
|
+
|
75
|
+
logger.error(f"Error while getting presigned url: {response.json()['message']}")
|
76
|
+
return None
|
60
77
|
|
61
78
|
except requests.exceptions.RequestException as e:
|
62
|
-
|
79
|
+
logger.error(f"Error while getting presigned url: {e}")
|
63
80
|
return None
|
64
81
|
|
65
82
|
def update_presigned_url(self, presigned_url, base_url):
|
@@ -98,6 +98,20 @@ def _fetch_presigned_url(project_name, dataset_name, base_url=None, timeout=120)
|
|
98
98
|
presigned_url = update_presigned_url(presigned_url,url_base)
|
99
99
|
return presigned_url
|
100
100
|
else:
|
101
|
+
# If POST fails, try GET
|
102
|
+
response = requests.request("GET",
|
103
|
+
endpoint,
|
104
|
+
headers=headers,
|
105
|
+
data=payload,
|
106
|
+
timeout=timeout)
|
107
|
+
elapsed_ms = (time.time() - start_time) * 1000
|
108
|
+
logger.debug(
|
109
|
+
f"API Call: [GET] {endpoint} | Status: {response.status_code} | Time: {elapsed_ms:.2f}ms")
|
110
|
+
if response.status_code == 200:
|
111
|
+
presigned_url = response.json()["data"]["presignedUrls"][0]
|
112
|
+
presigned_url = update_presigned_url(presigned_url,url_base)
|
113
|
+
return presigned_url
|
114
|
+
|
101
115
|
logger.error(f"Failed to fetch code hashes: {response.json()['message']}")
|
102
116
|
raise Exception(f"Failed to fetch code hashes: {response.json()['message']}")
|
103
117
|
except requests.exceptions.RequestException as e:
|
@@ -402,7 +402,50 @@ class Tracer(AgenticTracing):
|
|
402
402
|
def recursive_mask_values(obj, parent_key=None):
|
403
403
|
"""Apply masking to all values in nested structure."""
|
404
404
|
if isinstance(obj, dict):
|
405
|
-
|
405
|
+
if self.tracer_type == "langchain":
|
406
|
+
# Special handling for LangChain data
|
407
|
+
if isinstance(obj, dict):
|
408
|
+
if obj.get("name", "") == "retrieve_documents.langchain.workflow":
|
409
|
+
prompt_structured_data = {
|
410
|
+
"traceloop.entity.input": json.dumps({
|
411
|
+
"kwargs": {
|
412
|
+
"input": masking_func(json.loads(obj.get("attributes", {}).get("traceloop.entity.input", "")).get("kwargs", {}).get("input", "")),
|
413
|
+
}
|
414
|
+
})
|
415
|
+
}
|
416
|
+
prompt_data = {
|
417
|
+
"name": "retrieve_documents.langchain.workflow",
|
418
|
+
"attributes": prompt_structured_data,
|
419
|
+
}
|
420
|
+
return prompt_data
|
421
|
+
elif obj.get("name", "") == "PromptTemplate.langchain.task":
|
422
|
+
context_structured_data = {
|
423
|
+
"traceloop.entity.input": json.dumps({
|
424
|
+
"kwargs": {
|
425
|
+
"context": masking_func(json.loads(obj.get("attributes", {}).get("traceloop.entity.input", "")).get("kwargs", {}).get("context", "")),
|
426
|
+
}
|
427
|
+
}),
|
428
|
+
"traceloop.entity.output": json.dumps({
|
429
|
+
"kwargs": {
|
430
|
+
"text": masking_func(json.loads(obj.get("attributes", {}).get("traceloop.entity.output", "")).get("kwargs", {}).get("text", "")),
|
431
|
+
}
|
432
|
+
})
|
433
|
+
}
|
434
|
+
context_data = {
|
435
|
+
"name": "PromptTemplate.langchain.task",
|
436
|
+
"attributes": context_structured_data,
|
437
|
+
}
|
438
|
+
return context_data
|
439
|
+
elif obj.get("name", "") == "ChatOpenAI.langchain.task":
|
440
|
+
response_structured_data = {"gen_ai.completion.0.content": masking_func(obj.get("attributes", {}).get("gen_ai.completion.0.content", "")),
|
441
|
+
"gen_ai.prompt.0.content": masking_func(obj.get("attributes", {}).get("gen_ai.prompt.0.content", ""))}
|
442
|
+
response_data = {
|
443
|
+
"name": "ChatOpenAI.langchain.task",
|
444
|
+
"attributes" : response_structured_data
|
445
|
+
}
|
446
|
+
return response_data
|
447
|
+
else:
|
448
|
+
return {k: recursive_mask_values(v, k) for k, v in obj.items()}
|
406
449
|
elif isinstance(obj, list):
|
407
450
|
return [recursive_mask_values(item, parent_key) for item in obj]
|
408
451
|
elif isinstance(obj, str):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ragaai_catalyst
|
3
|
-
Version: 2.1.7.
|
3
|
+
Version: 2.1.7.5b4
|
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>, Tushar Kumar <tushar.kumar@raga.ai>
|
6
6
|
Requires-Python: <=3.13.2,>=3.10
|
@@ -1,14 +1,14 @@
|
|
1
1
|
ragaai_catalyst/__init__.py,sha256=2wfkucAbb3Bt_p2KHelkg9zBQp4yC4iZanltyieG18w,895
|
2
2
|
ragaai_catalyst/_version.py,sha256=JKt9KaVNOMVeGs8ojO6LvIZr7ZkMzNN-gCcvryy4x8E,460
|
3
|
-
ragaai_catalyst/dataset.py,sha256=
|
4
|
-
ragaai_catalyst/evaluation.py,sha256=
|
3
|
+
ragaai_catalyst/dataset.py,sha256=kQy-fiU9zxVrNJkHG8ILGR_3UTIz4rUM7iOsEf4jVZs,29535
|
4
|
+
ragaai_catalyst/evaluation.py,sha256=acCNQtoN2eM9NTehKEATquZ5hNu6Ijv7wisvaaJ4u7c,22993
|
5
5
|
ragaai_catalyst/experiment.py,sha256=8yQo1phCHlpnJ-4CqCaIbLXg_1ZlAuLGI9kqGBl-OTE,18859
|
6
6
|
ragaai_catalyst/guard_executor.py,sha256=f2FXQSW17z4-eor61J_mtD0z-xBm9yordq8giB-GN_U,14006
|
7
7
|
ragaai_catalyst/guardrails_manager.py,sha256=_VrARJ1udmCF8TklNKy7XTQUaM8ATDhTOAGDonBkFro,14245
|
8
8
|
ragaai_catalyst/internal_api_completion.py,sha256=DdICI5yfEudiOAIC8L4oxH0Qz7kX-BZCdo9IWsi2gNo,2965
|
9
9
|
ragaai_catalyst/prompt_manager.py,sha256=W8ypramzOprrJ7-22d5vkBXIuIQ8v9XAzKDGxKsTK28,16550
|
10
10
|
ragaai_catalyst/proxy_call.py,sha256=CHxldeceZUaLU-to_hs_Kf1z_b2vHMssLS_cOBedu78,5499
|
11
|
-
ragaai_catalyst/ragaai_catalyst.py,sha256=
|
11
|
+
ragaai_catalyst/ragaai_catalyst.py,sha256=W_heG_ab650rzQkAhSOoxaNy3JKHAIXNvivxtOPpyeg,24590
|
12
12
|
ragaai_catalyst/redteaming_old.py,sha256=W2d89Ok8W-C8g7TBM3fDIFLof3q9FuYSr0jcryH2XQo,7097
|
13
13
|
ragaai_catalyst/synthetic_data_generation.py,sha256=7lIWa3nwgW2-FlJrDaGxTN6OE4-dbbhLtKNOBQufhho,37952
|
14
14
|
ragaai_catalyst/utils.py,sha256=TlhEFwLyRU690HvANbyoRycR3nQ67lxVUQoUOfTPYQ0,3772
|
@@ -31,7 +31,7 @@ ragaai_catalyst/tracers/distributed.py,sha256=MwlBwIxCAng-OI-7Ove_rkE1mTLeuW4Jw-
|
|
31
31
|
ragaai_catalyst/tracers/langchain_callback.py,sha256=CB75zzG3-DkYTELj0vI1MOHQTY0MuQJfoHIXz9Cl8S8,34568
|
32
32
|
ragaai_catalyst/tracers/llamaindex_callback.py,sha256=ZY0BJrrlz-P9Mg2dX-ZkVKG3gSvzwqBtk7JL_05MiYA,14028
|
33
33
|
ragaai_catalyst/tracers/llamaindex_instrumentation.py,sha256=Ys_jLkvVqo12bKgXDmkp4TxJu9HkBATrFE8cIcTYxWw,14329
|
34
|
-
ragaai_catalyst/tracers/tracer.py,sha256=
|
34
|
+
ragaai_catalyst/tracers/tracer.py,sha256=W5dS2h4IQrqbE_rgFY-1CrVCSs7WSFrDCny9_RASyjY,43593
|
35
35
|
ragaai_catalyst/tracers/upload_traces.py,sha256=yfg1vHP5quz2Vb8xkas_vzXwIrTVqRwrmFNCTrWvFdg,6938
|
36
36
|
ragaai_catalyst/tracers/agentic_tracing/README.md,sha256=X4QwLb7-Jg7GQMIXj-SerZIgDETfw-7VgYlczOR8ZeQ,4508
|
37
37
|
ragaai_catalyst/tracers/agentic_tracing/__init__.py,sha256=yf6SKvOPSpH-9LiKaoLKXwqj5sez8F_5wkOb91yp0oE,260
|
@@ -55,8 +55,8 @@ ragaai_catalyst/tracers/agentic_tracing/tracers/tool_tracer.py,sha256=xxrliKPfdf
|
|
55
55
|
ragaai_catalyst/tracers/agentic_tracing/tracers/user_interaction_tracer.py,sha256=bhSUhNQCuJXKjgJAXhjKEYjnHMpYN90FSZdR84fNIKU,4614
|
56
56
|
ragaai_catalyst/tracers/agentic_tracing/upload/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
57
|
ragaai_catalyst/tracers/agentic_tracing/upload/trace_uploader.py,sha256=qGinKWnb-NSEfIfIOsL37tB9AS8-dKa_-nNNHkUmtuE,12955
|
58
|
-
ragaai_catalyst/tracers/agentic_tracing/upload/upload_agentic_traces.py,sha256=
|
59
|
-
ragaai_catalyst/tracers/agentic_tracing/upload/upload_code.py,sha256=
|
58
|
+
ragaai_catalyst/tracers/agentic_tracing/upload/upload_agentic_traces.py,sha256=u7QwUbG73zeWi-5WQ4scLo7wfw184Qd8c03TxgfoUe4,9567
|
59
|
+
ragaai_catalyst/tracers/agentic_tracing/upload/upload_code.py,sha256=eNjKt8xC2IIs_mC9WdLaP_vUxWpYHVi2OXgJyn2oSx8,7443
|
60
60
|
ragaai_catalyst/tracers/agentic_tracing/upload/upload_local_metric.py,sha256=m1O8lKpxKwtHofXLW3fTHX5yfqDW5GxoveARlg5cTw4,2571
|
61
61
|
ragaai_catalyst/tracers/agentic_tracing/upload/upload_trace_metric.py,sha256=hRuh-cczHbeM_Spbf9HTYd149uSs1zP0TvkYuZKF4ec,4296
|
62
62
|
ragaai_catalyst/tracers/agentic_tracing/utils/__init__.py,sha256=XdB3X_ufe4RVvGorxSqAiB9dYv4UD7Hvvuw3bsDUppY,60
|
@@ -88,8 +88,8 @@ ragaai_catalyst/tracers/utils/model_prices_and_context_window_backup.json,sha256
|
|
88
88
|
ragaai_catalyst/tracers/utils/rag_trace_json_converter.py,sha256=adCKk7Nj8307XYYg2sB-QT-66OShOs2iTGwNVwqbHig,19373
|
89
89
|
ragaai_catalyst/tracers/utils/trace_json_converter.py,sha256=E0_QfciQMMpCtQYrNB4l8HJhlaFalr5bkMqkVRgQahY,14073
|
90
90
|
ragaai_catalyst/tracers/utils/utils.py,sha256=ViygfJ7vZ7U0CTSA1lbxVloHp4NSlmfDzBRNCJuMhis,2374
|
91
|
-
ragaai_catalyst-2.1.7.
|
92
|
-
ragaai_catalyst-2.1.7.
|
93
|
-
ragaai_catalyst-2.1.7.
|
94
|
-
ragaai_catalyst-2.1.7.
|
95
|
-
ragaai_catalyst-2.1.7.
|
91
|
+
ragaai_catalyst-2.1.7.5b4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
92
|
+
ragaai_catalyst-2.1.7.5b4.dist-info/METADATA,sha256=Z0X9VzL8SIUjeobOKLCf70qmiBwp79VQwyTTbCt6MxQ,17607
|
93
|
+
ragaai_catalyst-2.1.7.5b4.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
|
94
|
+
ragaai_catalyst-2.1.7.5b4.dist-info/top_level.txt,sha256=HpgsdRgEJMk8nqrU6qdCYk3di7MJkDL0B19lkc7dLfM,16
|
95
|
+
ragaai_catalyst-2.1.7.5b4.dist-info/RECORD,,
|
{ragaai_catalyst-2.1.7.5b2.dist-info → ragaai_catalyst-2.1.7.5b4.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
File without changes
|