cleanup reasoning agentsg

master
Kye Gomez 1 day ago
parent e3ef675fc1
commit 73dca28bd5

@ -1,6 +1,12 @@
from typing import List, Literal, Dict, Callable, Any, Optional, Tuple, Hashable
from functools import lru_cache
from typing import (
List,
Literal,
Dict,
Callable,
Any,
Tuple,
Hashable,
)
@ -44,11 +50,9 @@ class ReasoningAgentRouter:
output_type (OutputType): The format of the output (e.g., dict, list).
"""
# Class variable to store cached agent instances
_agent_cache: Dict[Tuple[Hashable, ...], Any] = {}
def __init__(
self,
agent_name: str = "reasoning_agent",
@ -73,15 +77,10 @@ class ReasoningAgentRouter:
self.num_knowledge_items = num_knowledge_items
self.memory_capacity = memory_capacity
# Added: Initialize the factory mapping dictionary
self._initialize_agent_factories()
def _initialize_agent_factories(self) -> None:
"""
Initialize the agent factory mapping dictionary, mapping various agent types to their respective creation functions.
@ -91,12 +90,10 @@ class ReasoningAgentRouter:
# ReasoningDuo factory method
"reasoning-duo": self._create_reasoning_duo,
"reasoning-agent": self._create_reasoning_duo,
# SelfConsistencyAgent factory methods
"self-consistency": self._create_consistency_agent,
"consistency-agent": self._create_consistency_agent,
# IREAgent factory methods
"ire": self._create_ire_agent,
"ire-agent": self._create_ire_agent,
# Other agent type factory methods
@ -105,7 +102,6 @@ class ReasoningAgentRouter:
"GKPAgent": self._create_gkp_agent,
}
def _get_cache_key(self) -> Tuple[Hashable, ...]:
"""
Generate a unique key for cache lookup.
@ -125,10 +121,9 @@ class ReasoningAgentRouter:
self.num_samples,
self.output_type,
self.num_knowledge_items,
self.memory_capacity
self.memory_capacity,
)
def _create_reasoning_duo(self):
"""Create an agent instance for the ReasoningDuo type"""
return ReasoningDuo(
@ -189,7 +184,6 @@ class ReasoningAgentRouter:
num_knowledge_items=self.num_knowledge_items,
)
def select_swarm(self):
"""
Select and initialize the appropriate reasoning swarm based on the specified swarm type.
@ -202,25 +196,23 @@ class ReasoningAgentRouter:
# Generate cache key
cache_key = self._get_cache_key()
# Check if an instance with the same configuration already exists in the cache
if cache_key in self.__class__._agent_cache:
return self.__class__._agent_cache[cache_key]
try:
# Use the factory method to create a new instance
agent = self.agent_factories[self.swarm_type]()
# Add the newly created instance to the cache
self.__class__._agent_cache[cache_key] = agent
return agent
except KeyError:
# Keep the same error handling as the original code
raise ValueError(f"Invalid swarm type: {self.swarm_type}")
def run(self, task: str, *args, **kwargs):
"""
Execute the reasoning process of the selected swarm on a given task.
@ -236,7 +228,6 @@ class ReasoningAgentRouter:
swarm = self.select_swarm()
return swarm.run(task=task)
def batched_run(self, tasks: List[str], *args, **kwargs):
"""
Execute the reasoning process on a batch of tasks.
@ -254,8 +245,6 @@ class ReasoningAgentRouter:
results.append(self.run(task, *args, **kwargs))
return results
@classmethod
def clear_cache(cls):
"""
@ -263,5 +252,3 @@ class ReasoningAgentRouter:
Use this when you need to free memory or force the creation of new instances.
"""
cls._agent_cache.clear()

Loading…
Cancel
Save