Spaces:
Running
Running
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": "
|
65 |
"create_expense_cost": 0,
|
66 |
-
"invoke_expense_cost": 0.
|
|
|
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 {
|