Source code for council.contexts._agent_iteration_context_store

from typing import Dict, Iterable, List, Mapping, Sequence

from ._chat_message import ChatMessage, ScoredChatMessage
from ._execution_log_entry import ExecutionLogEntry
from ._message_collection import MessageCollection
from ._message_list import MessageList
from ._monitored_message_list import MonitoredMessageList


[docs] class AgentIterationContextStore: """ Data storage for the execution of iteration """ def __init__(self) -> None: self._chains: Dict[str, MonitoredMessageList] = {} self._evaluator: List[ScoredChatMessage] = [] @property def chains(self) -> Mapping[str, MessageCollection]: """ Returns the messages generated by each chain in this iteration """ return self._chains @property def evaluator(self) -> Sequence[ScoredChatMessage]: """ Returns the evaluation of this iteration """ return self._evaluator
[docs] def set_evaluator(self, value: Iterable[ScoredChatMessage]) -> None: """ Set the evaluation result for this iteration """ self._evaluator.clear() self._evaluator.extend(value)
[docs] def ensure_chain_exists(self, name: str) -> None: """ Ensures a chain exists in the current iteration """ self._chains[name] = MonitoredMessageList(MessageList())
[docs] def append_to_chain(self, chain: str, message: ChatMessage, log_entry: ExecutionLogEntry) -> None: """ store the given message into the chain context Args: chain: name of the chain message: the message to be stored log_entry: a log entry to trace the origin of the message """ self._chains[chain].append(message, log_entry)