feat: add sleeptime frequency setting in ADE (#1685)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
# ======================================================================================================================
|
||||
|
||||
@@ -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 = (
|
||||
|
||||
Reference in New Issue
Block a user