pub trait ConversationManager: Send + Sync {
// Required methods
fn add_message(&mut self, message: Message);
fn messages_for_context(
&self,
limits: ContextLimits,
estimate_tokens: TokenEstimator<'_>,
) -> Vec<Message>;
fn all_messages(&self) -> &[Message];
fn hydrate(&mut self, messages: Vec<Message>);
fn clear(&mut self);
// Provided method
fn context_usage(
&self,
limits: ContextLimits,
estimate_tokens: TokenEstimator<'_>,
) -> ContextUsage { ... }
}Expand description
Trait for managing conversation context
A ConversationManager owns the full message history and decides
which messages to include when calling the model. This allows for
different strategies like sliding window, summarization, etc.
Required Methods§
Sourcefn add_message(&mut self, message: Message)
fn add_message(&mut self, message: Message)
Add a message to the conversation history
Sourcefn messages_for_context(
&self,
limits: ContextLimits,
estimate_tokens: TokenEstimator<'_>,
) -> Vec<Message>
fn messages_for_context( &self, limits: ContextLimits, estimate_tokens: TokenEstimator<'_>, ) -> Vec<Message>
Get messages to send to the model (may be a subset of all messages)
This method returns the messages that should be included in the next model call, respecting context window limits.
§Arguments
limits- Context window limitsestimate_tokens- Function to estimate token count for messages
Sourcefn all_messages(&self) -> &[Message]
fn all_messages(&self) -> &[Message]
Get all messages in the conversation (full history)
Provided Methods§
Sourcefn context_usage(
&self,
limits: ContextLimits,
estimate_tokens: TokenEstimator<'_>,
) -> ContextUsage
fn context_usage( &self, limits: ContextLimits, estimate_tokens: TokenEstimator<'_>, ) -> ContextUsage
Get context usage statistics