feat: add sleeptime frequency setting in ADE (#1685)

This commit is contained in:
cthomas
2025-04-14 09:05:38 -07:00
committed by GitHub
parent 29c5ef4881
commit b82a19a195
3 changed files with 49 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ from letta.log import get_logger
from letta.orm.errors import NoResultFound
from letta.schemas.agent import AgentState, AgentType, CreateAgent, UpdateAgent
from letta.schemas.block import Block, BlockUpdate
from letta.schemas.group import Group
from letta.schemas.job import JobStatus, JobUpdate, LettaRequestConfig
from letta.schemas.letta_message import LettaMessageUnion, LettaMessageUpdateUnion
from letta.schemas.letta_request import LettaRequest, LettaStreamingRequest
@@ -804,3 +805,16 @@ def reset_messages(
"""Resets the messages for an agent"""
actor = server.user_manager.get_user_or_default(user_id=actor_id)
return server.agent_manager.reset_messages(agent_id=agent_id, actor=actor, add_default_initial_messages=add_default_initial_messages)
@router.get("/{agent_id}/groups", response_model=List[Group], operation_id="list_agent_groups")
async def list_agent_groups(
agent_id: str,
manager_type: Optional[str] = Query(None, description="Manager type to filter groups by"),
server: "SyncServer" = Depends(get_letta_server),
actor_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
):
"""Lists the groups for an agent"""
actor = server.user_manager.get_user_or_default(user_id=actor_id)
print("in list agents with manager_type", manager_type)
return server.agent_manager.list_groups(agent_id=agent_id, manager_type=manager_type, actor=actor)

View File

@@ -34,6 +34,7 @@ from letta.schemas.agent import AgentType, CreateAgent, UpdateAgent
from letta.schemas.block import Block as PydanticBlock
from letta.schemas.block import BlockUpdate
from letta.schemas.embedding_config import EmbeddingConfig
from letta.schemas.group import Group as PydanticGroup
from letta.schemas.group import ManagerType
from letta.schemas.llm_config import LLMConfig
from letta.schemas.memory import Memory
@@ -642,6 +643,14 @@ class AgentManager:
# Return the updated agent state
return agent.to_pydantic()
@enforce_types
def list_groups(self, agent_id: str, actor: PydanticUser, manager_type: Optional[str] = None) -> List[PydanticGroup]:
with self.session_maker() as session:
agent = AgentModel.read(db_session=session, identifier=agent_id, actor=actor)
if manager_type:
return [group.to_pydantic() for group in agent.groups if group.manager_type == manager_type]
return [group.to_pydantic() for group in agent.groups]
# ======================================================================================================================
# In Context Messages Management
# ======================================================================================================================

View File

@@ -194,6 +194,32 @@ async def test_modify_group_pattern(server, actor, participant_agents, manager_a
server.group_manager.delete_group(group_id=group.id, actor=actor)
@pytest.mark.asyncio
async def test_list_agent_groups(server, actor, participant_agents):
group_a = server.group_manager.create_group(
group=GroupCreate(
description="This is a group chat between best friends all like to hang out together. In their free time they like to solve mysteries.",
agent_ids=[agent.id for agent in participant_agents],
),
actor=actor,
)
group_b = server.group_manager.create_group(
group=GroupCreate(
description="This is a group chat between best friends all like to hang out together. In their free time they like to solve mysteries.",
agent_ids=[participant_agents[0].id],
),
actor=actor,
)
agent_a_groups = server.agent_manager.list_groups(agent_id=participant_agents[0].id, actor=actor)
assert sorted([group.id for group in agent_a_groups]) == sorted([group_a.id, group_b.id])
agent_b_groups = server.agent_manager.list_groups(agent_id=participant_agents[1].id, actor=actor)
assert [group.id for group in agent_b_groups] == [group_a.id]
server.group_manager.delete_group(group_id=group_a.id, actor=actor)
server.group_manager.delete_group(group_id=group_b.id, actor=actor)
@pytest.mark.asyncio
async def test_round_robin(server, actor, participant_agents):
description = (