fix: agent loop type mismatch (#2924)

This commit is contained in:
cthomas
2025-06-19 16:35:38 -07:00
committed by GitHub
parent 1a477ccbfe
commit f2d3ec45f1
5 changed files with 23 additions and 4 deletions

View File

@@ -131,7 +131,7 @@ class LettaAgent(BaseAgent):
agent_state = await self.agent_manager.get_agent_by_id_async(
agent_id=self.agent_id, include_relationships=["tools", "memory", "tool_exec_environment_variables"], actor=self.actor
)
_, new_in_context_messages, usage, stop_reason = await self._step(
_, new_in_context_messages, stop_reason, usage = await self._step(
agent_state=agent_state,
input_messages=input_messages,
max_steps=max_steps,
@@ -441,7 +441,7 @@ class LettaAgent(BaseAgent):
force=False,
)
return current_in_context_messages, new_in_context_messages, usage, stop_reason
return current_in_context_messages, new_in_context_messages, stop_reason, usage
async def _update_agent_last_run_metrics(self, completion_time: datetime, duration_ms: float) -> None:
try:

View File

@@ -38,6 +38,7 @@ from letta.server.rest_api.utils import (
from letta.services.agent_manager import AgentManager
from letta.services.block_manager import BlockManager
from letta.services.helpers.agent_manager_helper import compile_system_message
from letta.services.job_manager import JobManager
from letta.services.message_manager import MessageManager
from letta.services.passage_manager import PassageManager
from letta.services.summarizer.enums import SummarizationMode
@@ -64,6 +65,7 @@ class VoiceAgent(BaseAgent):
message_manager: MessageManager,
agent_manager: AgentManager,
block_manager: BlockManager,
job_manager: JobManager,
passage_manager: PassageManager,
actor: User,
):
@@ -73,6 +75,7 @@ class VoiceAgent(BaseAgent):
# Summarizer settings
self.block_manager = block_manager
self.job_manager = job_manager
self.passage_manager = passage_manager
# TODO: This is not guaranteed to exist!
self.summary_block_label = "human"
@@ -98,6 +101,7 @@ class VoiceAgent(BaseAgent):
agent_manager=self.agent_manager,
actor=self.actor,
block_manager=self.block_manager,
job_manager=self.job_manager,
passage_manager=self.passage_manager,
target_block_label=self.summary_block_label,
),
@@ -439,6 +443,7 @@ class VoiceAgent(BaseAgent):
message_manager=self.message_manager,
agent_manager=self.agent_manager,
block_manager=self.block_manager,
job_manager=self.job_manager,
passage_manager=self.passage_manager,
sandbox_env_vars=sandbox_env_vars,
actor=self.actor,

View File

@@ -15,6 +15,7 @@ from letta.schemas.tool_rule import ChildToolRule, ContinueToolRule, InitToolRul
from letta.schemas.user import User
from letta.services.agent_manager import AgentManager
from letta.services.block_manager import BlockManager
from letta.services.job_manager import JobManager
from letta.services.message_manager import MessageManager
from letta.services.passage_manager import PassageManager
from letta.services.summarizer.enums import SummarizationMode
@@ -34,6 +35,7 @@ class VoiceSleeptimeAgent(LettaAgent):
message_manager: MessageManager,
agent_manager: AgentManager,
block_manager: BlockManager,
job_manager: JobManager,
passage_manager: PassageManager,
target_block_label: str,
actor: User,
@@ -43,6 +45,7 @@ class VoiceSleeptimeAgent(LettaAgent):
message_manager=message_manager,
agent_manager=agent_manager,
block_manager=block_manager,
job_manager=job_manager,
passage_manager=passage_manager,
actor=actor,
)
@@ -64,7 +67,9 @@ class VoiceSleeptimeAgent(LettaAgent):
self,
input_messages: List[MessageCreate],
max_steps: int = DEFAULT_MAX_STEPS,
run_id: Optional[str] = None,
use_assistant_message: bool = True,
request_start_timestamp_ns: Optional[int] = None,
include_return_message_types: Optional[List[MessageType]] = None,
) -> LettaResponse:
"""
@@ -82,7 +87,7 @@ class VoiceSleeptimeAgent(LettaAgent):
]
# Summarize
current_in_context_messages, new_in_context_messages, usage, stop_reason = await super()._step(
current_in_context_messages, new_in_context_messages, stop_reason, usage = await super()._step(
agent_state=agent_state, input_messages=input_messages, max_steps=max_steps
)
new_in_context_messages, updated = self.summarizer.summarize(
@@ -172,7 +177,12 @@ class VoiceSleeptimeAgent(LettaAgent):
return f"Failed to store memory given start_index {start_index} and end_index {end_index}: {e}", False
async def step_stream(
self, input_messages: List[MessageCreate], max_steps: int = DEFAULT_MAX_STEPS, use_assistant_message: bool = True
self,
input_messages: List[MessageCreate],
max_steps: int = DEFAULT_MAX_STEPS,
use_assistant_message: bool = True,
request_start_timestamp_ns: Optional[int] = None,
include_return_message_types: Optional[List[MessageType]] = None,
) -> AsyncGenerator[Union[LettaMessage, LegacyLettaMessage, MessageStreamStatus], None]:
"""
This agent is synchronous-only. If called in an async context, raise an error.

View File

@@ -53,6 +53,7 @@ async def create_voice_chat_completions(
message_manager=server.message_manager,
agent_manager=server.agent_manager,
block_manager=server.block_manager,
job_manager=server.job_manager,
passage_manager=server.passage_manager,
actor=actor,
)

View File

@@ -26,6 +26,7 @@ from letta.schemas.usage import LettaUsageStatistics
from letta.server.server import SyncServer
from letta.services.agent_manager import AgentManager
from letta.services.block_manager import BlockManager
from letta.services.job_manager import JobManager
from letta.services.message_manager import MessageManager
from letta.services.passage_manager import PassageManager
from letta.services.summarizer.enums import SummarizationMode
@@ -377,6 +378,7 @@ async def test_summarization(disable_e2b_api_key, voice_agent, server_url):
agent_manager=agent_manager,
actor=actor,
block_manager=BlockManager(),
job_manager=JobManager(),
passage_manager=PassageManager(),
target_block_label="human",
)
@@ -455,6 +457,7 @@ async def test_voice_sleeptime_agent(disable_e2b_api_key, voice_agent, server_ur
agent_manager=agent_manager,
actor=actor,
block_manager=BlockManager(),
job_manager=JobManager(),
passage_manager=PassageManager(),
target_block_label="human",
)