Server side implementation for interactive entry edits
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from datetime import datetime
|
||||
from enum import Enum, auto
|
||||
from threading import Lock
|
||||
from typing import Callable, Dict, List, Optional
|
||||
@@ -55,6 +56,9 @@ class WebAgent(BaseAgent):
|
||||
self._token_handlers: List[Callable[[str, str], None]] = []
|
||||
self._context_change_handlers: List[Callable[[str, bool], None]] = []
|
||||
|
||||
# Working memory change handler
|
||||
self._working_memory.add_change_handler(self._handle_memory_update)
|
||||
|
||||
@property
|
||||
def llms(self) -> Dict[str, LlmState]:
|
||||
"""Get current state of all LLMs"""
|
||||
@@ -138,9 +142,9 @@ class WebAgent(BaseAgent):
|
||||
if llm_name not in self._llms:
|
||||
raise ValueError(f"Unknown LLM: {llm_name}")
|
||||
|
||||
self._iteration_logger.log_iteration(self._context, response)
|
||||
|
||||
parse_result = self._parser.parse(response)
|
||||
timestamp = datetime.now()
|
||||
self._iteration_logger.log_iteration(timestamp, self._context, response)
|
||||
parse_result = self._parser.parse(timestamp, response)
|
||||
if isinstance(parse_result, Command):
|
||||
result = parse_result.execute(self._working_memory)
|
||||
self._command_result = result
|
||||
@@ -150,11 +154,14 @@ class WebAgent(BaseAgent):
|
||||
parse_result.update()
|
||||
self._working_memory.update()
|
||||
self._working_memory.add_entry(parse_result)
|
||||
|
||||
self.modify_context(self._compile_context(self._llms[llm_name]), True)
|
||||
|
||||
def _set_llm_state(self, llm_name: str, state: LlmState) -> None:
|
||||
"""Update LLM state and notify handlers"""
|
||||
self._llm_states[llm_name] = state
|
||||
for handler in self._llm_change_handlers:
|
||||
handler(llm_name, state)
|
||||
|
||||
def _handle_memory_update(self) -> None:
|
||||
"""Handle memory updates and update context"""
|
||||
context = self._compile_context(next(iter(self._llms.values())))
|
||||
self.modify_context(context, True)
|
||||
Reference in New Issue
Block a user