64 lines
2.6 KiB
Python
64 lines
2.6 KiB
Python
from typing import TYPE_CHECKING
|
|
|
|
from letta.agents.base_agent_v2 import BaseAgentV2
|
|
from letta.agents.letta_agent_v2 import LettaAgentV2
|
|
from letta.agents.letta_agent_v3 import LettaAgentV3
|
|
from letta.groups.sleeptime_multi_agent_v3 import SleeptimeMultiAgentV3
|
|
from letta.groups.sleeptime_multi_agent_v4 import SleeptimeMultiAgentV4
|
|
from letta.schemas.agent import AgentState
|
|
from letta.schemas.enums import AgentType
|
|
|
|
if TYPE_CHECKING:
|
|
from letta.orm import User
|
|
|
|
|
|
class AgentLoop:
|
|
"""Factory class for instantiating the agent execution loop based on agent type"""
|
|
|
|
@staticmethod
|
|
def load(agent_state: AgentState, actor: "User") -> BaseAgentV2:
|
|
if agent_state.agent_type in [AgentType.letta_v1_agent, AgentType.sleeptime_agent]:
|
|
if agent_state.enable_sleeptime:
|
|
if agent_state.multi_agent_group is None:
|
|
# Agent has sleeptime enabled but no group - fall back to non-sleeptime agent
|
|
from letta.log import get_logger
|
|
|
|
logger = get_logger(__name__)
|
|
logger.warning(
|
|
f"Agent {agent_state.id} has enable_sleeptime=True but multi_agent_group is None. "
|
|
f"Falling back to standard LettaAgentV3."
|
|
)
|
|
return LettaAgentV3(
|
|
agent_state=agent_state,
|
|
actor=actor,
|
|
)
|
|
return SleeptimeMultiAgentV4(
|
|
agent_state=agent_state,
|
|
actor=actor,
|
|
group=agent_state.multi_agent_group,
|
|
)
|
|
return LettaAgentV3(
|
|
agent_state=agent_state,
|
|
actor=actor,
|
|
)
|
|
elif agent_state.enable_sleeptime and agent_state.agent_type != AgentType.voice_convo_agent:
|
|
if agent_state.multi_agent_group is None:
|
|
# Agent has sleeptime enabled but no group - fall back to non-sleeptime agent
|
|
from letta.log import get_logger
|
|
|
|
logger = get_logger(__name__)
|
|
logger.warning(
|
|
f"Agent {agent_state.id} has enable_sleeptime=True but multi_agent_group is None. "
|
|
f"Falling back to standard LettaAgentV2."
|
|
)
|
|
return LettaAgentV2(
|
|
agent_state=agent_state,
|
|
actor=actor,
|
|
)
|
|
return SleeptimeMultiAgentV3(agent_state=agent_state, actor=actor, group=agent_state.multi_agent_group)
|
|
else:
|
|
return LettaAgentV2(
|
|
agent_state=agent_state,
|
|
actor=actor,
|
|
)
|