feat(asyncify): migrate sleeptime agent creation (#2361)

This commit is contained in:
cthomas
2025-05-23 14:38:37 -07:00
committed by GitHub
parent 2bdeeccc41
commit 4f1e783fa1
3 changed files with 189 additions and 5 deletions

View File

@@ -852,9 +852,9 @@ class SyncServer(Server):
if request.enable_sleeptime:
if request.agent_type == AgentType.voice_convo_agent:
main_agent = self.create_voice_sleeptime_agent(main_agent=main_agent, actor=actor)
main_agent = await self.create_voice_sleeptime_agent_async(main_agent=main_agent, actor=actor)
else:
main_agent = self.create_sleeptime_agent(main_agent=main_agent, actor=actor)
main_agent = await self.create_sleeptime_agent_async(main_agent=main_agent, actor=actor)
return main_agent
@@ -897,12 +897,12 @@ class SyncServer(Server):
request.embedding_config = await self.get_embedding_config_from_handle_async(handle=request.embedding, actor=actor)
if request.enable_sleeptime:
agent = self.agent_manager.get_agent_by_id(agent_id=agent_id, actor=actor)
agent = await self.agent_manager.get_agent_by_id_async(agent_id=agent_id, actor=actor)
if agent.multi_agent_group is None:
if agent.agent_type == AgentType.voice_convo_agent:
self.create_voice_sleeptime_agent(main_agent=agent, actor=actor)
await self.create_voice_sleeptime_agent_async(main_agent=agent, actor=actor)
else:
self.create_sleeptime_agent(main_agent=agent, actor=actor)
await self.create_sleeptime_agent_async(main_agent=agent, actor=actor)
return await self.agent_manager.update_agent_async(
agent_id=agent_id,
@@ -942,6 +942,38 @@ class SyncServer(Server):
)
return self.agent_manager.get_agent_by_id(agent_id=main_agent.id, actor=actor)
async def create_sleeptime_agent_async(self, main_agent: AgentState, actor: User) -> AgentState:
request = CreateAgent(
name=main_agent.name + "-sleeptime",
agent_type=AgentType.sleeptime_agent,
block_ids=[block.id for block in main_agent.memory.blocks],
memory_blocks=[
CreateBlock(
label="memory_persona",
value=get_persona_text("sleeptime_memory_persona"),
),
],
llm_config=main_agent.llm_config,
embedding_config=main_agent.embedding_config,
project_id=main_agent.project_id,
)
sleeptime_agent = await self.agent_manager.create_agent_async(
agent_create=request,
actor=actor,
)
await self.group_manager.create_group_async(
group=GroupCreate(
description="",
agent_ids=[sleeptime_agent.id],
manager_config=SleeptimeManager(
manager_agent_id=main_agent.id,
sleeptime_agent_frequency=5,
),
),
actor=actor,
)
return await self.agent_manager.get_agent_by_id_async(agent_id=main_agent.id, actor=actor)
def create_voice_sleeptime_agent(self, main_agent: AgentState, actor: User) -> AgentState:
# TODO: Inject system
request = CreateAgent(
@@ -976,6 +1008,40 @@ class SyncServer(Server):
)
return self.agent_manager.get_agent_by_id(agent_id=main_agent.id, actor=actor)
async def create_voice_sleeptime_agent_async(self, main_agent: AgentState, actor: User) -> AgentState:
# TODO: Inject system
request = CreateAgent(
name=main_agent.name + "-sleeptime",
agent_type=AgentType.voice_sleeptime_agent,
block_ids=[block.id for block in main_agent.memory.blocks],
memory_blocks=[
CreateBlock(
label="memory_persona",
value=get_persona_text("voice_memory_persona"),
),
],
llm_config=LLMConfig.default_config("gpt-4.1"),
embedding_config=main_agent.embedding_config,
project_id=main_agent.project_id,
)
voice_sleeptime_agent = await self.agent_manager.create_agent_async(
agent_create=request,
actor=actor,
)
await self.group_manager.create_group_async(
group=GroupCreate(
description="Low latency voice chat with async memory management.",
agent_ids=[voice_sleeptime_agent.id],
manager_config=VoiceSleeptimeManager(
manager_agent_id=main_agent.id,
max_message_buffer_length=constants.DEFAULT_MAX_MESSAGE_BUFFER_LENGTH,
min_message_buffer_length=constants.DEFAULT_MIN_MESSAGE_BUFFER_LENGTH,
),
),
actor=actor,
)
return await self.agent_manager.get_agent_by_id_async(agent_id=main_agent.id, actor=actor)
# convert name->id
# TODO: These can be moved to agent_manager