ragaai-catalyst 2.1.5b21__py3-none-any.whl → 2.1.5b22__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.
@@ -18,6 +18,8 @@ class SpanAttributes:
18
18
  self.metrics = []
19
19
  self.feedback = None
20
20
  self.trace_attributes = ["tags", "metadata", "metrics"]
21
+ self.gt = None
22
+ self.context = []
21
23
 
22
24
  def add_tags(self, tags: str | List[str]):
23
25
  if isinstance(tags, str):
@@ -57,3 +59,36 @@ class SpanAttributes:
57
59
  def add_feedback(self, feedback: Any):
58
60
  self.feedback = feedback
59
61
  logger.debug(f"Added feedback: {self.feedback}")
62
+
63
+ def add_gt(self, gt: Any):
64
+ if not isinstance(gt, (str, int, float, bool, list, dict)):
65
+ raise TypeError(f"Unsupported type for gt: {type(gt)}")
66
+ if self.gt:
67
+ logger.warning(f"GT already exists: {self.gt} \n Overwriting...")
68
+ self.gt = gt
69
+ logger.debug(f"Added gt: {self.gt}")
70
+
71
+ def add_context(self, context: str|List[str]):
72
+ if isinstance(context, str):
73
+ if not context.strip():
74
+ logger.warning("Empty or whitespace-only context string provided")
75
+ fin_context = [context]
76
+ elif isinstance(context, list):
77
+ fin_context = []
78
+ for cntxt in context:
79
+ if not isinstance(cntxt, str):
80
+ try:
81
+ cntxt = str(cntxt)
82
+ except Exception as e:
83
+ logger.warning('Cannot cast an element to string... Skipping')
84
+ fin_context.append(cntxt)
85
+ if not any(c for c in fin_context if c and c.strip()):
86
+ logger.warning("No valid context strings provided")
87
+ else:
88
+ fin_context = []
89
+ try:
90
+ fin_context = [str(context)]
91
+ except Exception as e:
92
+ logger.warning('Cannot cast the context to string... Skipping')
93
+ self.context = fin_context
94
+ logger.debug(f"Added context: {self.context}")
@@ -59,38 +59,6 @@ def calculate_cost(
59
59
  "total": total_cost,
60
60
  }
61
61
 
62
-
63
- def load_model_costs():
64
- try:
65
- current_dir = os.path.dirname(os.path.abspath(__file__))
66
- model_costs_path = os.path.join(current_dir, "model_costs.json")
67
- with open(model_costs_path, "r") as file:
68
- return json.load(file)
69
- except FileNotFoundError:
70
- with resources.open_text("utils", "model_costs.json") as file:
71
- return json.load(file)
72
-
73
-
74
- def update_model_costs_from_github():
75
- """Updates the model_costs.json file with latest costs from GitHub."""
76
- try:
77
- logger.debug("loading the latest model costs.")
78
- response = requests.get(
79
- "https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json"
80
- )
81
- if response.status_code == 200:
82
- current_dir = os.path.dirname(os.path.abspath(__file__))
83
- model_costs_path = os.path.join(current_dir, "model_costs.json")
84
- with open(model_costs_path, "w") as file:
85
- json.dump(response.json(), file, indent=4)
86
- logger.debug("Model costs updated successfully.")
87
- return True
88
- return False
89
- except Exception as e:
90
- logger.error(f"Failed to update model costs from GitHub: {e}")
91
- return False
92
-
93
-
94
62
  def log_event(event_data, log_file_path):
95
63
  event_data = asdict(event_data)
96
64
  with open(log_file_path, "a") as f:
@@ -9,6 +9,7 @@ from typing import Optional, Dict, Any, List
9
9
  from functools import wraps
10
10
  from contextlib import contextmanager
11
11
  import uuid
12
+ from .agentic_tracing.utils.unique_decorator import generate_unique_hash_simple
12
13
  from datetime import datetime
13
14
  import asyncio
14
15
 
@@ -86,6 +87,8 @@ def trace_agent(name: str = None, agent_type: str = "generic", version: str = "1
86
87
  def decorator(func):
87
88
  is_async = asyncio.iscoroutinefunction(func)
88
89
  span_name = name or func.__name__
90
+ # Generate hash based on the decorated function
91
+ top_level_hash_id = generate_unique_hash_simple(func)
89
92
 
90
93
  @wraps(func)
91
94
  async def async_wrapper(*args, **kwargs):
@@ -104,7 +107,7 @@ def trace_agent(name: str = None, agent_type: str = "generic", version: str = "1
104
107
  agent_type,
105
108
  version,
106
109
  None, # capabilities
107
- str(uuid.uuid4()), # hash_id
110
+ top_level_hash_id,
108
111
  *args,
109
112
  **kwargs
110
113
  )
@@ -130,6 +133,7 @@ def trace_agent(name: str = None, agent_type: str = "generic", version: str = "1
130
133
  agent_type,
131
134
  version,
132
135
  None, # capabilities
136
+ top_level_hash_id,
133
137
  *args,
134
138
  **kwargs
135
139
  )
@@ -158,7 +162,7 @@ def trace_llm(name: str = None, model: str = None, **kwargs):
158
162
 
159
163
  try:
160
164
  # Just execute the function within the current span
161
- result = await func(*args, **kwargs)
165
+ result = await tracer.file_tracker.trace_wrapper(func)(*args, **kwargs)
162
166
  return result
163
167
  finally:
164
168
  # Reset using the stored token
@@ -176,7 +180,7 @@ def trace_llm(name: str = None, model: str = None, **kwargs):
176
180
 
177
181
  try:
178
182
  # Just execute the function within the current span
179
- result = func(*args, **kwargs)
183
+ result = tracer.file_tracker.trace_wrapper(func)(*args, **kwargs)
180
184
  return result
181
185
  finally:
182
186
  # Reset using the stored token
@@ -6,6 +6,8 @@ import logging
6
6
  import asyncio
7
7
  import aiohttp
8
8
  import requests
9
+ from litellm import model_cost
10
+
9
11
  from contextlib import contextmanager
10
12
  from concurrent.futures import ThreadPoolExecutor
11
13
  from ragaai_catalyst.tracers.langchain_callback import LangchainTracer
@@ -30,7 +32,6 @@ from ragaai_catalyst.tracers.utils import get_unique_key
30
32
  from ragaai_catalyst import RagaAICatalyst
31
33
  from ragaai_catalyst.tracers.agentic_tracing import AgenticTracing, TrackName
32
34
  from ragaai_catalyst.tracers.agentic_tracing.tracers.llm_tracer import LLMTracerMixin
33
- from ragaai_catalyst.tracers.agentic_tracing.utils.trace_utils import load_model_costs, update_model_costs_from_github
34
35
 
35
36
  logger = logging.getLogger(__name__)
36
37
 
@@ -127,12 +128,8 @@ class Tracer(AgenticTracing):
127
128
  self.timeout = 30
128
129
  self.num_projects = 100
129
130
  self.start_time = datetime.datetime.now().astimezone().isoformat()
130
- self.model_cost_dict = load_model_costs()
131
+ self.model_cost_dict = model_cost
131
132
  self.user_context = "" # Initialize user_context to store context from add_context
132
-
133
- if update_llm_cost:
134
- # First update the model costs file from GitHub
135
- update_model_costs_from_github()
136
133
 
137
134
  try:
138
135
  response = requests.get(
@@ -49,7 +49,6 @@ def langchain_tracer_extraction(data, user_context=""):
49
49
  def get_response(data):
50
50
  for item in data["llm_calls"]:
51
51
  if item["event"] == "llm_end":
52
- # import pdb; pdb.set_trace()
53
52
  llm_end_responses = item["response"]["generations"][0]
54
53
  for llm_end_response in llm_end_responses:
55
54
  response = llm_end_response["text"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ragaai_catalyst
3
- Version: 2.1.5b21
3
+ Version: 2.1.5b22
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
@@ -9,13 +9,13 @@ ragaai_catalyst/internal_api_completion.py,sha256=DdICI5yfEudiOAIC8L4oxH0Qz7kX-B
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
11
  ragaai_catalyst/ragaai_catalyst.py,sha256=5nVg3_-lcvhrXjNkPTeGhe3tdUjm_4ZIctOcqWXBkRA,17939
12
- ragaai_catalyst/synthetic_data_generation.py,sha256=uDV9tNwto2xSkWg5XHXUvjErW-4P34CTrxaJpRfezyA,19250
12
+ ragaai_catalyst/synthetic_data_generation.py,sha256=gbvlA1ZrQgqJ_ASX7uB2J8Je06BjxUoYe7RXea1Y5y4,21261
13
13
  ragaai_catalyst/utils.py,sha256=TlhEFwLyRU690HvANbyoRycR3nQ67lxVUQoUOfTPYQ0,3772
14
14
  ragaai_catalyst/tracers/__init__.py,sha256=LfgTes-nHpazssbGKnn8kyLZNr49kIPrlkrqqoTFTfc,301
15
- ragaai_catalyst/tracers/distributed.py,sha256=AIRvS5Ur4jbFDXsUkYuCTmtGoHHx3LOG4n5tWOh610U,10330
15
+ ragaai_catalyst/tracers/distributed.py,sha256=DIthDaZWBIzDKtDShGSE9iCM0qFtGB48ReZKzMXMxtA,10630
16
16
  ragaai_catalyst/tracers/langchain_callback.py,sha256=ZXN378gloGh5EVpTJuUScHD964WuIeVeE4_hp60gxG4,30686
17
17
  ragaai_catalyst/tracers/llamaindex_callback.py,sha256=ZY0BJrrlz-P9Mg2dX-ZkVKG3gSvzwqBtk7JL_05MiYA,14028
18
- ragaai_catalyst/tracers/tracer.py,sha256=_WSX0XS4XflHdQdMaqarTAoW2iz2lux0IxhTibZsD8k,21048
18
+ ragaai_catalyst/tracers/tracer.py,sha256=T7Q4IPhn5EPT3TsMROJw_3GvBuou1cWIjGFanwcN_OE,20819
19
19
  ragaai_catalyst/tracers/upload_traces.py,sha256=2TWdRTN6FMaX-dqDv8BJWQS0xrCGYKkXEYOi2kK3Z3Y,5487
20
20
  ragaai_catalyst/tracers/agentic_tracing/README.md,sha256=X4QwLb7-Jg7GQMIXj-SerZIgDETfw-7VgYlczOR8ZeQ,4508
21
21
  ragaai_catalyst/tracers/agentic_tracing/__init__.py,sha256=yf6SKvOPSpH-9LiKaoLKXwqj5sez8F_5wkOb91yp0oE,260
@@ -28,31 +28,31 @@ ragaai_catalyst/tracers/agentic_tracing/tests/__init__.py,sha256=47DEQpj8HBSa-_T
28
28
  ragaai_catalyst/tracers/agentic_tracing/tests/ai_travel_agent.py,sha256=S4rCcKzU_5SB62BYEbNn_1VbbTdG4396N8rdZ3ZNGcE,5654
29
29
  ragaai_catalyst/tracers/agentic_tracing/tests/unique_decorator_test.py,sha256=Xk1cLzs-2A3dgyBwRRnCWs7Eubki40FVonwd433hPN8,4805
30
30
  ragaai_catalyst/tracers/agentic_tracing/tracers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- ragaai_catalyst/tracers/agentic_tracing/tracers/agent_tracer.py,sha256=8d6YovuWiyRZ_h3GQwV6G5WdHzr14ukXtxE_TK1WIUY,26365
32
- ragaai_catalyst/tracers/agentic_tracing/tracers/base.py,sha256=xzJKOpL0Wm5hAIJp80QidDsPaHRV3pkyTMAEQSJgbNQ,37987
33
- ragaai_catalyst/tracers/agentic_tracing/tracers/custom_tracer.py,sha256=OHet_Cphyrsq2CP4WiooTsWSgg3Rc1n8QsOl1s2vqdY,13480
31
+ ragaai_catalyst/tracers/agentic_tracing/tracers/agent_tracer.py,sha256=bpy76kpphOtWkK7nF4vnHMZCwFtSphZmHlkmbJKTYd4,26876
32
+ ragaai_catalyst/tracers/agentic_tracing/tracers/base.py,sha256=V2NMpi4UsPgMSGtPzuG13j5NVnw3NEnqyKzg4VcbjtQ,38082
33
+ ragaai_catalyst/tracers/agentic_tracing/tracers/custom_tracer.py,sha256=mR4jCNjsKUPiidJ1pIthoUI5i9KCGGPe3zG5l80FUBo,14060
34
34
  ragaai_catalyst/tracers/agentic_tracing/tracers/langgraph_tracer.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- ragaai_catalyst/tracers/agentic_tracing/tracers/llm_tracer.py,sha256=OSRGwftAYpylvziXD50HGjEfEMe8k11-3SRSZKw2tHI,35255
35
+ ragaai_catalyst/tracers/agentic_tracing/tracers/llm_tracer.py,sha256=Q_jZNBY3QU0dPcA2VVJVR1TQvPJ0zGSb-aX7YpaPUYo,39982
36
36
  ragaai_catalyst/tracers/agentic_tracing/tracers/main_tracer.py,sha256=ZAG5aKBAr0O7oWd_EXcljH9PpSIo6QpWnZWH4NhKgAE,18315
37
37
  ragaai_catalyst/tracers/agentic_tracing/tracers/network_tracer.py,sha256=m8CxYkl7iMiFya_lNwN1ykBc3Pmo-2pR_2HmpptwHWQ,10352
38
- ragaai_catalyst/tracers/agentic_tracing/tracers/tool_tracer.py,sha256=nmgkE3jRlTpq_uk6FYw0hTv2VgT8ejxvvBRL7gso39I,21037
38
+ ragaai_catalyst/tracers/agentic_tracing/tracers/tool_tracer.py,sha256=CEbTzedv_AH5zXlChfTGMlQc-8oWATlwrVFb1KcO4c0,21588
39
39
  ragaai_catalyst/tracers/agentic_tracing/tracers/user_interaction_tracer.py,sha256=bhSUhNQCuJXKjgJAXhjKEYjnHMpYN90FSZdR84fNIKU,4614
40
40
  ragaai_catalyst/tracers/agentic_tracing/upload/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
41
  ragaai_catalyst/tracers/agentic_tracing/upload/upload_agentic_traces.py,sha256=1MDKXAAPzOEdxFKWWQrRgrmM3kz--DGXSywGXQmR3lQ,6041
42
42
  ragaai_catalyst/tracers/agentic_tracing/upload/upload_code.py,sha256=HgpMgI-JTWZrizcM7GGUIaAgaZF4aRT3D0dJXVEkblY,4271
43
- ragaai_catalyst/tracers/agentic_tracing/upload/upload_trace_metric.py,sha256=id66gfx-XYj_zsAmicBKojBOqJQ__FJLSoZ0db56aes,3493
43
+ ragaai_catalyst/tracers/agentic_tracing/upload/upload_trace_metric.py,sha256=EULEghWHOiBX2g1IwY23aoFqKEFkuEu-BISWyteWsmA,3532
44
44
  ragaai_catalyst/tracers/agentic_tracing/utils/__init__.py,sha256=XdB3X_ufe4RVvGorxSqAiB9dYv4UD7Hvvuw3bsDUppY,60
45
45
  ragaai_catalyst/tracers/agentic_tracing/utils/api_utils.py,sha256=JyNCbfpW-w4O9CjtemTqmor2Rh1WGpQwhRaDSRmBxw8,689
46
46
  ragaai_catalyst/tracers/agentic_tracing/utils/create_dataset_schema.py,sha256=lgvJL0cakJrX8WGsnU05YGvotequSj6HgSohyR4OJNE,804
47
- ragaai_catalyst/tracers/agentic_tracing/utils/file_name_tracker.py,sha256=515NNDQJTyy3O-2rdlUYUoWL9qSwLIfvV3sMB9BtHp8,1366
47
+ ragaai_catalyst/tracers/agentic_tracing/utils/file_name_tracker.py,sha256=c1RR5tTm8J_oHu4DrLcDtCALhjk75yEXsiP7f7wf8nE,1953
48
48
  ragaai_catalyst/tracers/agentic_tracing/utils/generic.py,sha256=WwXT01xmp8MSr7KinuDCSK9a1ifpLcT7ajFkvYviG_A,1190
49
49
  ragaai_catalyst/tracers/agentic_tracing/utils/get_user_trace_metrics.py,sha256=vPZ4dn4EHFW0kqd1GyRpsYXbfrRrd0DXCmh-pzsDBNE,1109
50
- ragaai_catalyst/tracers/agentic_tracing/utils/llm_utils.py,sha256=67AS2s51qUnIt4hhcDRNe2Mmi5DSikR2XgmtinaVJjY,19549
51
- ragaai_catalyst/tracers/agentic_tracing/utils/model_costs.json,sha256=GXV1s349reRMpYF_EkK-b6peSb4SY-17WnlkvpuQ4sM,294430
52
- ragaai_catalyst/tracers/agentic_tracing/utils/span_attributes.py,sha256=MqeRNGxzeuh9qTK0NbYMftl9V9Z0V7gMgBoHkrXP56k,1592
50
+ ragaai_catalyst/tracers/agentic_tracing/utils/llm_utils.py,sha256=5G4qvNTIo4Ee_TWnI4RqOt1N7riUy3xES6rWvSXZGsA,20356
51
+ ragaai_catalyst/tracers/agentic_tracing/utils/model_costs.json,sha256=2tzGw_cKCTPcfjEm7iGvFE6pTw7gMTPzeBov_MTaXNY,321336
52
+ ragaai_catalyst/tracers/agentic_tracing/utils/span_attributes.py,sha256=47-nnHa-sgTNg_Vg9M3s8Z4c3SDTtphgkq93Pxy_Tbo,3051
53
53
  ragaai_catalyst/tracers/agentic_tracing/utils/supported_llm_provider.toml,sha256=LvFDivDIE96Zasp-fgDEqUJ5GEQZUawQucR3aOcSUTY,926
54
54
  ragaai_catalyst/tracers/agentic_tracing/utils/system_monitor.py,sha256=H8WNsk4v_5T6OUw4TFOzlDLjQhJwjh1nAMyMAoqMEi4,6946
55
- ragaai_catalyst/tracers/agentic_tracing/utils/trace_utils.py,sha256=RciiDdo2riibEoM8X0FKHaXi78y3bWwNkV8U0leqigk,3508
55
+ ragaai_catalyst/tracers/agentic_tracing/utils/trace_utils.py,sha256=go7FVnofviATDph-j8sk2juv09CGSRt1Vq4U868Fhd8,2259
56
56
  ragaai_catalyst/tracers/agentic_tracing/utils/unique_decorator.py,sha256=DQHjcEuqEKsNSWaNs7SoOaq50yK4Jsl966S7mBnV-zA,5723
57
57
  ragaai_catalyst/tracers/agentic_tracing/utils/zip_list_of_unique_files.py,sha256=8SAN4pjA3XKBWlUZiDGXGh26ve1qRH_fv0VwewsfCFc,18818
58
58
  ragaai_catalyst/tracers/exporters/__init__.py,sha256=kVA8zp05h3phu4e-iHSlnznp_PzMRczB7LphSsZgUjg,138
@@ -64,10 +64,10 @@ ragaai_catalyst/tracers/instrumentators/llamaindex.py,sha256=SMrRlR4xM7k9HK43hak
64
64
  ragaai_catalyst/tracers/instrumentators/openai.py,sha256=14R4KW9wQCR1xysLfsP_nxS7cqXrTPoD8En4MBAaZUU,379
65
65
  ragaai_catalyst/tracers/utils/__init__.py,sha256=KeMaZtYaTojilpLv65qH08QmpYclfpacDA0U3wg6Ybw,64
66
66
  ragaai_catalyst/tracers/utils/convert_langchain_callbacks_output.py,sha256=ofrNrxf2b1hpjDh_zeaxiYq86azn1MF3kW8-ViYPEg0,1641
67
- ragaai_catalyst/tracers/utils/langchain_tracer_extraction_logic.py,sha256=LxJaZYErYlG8Zc4LfPHuX1_TgAYvT7sb28OZl9iBxC0,3163
67
+ ragaai_catalyst/tracers/utils/langchain_tracer_extraction_logic.py,sha256=XS2_x2qneqEx9oAighLg-LRiueWcESLwIC2r7eJT-Ww,3117
68
68
  ragaai_catalyst/tracers/utils/utils.py,sha256=ViygfJ7vZ7U0CTSA1lbxVloHp4NSlmfDzBRNCJuMhis,2374
69
- ragaai_catalyst-2.1.5b21.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
70
- ragaai_catalyst-2.1.5b21.dist-info/METADATA,sha256=2SR-RpaHL2T7-q3useysaBDwhDQpPqCNZVAyfrD-T6c,12796
71
- ragaai_catalyst-2.1.5b21.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
72
- ragaai_catalyst-2.1.5b21.dist-info/top_level.txt,sha256=HpgsdRgEJMk8nqrU6qdCYk3di7MJkDL0B19lkc7dLfM,16
73
- ragaai_catalyst-2.1.5b21.dist-info/RECORD,,
69
+ ragaai_catalyst-2.1.5b22.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
70
+ ragaai_catalyst-2.1.5b22.dist-info/METADATA,sha256=gAk8MiwrsxQhtr5VD4kv7vEKo7wtgYudwPhL56-khVM,12796
71
+ ragaai_catalyst-2.1.5b22.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
72
+ ragaai_catalyst-2.1.5b22.dist-info/top_level.txt,sha256=HpgsdRgEJMk8nqrU6qdCYk3di7MJkDL0B19lkc7dLfM,16
73
+ ragaai_catalyst-2.1.5b22.dist-info/RECORD,,