Skip to main content

ConversationManager

Trait ConversationManager 

Source
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§

Source

fn add_message(&mut self, message: Message)

Add a message to the conversation history

Source

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 limits
  • estimate_tokens - Function to estimate token count for messages
Source

fn all_messages(&self) -> &[Message]

Get all messages in the conversation (full history)

Source

fn hydrate(&mut self, messages: Vec<Message>)

Restore conversation state from persisted messages

Source

fn clear(&mut self)

Clear all messages from the conversation

Provided Methods§

Source

fn context_usage( &self, limits: ContextLimits, estimate_tokens: TokenEstimator<'_>, ) -> ContextUsage

Get context usage statistics

Implementors§