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 {
|