store state message in the history (#3271)
<!-- This is an auto-generated description by cubic. --> ## Summary by cubic Store the state message text in the agent history so clients can see the exact state prompt used for each step and debug more easily. - New Features - Save last_state_message_text when creating state messages. - Pass state_message into history items via _finalize and _make_history_item. - Extend AgentHistory and model_dump to include state_message. <!-- End of auto-generated description by cubic. -->
This commit is contained in:
@@ -129,6 +129,7 @@ class MessageManager:
|
||||
self.include_attributes = include_attributes or []
|
||||
self.sensitive_data = sensitive_data
|
||||
self.last_input_messages = []
|
||||
self.last_state_message_text: str | None = None
|
||||
# Only initialize messages if state is empty
|
||||
if len(self.state.history.get_messages()) == 0:
|
||||
self._set_message_with_type(self.system_prompt, 'system')
|
||||
@@ -355,6 +356,9 @@ class MessageManager:
|
||||
sample_images=self.sample_images,
|
||||
).get_user_message(effective_use_vision)
|
||||
|
||||
# Store state message text for history
|
||||
self.last_state_message_text = state_message.text
|
||||
|
||||
# Set the state message with caching enabled
|
||||
self._set_message_with_type(state_message, 'state')
|
||||
|
||||
|
||||
@@ -850,7 +850,13 @@ class Agent(Generic[Context, AgentStructuredOutput]):
|
||||
)
|
||||
|
||||
# Use _make_history_item like main branch
|
||||
await self._make_history_item(self.state.last_model_output, browser_state_summary, self.state.last_result, metadata)
|
||||
await self._make_history_item(
|
||||
self.state.last_model_output,
|
||||
browser_state_summary,
|
||||
self.state.last_result,
|
||||
metadata,
|
||||
state_message=self._message_manager.last_state_message_text,
|
||||
)
|
||||
|
||||
# Log step completion summary
|
||||
self._log_step_completion_summary(self.step_start_time, self.state.last_result)
|
||||
@@ -980,6 +986,7 @@ class Agent(Generic[Context, AgentStructuredOutput]):
|
||||
browser_state_summary: BrowserStateSummary,
|
||||
result: list[ActionResult],
|
||||
metadata: StepMetadata | None = None,
|
||||
state_message: str | None = None,
|
||||
) -> None:
|
||||
"""Create and store history item"""
|
||||
|
||||
@@ -1012,6 +1019,7 @@ class Agent(Generic[Context, AgentStructuredOutput]):
|
||||
result=result,
|
||||
state=state_history,
|
||||
metadata=metadata,
|
||||
state_message=state_message,
|
||||
)
|
||||
|
||||
self.history.add_item(history_item)
|
||||
|
||||
@@ -249,6 +249,7 @@ class AgentHistory(BaseModel):
|
||||
result: list[ActionResult]
|
||||
state: BrowserStateHistory
|
||||
metadata: StepMetadata | None = None
|
||||
state_message: str | None = None
|
||||
|
||||
model_config = ConfigDict(arbitrary_types_allowed=True, protected_namespaces=())
|
||||
|
||||
@@ -353,6 +354,7 @@ class AgentHistory(BaseModel):
|
||||
'result': result_dump,
|
||||
'state': self.state.to_dict(),
|
||||
'metadata': self.metadata.model_dump() if self.metadata else None,
|
||||
'state_message': self.state_message,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user