helloparthshah commited on
Commit
eb1e30c
·
1 Parent(s): 721a13f

Updated expense model

Browse files
src/manager/agent_manager.py CHANGED
@@ -25,7 +25,8 @@ class Agent(ABC):
25
  create_resource_cost: int,
26
  invoke_resource_cost: int,
27
  create_expense_cost: int = 0,
28
- invoke_expense_cost: int = 0,):
 
29
  self.agent_name = agent_name
30
  self.base_model = base_model
31
  self.system_prompt = system_prompt
@@ -33,6 +34,7 @@ class Agent(ABC):
33
  self.invoke_resource_cost = invoke_resource_cost
34
  self.create_expense_cost = create_expense_cost
35
  self.invoke_expense_cost = invoke_expense_cost
 
36
  self.create_model()
37
 
38
  @abstractmethod
@@ -60,7 +62,8 @@ class Agent(ABC):
60
  "create_resource_cost": self.create_resource_cost,
61
  "invoke_resource_cost": self.invoke_resource_cost,
62
  "create_expense_cost": self.create_expense_cost,
63
- "invoke_expense_cost": self.invoke_expense_cost
 
64
  }
65
 
66
 
@@ -102,7 +105,8 @@ class GeminiAgent(Agent):
102
  create_resource_cost: int,
103
  invoke_resource_cost: int,
104
  create_expense_cost: int = 0,
105
- invoke_expense_cost: int = 0,):
 
106
  load_dotenv()
107
  self.api_key = os.getenv("GEMINI_KEY")
108
  if not self.api_key:
@@ -120,7 +124,8 @@ class GeminiAgent(Agent):
120
  create_resource_cost,
121
  invoke_resource_cost,
122
  create_expense_cost,
123
- invoke_expense_cost)
 
124
 
125
  def create_model(self):
126
  self.messages = []
@@ -153,11 +158,13 @@ class GroqAgent(Agent):
153
  invoke_resource_cost: int,
154
  create_expense_cost: int = 0,
155
  invoke_expense_cost: int = 0,
 
156
  ):
157
  # Call the parent class constructor first
158
  super().__init__(agent_name, base_model, system_prompt,
159
  create_resource_cost, invoke_resource_cost,
160
- create_expense_cost, invoke_expense_cost)
 
161
 
162
  # Groq-specific API client setup
163
  api_key = os.getenv("GROQ_API_KEY")
@@ -257,6 +264,7 @@ class AgentManager():
257
  invoke_resource_cost: float = 0,
258
  create_expense_cost: float = 0,
259
  invoke_expense_cost: float = 0,
 
260
  **additional_params) -> Tuple[Agent, int]:
261
  if not self.is_creation_enabled:
262
  raise ValueError("Agent creation mode is disabled.")
@@ -273,6 +281,7 @@ class AgentManager():
273
  invoke_resource_cost=invoke_resource_cost,
274
  create_expense_cost=create_expense_cost,
275
  invoke_expense_cost=invoke_expense_cost,
 
276
  **additional_params # For any future parameters we might want to add
277
  )
278
 
@@ -286,6 +295,7 @@ class AgentManager():
286
  invoke_resource_cost=invoke_resource_cost,
287
  create_expense_cost=create_expense_cost,
288
  invoke_expense_cost=invoke_expense_cost,
 
289
  **additional_params # For any future parameters we might want to add
290
  )
291
  return (self._agents[agent_name],
@@ -311,6 +321,7 @@ class AgentManager():
311
  invoke_resource_cost: float = 0,
312
  create_expense_cost: float = 0,
313
  invoke_expense_cost: float = 0,
 
314
  **additional_params) -> Agent:
315
  agent_type = self._get_agent_type(base_model)
316
  agent_class = self._agent_types.get(agent_type)
@@ -324,7 +335,8 @@ class AgentManager():
324
  create_resource_cost,
325
  invoke_resource_cost,
326
  create_expense_cost,
327
- invoke_expense_cost,)
 
328
 
329
  self.validate_budget(create_resource_cost,
330
  create_expense_cost)
@@ -407,6 +419,9 @@ class AgentManager():
407
  agent.invoke_expense_cost*n_tokens)
408
 
409
  response = agent.ask_agent(prompt)
 
 
 
410
  return (response,
411
  self.budget_manager.get_current_remaining_resource_budget(),
412
  self.budget_manager.get_current_remaining_expense_budget())
@@ -420,6 +435,7 @@ class AgentManager():
420
  invoke_resource_cost: float = 0,
421
  create_expense_cost: float = 0,
422
  invoke_expense_cost: float = 0,
 
423
  **additional_params) -> None:
424
  """Save a single agent to the models.json file"""
425
  try:
@@ -442,6 +458,7 @@ class AgentManager():
442
  "invoke_resource_cost": invoke_resource_cost,
443
  "create_expense_cost": create_expense_cost,
444
  "invoke_expense_cost": invoke_expense_cost,
 
445
  }
446
 
447
  # Add any additional parameters that were passed
@@ -488,6 +505,7 @@ class AgentManager():
488
  invoke_resource_cost = data.get("invoke_resource_cost", 0)
489
  create_expense_cost = data.get("create_expense_cost", 0)
490
  invoke_expense_cost = data.get("invoke_expense_cost", 0)
 
491
  model_type = self._get_agent_type(base_model)
492
  manager_class = self._agent_types.get(model_type)
493
 
@@ -502,6 +520,7 @@ class AgentManager():
502
  invoke_resource_cost=invoke_resource_cost,
503
  create_expense_cost=create_expense_cost,
504
  invoke_expense_cost=invoke_expense_cost,
 
505
  **data.get("additional_params", {})
506
  )
507
  self._agents[name] = manager_class(
@@ -512,6 +531,7 @@ class AgentManager():
512
  invoke_resource_cost,
513
  create_expense_cost,
514
  invoke_expense_cost,
 
515
  )
516
  except Exception as e:
517
  output_assistant_response(f"Error loading agents: {e}")
 
25
  create_resource_cost: int,
26
  invoke_resource_cost: int,
27
  create_expense_cost: int = 0,
28
+ invoke_expense_cost: int = 0,
29
+ output_expense_cost: int = 0):
30
  self.agent_name = agent_name
31
  self.base_model = base_model
32
  self.system_prompt = system_prompt
 
34
  self.invoke_resource_cost = invoke_resource_cost
35
  self.create_expense_cost = create_expense_cost
36
  self.invoke_expense_cost = invoke_expense_cost
37
+ self.output_expense_cost = output_expense_cost
38
  self.create_model()
39
 
40
  @abstractmethod
 
62
  "create_resource_cost": self.create_resource_cost,
63
  "invoke_resource_cost": self.invoke_resource_cost,
64
  "create_expense_cost": self.create_expense_cost,
65
+ "invoke_expense_cost": self.invoke_expense_cost,
66
+ "output_expense_cost": self.output_expense_cost,
67
  }
68
 
69
 
 
105
  create_resource_cost: int,
106
  invoke_resource_cost: int,
107
  create_expense_cost: int = 0,
108
+ invoke_expense_cost: int = 0,
109
+ output_expense_cost: int = 0):
110
  load_dotenv()
111
  self.api_key = os.getenv("GEMINI_KEY")
112
  if not self.api_key:
 
124
  create_resource_cost,
125
  invoke_resource_cost,
126
  create_expense_cost,
127
+ invoke_expense_cost,
128
+ output_expense_cost)
129
 
130
  def create_model(self):
131
  self.messages = []
 
158
  invoke_resource_cost: int,
159
  create_expense_cost: int = 0,
160
  invoke_expense_cost: int = 0,
161
+ output_expense_cost: int = 0
162
  ):
163
  # Call the parent class constructor first
164
  super().__init__(agent_name, base_model, system_prompt,
165
  create_resource_cost, invoke_resource_cost,
166
+ create_expense_cost, invoke_expense_cost,
167
+ output_expense_cost)
168
 
169
  # Groq-specific API client setup
170
  api_key = os.getenv("GROQ_API_KEY")
 
264
  invoke_resource_cost: float = 0,
265
  create_expense_cost: float = 0,
266
  invoke_expense_cost: float = 0,
267
+ output_expense_cost: float = 0,
268
  **additional_params) -> Tuple[Agent, int]:
269
  if not self.is_creation_enabled:
270
  raise ValueError("Agent creation mode is disabled.")
 
281
  invoke_resource_cost=invoke_resource_cost,
282
  create_expense_cost=create_expense_cost,
283
  invoke_expense_cost=invoke_expense_cost,
284
+ output_expense_cost=output_expense_cost,
285
  **additional_params # For any future parameters we might want to add
286
  )
287
 
 
295
  invoke_resource_cost=invoke_resource_cost,
296
  create_expense_cost=create_expense_cost,
297
  invoke_expense_cost=invoke_expense_cost,
298
+ output_expense_cost=output_expense_cost,
299
  **additional_params # For any future parameters we might want to add
300
  )
301
  return (self._agents[agent_name],
 
321
  invoke_resource_cost: float = 0,
322
  create_expense_cost: float = 0,
323
  invoke_expense_cost: float = 0,
324
+ output_expense_cost: float = 0,
325
  **additional_params) -> Agent:
326
  agent_type = self._get_agent_type(base_model)
327
  agent_class = self._agent_types.get(agent_type)
 
335
  create_resource_cost,
336
  invoke_resource_cost,
337
  create_expense_cost,
338
+ invoke_expense_cost,
339
+ output_expense_cost,)
340
 
341
  self.validate_budget(create_resource_cost,
342
  create_expense_cost)
 
419
  agent.invoke_expense_cost*n_tokens)
420
 
421
  response = agent.ask_agent(prompt)
422
+ n_tokens = len(response.split())/1000000
423
+ self.budget_manager.add_to_expense_budget(
424
+ agent.output_expense_cost*n_tokens)
425
  return (response,
426
  self.budget_manager.get_current_remaining_resource_budget(),
427
  self.budget_manager.get_current_remaining_expense_budget())
 
435
  invoke_resource_cost: float = 0,
436
  create_expense_cost: float = 0,
437
  invoke_expense_cost: float = 0,
438
+ output_expense_cost: float = 0,
439
  **additional_params) -> None:
440
  """Save a single agent to the models.json file"""
441
  try:
 
458
  "invoke_resource_cost": invoke_resource_cost,
459
  "create_expense_cost": create_expense_cost,
460
  "invoke_expense_cost": invoke_expense_cost,
461
+ "output_expense_cost": output_expense_cost,
462
  }
463
 
464
  # Add any additional parameters that were passed
 
505
  invoke_resource_cost = data.get("invoke_resource_cost", 0)
506
  create_expense_cost = data.get("create_expense_cost", 0)
507
  invoke_expense_cost = data.get("invoke_expense_cost", 0)
508
+ output_expense_cost = data.get("output_expense_cost", 0)
509
  model_type = self._get_agent_type(base_model)
510
  manager_class = self._agent_types.get(model_type)
511
 
 
520
  invoke_resource_cost=invoke_resource_cost,
521
  create_expense_cost=create_expense_cost,
522
  invoke_expense_cost=invoke_expense_cost,
523
+ output_expense_cost=output_expense_cost,
524
  **data.get("additional_params", {})
525
  )
526
  self._agents[name] = manager_class(
 
531
  invoke_resource_cost,
532
  create_expense_cost,
533
  invoke_expense_cost,
534
+ output_expense_cost
535
  )
536
  except Exception as e:
537
  output_assistant_response(f"Error loading agents: {e}")
src/models/models.json CHANGED
@@ -1 +1,12 @@
1
- {}
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Poet": {
3
+ "base_model": "gemini-1.5-flash",
4
+ "description": "Agent that writes poems",
5
+ "system_prompt": "You are an agent that writes poems. When asked to write a poem, you should write a poem on the topic provided.",
6
+ "create_resource_cost": 0,
7
+ "invoke_resource_cost": 0,
8
+ "create_expense_cost": 0,
9
+ "invoke_expense_cost": 0.075,
10
+ "output_expense_cost": 0.3
11
+ }
12
+ }
src/tools/default_tools/agent_cost_manager.py CHANGED
@@ -34,36 +34,43 @@ class AgentCostManager():
34
  "description": "Avg Accuracy: 75.8%, 82.8% on LegalBench, 81.6% on multi-task understanding, 91.6% on Math",
35
  "create_expense_cost": 0,
36
  "invoke_expense_cost": 0.15,
 
37
  },
38
  "gemini-2.5-pro-exp-03-25": {
39
  "description": "Avg Accuracy: 64.3%, 83.6% on LegalBench, 84.1% on multi-task understanding, 95.2% on Math, 63.8% on Coding",
40
  "create_expense_cost": 0,
41
  "invoke_expense_cost": 1.25,
 
42
  },
43
  "gemini-2.0-flash": {
44
  "description": "Avg Accuracy: 64.3%, 79.9% on LegalBench, 77.4% on multi-task understanding, 90.9% on Math, 34.5% on Coding",
45
  "create_expense_cost": 0,
46
  "invoke_expense_cost": 0.10,
 
47
  },
48
  "gemini-2.0-flash-lite": {
49
  "description": "Avg Accuracy: 64.1%, 71.6% on multi-task understanding, 86.8% on Math, 28.9% on Coding",
50
  "create_expense_cost": 0,
51
- "invoke_expense_cost": 0.075
 
52
  },
53
  "gemini-1.5-flash": {
54
  "description": "62.0% on LegalBench, 61.0% on MMLU, 59.0% on MATH",
55
  "create_expense_cost": 0,
56
  "invoke_expense_cost": 0.075,
 
57
  },
58
  "gemini-1.5-flash-8b": {
59
  "description": "High volume and lower intelligence tasks",
60
  "create_expense_cost": 0,
61
  "invoke_expense_cost": 0.0375,
 
62
  },
63
  "groq-qwen-qwq-32b": {
64
- "description": "Avg Accuracy: 60.0%, 70.0% on multi-task understanding, 80.0% on Math",
65
  "create_expense_cost": 0,
66
- "invoke_expense_cost": 0.05,
 
67
  },
68
  }
69
 
 
34
  "description": "Avg Accuracy: 75.8%, 82.8% on LegalBench, 81.6% on multi-task understanding, 91.6% on Math",
35
  "create_expense_cost": 0,
36
  "invoke_expense_cost": 0.15,
37
+ "output_expense_cost": 0.60,
38
  },
39
  "gemini-2.5-pro-exp-03-25": {
40
  "description": "Avg Accuracy: 64.3%, 83.6% on LegalBench, 84.1% on multi-task understanding, 95.2% on Math, 63.8% on Coding",
41
  "create_expense_cost": 0,
42
  "invoke_expense_cost": 1.25,
43
+ "output_expense_cost": 10.00,
44
  },
45
  "gemini-2.0-flash": {
46
  "description": "Avg Accuracy: 64.3%, 79.9% on LegalBench, 77.4% on multi-task understanding, 90.9% on Math, 34.5% on Coding",
47
  "create_expense_cost": 0,
48
  "invoke_expense_cost": 0.10,
49
+ "output_expense_cost": 0.40,
50
  },
51
  "gemini-2.0-flash-lite": {
52
  "description": "Avg Accuracy: 64.1%, 71.6% on multi-task understanding, 86.8% on Math, 28.9% on Coding",
53
  "create_expense_cost": 0,
54
+ "invoke_expense_cost": 0.075,
55
+ "output_expense_cost": 0.30,
56
  },
57
  "gemini-1.5-flash": {
58
  "description": "62.0% on LegalBench, 61.0% on MMLU, 59.0% on MATH",
59
  "create_expense_cost": 0,
60
  "invoke_expense_cost": 0.075,
61
+ "output_expense_cost": 0.30,
62
  },
63
  "gemini-1.5-flash-8b": {
64
  "description": "High volume and lower intelligence tasks",
65
  "create_expense_cost": 0,
66
  "invoke_expense_cost": 0.0375,
67
+ "output_expense_cost": 0.15,
68
  },
69
  "groq-qwen-qwq-32b": {
70
+ "description": "79.5% on AIME24, is comparable to o1-mini and DeepSeek-R1 on all reasonig tasks",
71
  "create_expense_cost": 0,
72
+ "invoke_expense_cost": 0.29,
73
+ "output_expense_cost": 0.39,
74
  },
75
  }
76
 
src/tools/default_tools/agent_creater_tool.py CHANGED
@@ -55,6 +55,7 @@ class AgentCreator():
55
  invoke_resource_cost = model_costs[base_model].get("invoke_resource_cost", 0)
56
  create_expense_cost = model_costs[base_model].get("create_expense_cost", 0)
57
  invoke_expense_cost = model_costs[base_model].get("invoke_expense_cost", 0)
 
58
 
59
  agent_manager = AgentManager()
60
  try:
@@ -66,7 +67,8 @@ class AgentCreator():
66
  create_resource_cost=create_resource_cost,
67
  invoke_resource_cost=invoke_resource_cost,
68
  create_expense_cost=create_expense_cost,
69
- invoke_expense_cost=invoke_expense_cost
 
70
  )
71
  except ValueError as e:
72
  return {
 
55
  invoke_resource_cost = model_costs[base_model].get("invoke_resource_cost", 0)
56
  create_expense_cost = model_costs[base_model].get("create_expense_cost", 0)
57
  invoke_expense_cost = model_costs[base_model].get("invoke_expense_cost", 0)
58
+ output_expense_cost = model_costs[base_model].get("output_expense_cost", 0)
59
 
60
  agent_manager = AgentManager()
61
  try:
 
67
  create_resource_cost=create_resource_cost,
68
  invoke_resource_cost=invoke_resource_cost,
69
  create_expense_cost=create_expense_cost,
70
+ invoke_expense_cost=invoke_expense_cost,
71
+ output_expense_cost=output_expense_cost
72
  )
73
  except ValueError as e:
74
  return {