Skip to main content

ContextWindow

Struct ContextWindow 

Source
pub struct ContextWindow {
    pub max_tokens: usize,
    pub system_tokens: Vec<u32>,
    pub conversation: Vec<u32>,
    pub strategy: TruncationStrategy,
}
Expand description

A fixed-capacity token window with configurable truncation.

The window stores a protected system prompt (never truncated) and a mutable conversation segment. Together they must fit within max_tokens.

Fields§

§max_tokens: usize

Maximum total token count (system + conversation).

§system_tokens: Vec<u32>

Tokens belonging to the system prompt — never truncated.

§conversation: Vec<u32>

Accumulated conversation tokens.

§strategy: TruncationStrategy

How to truncate when the window is full.

Implementations§

Source§

impl ContextWindow

Source

pub fn new(max_tokens: usize, strategy: TruncationStrategy) -> Self

Create a new empty context window.

Source

pub fn set_system_prompt( &mut self, tokens: Vec<u32>, ) -> Result<(), ContextError>

Set the system prompt tokens.

Returns an error if the system prompt alone exceeds max_tokens.

Source

pub fn append(&mut self, tokens: &[u32]) -> usize

Append tokens to the conversation.

If the new tokens cause the window to overflow, truncation is applied before appending as much of the new tokens as will fit.

Returns the number of tokens actually appended.

Source

pub fn truncate_to_fit(&mut self) -> usize

Truncate the conversation segment to make the total fit within max_tokens.

Applies the configured TruncationStrategy. Returns the number of tokens removed from the conversation.

Source

pub fn tokens(&self) -> Vec<u32>

Concatenate system tokens and conversation tokens into a single flat vector.

The result is always within max_tokens.

Source

pub fn len(&self) -> usize

Total token count (system + conversation).

Source

pub fn is_empty(&self) -> bool

Returns true if both system and conversation are empty.

Source

pub fn remaining_capacity(&self) -> usize

Number of additional tokens that can be appended before truncation.

Source

pub fn is_at_limit(&self) -> bool

Returns true if the window is at or beyond its maximum capacity.

Source

pub fn clear_conversation(&mut self)

Clear all conversation tokens (system prompt is preserved).

Source

pub fn utilization(&self) -> f32

Fraction of max_tokens currently in use: len / max_tokens.

Returns 0.0 if max_tokens is zero.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,