Skip to main content

ContextStrategy

Trait ContextStrategy 

Source
pub trait ContextStrategy: WasmCompatSend + WasmCompatSync {
    // Required methods
    fn should_compact(&self, messages: &[Message], token_count: usize) -> bool;
    fn compact(
        &self,
        messages: Vec<Message>,
    ) -> impl Future<Output = Result<Vec<Message>, ContextError>> + WasmCompatSend;
    fn token_estimate(&self, messages: &[Message]) -> usize;
}
Expand description

Strategy for compacting conversation context when it exceeds token limits.

Implementations decide when to compact and how to reduce the message list.

§Example

use std::future::Future;
use neuron_types::*;

struct KeepLastN { n: usize }
impl ContextStrategy for KeepLastN {
    fn should_compact(&self, _messages: &[Message], token_count: usize) -> bool {
        token_count > 100_000
    }
    fn compact(&self, messages: Vec<Message>)
        -> impl Future<Output = Result<Vec<Message>, ContextError>> + Send
    {
        async move { Ok(messages.into_iter().rev().take(self.n).collect()) }
    }
    fn token_estimate(&self, messages: &[Message]) -> usize { messages.len() * 100 }
}

Required Methods§

Source

fn should_compact(&self, messages: &[Message], token_count: usize) -> bool

Whether compaction should be triggered given the current messages and token count.

Source

fn compact( &self, messages: Vec<Message>, ) -> impl Future<Output = Result<Vec<Message>, ContextError>> + WasmCompatSend

Compact the message list to reduce token usage.

Source

fn token_estimate(&self, messages: &[Message]) -> usize

Estimate the token count for a list of messages.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§