pub struct MessageSegmenter;Expand description
Segments messages into atomic units for budget management.
§Algorithm
- Iterate through messages
- When finding an assistant message with tool_calls, start a segment
- Continue adding messages to the segment until all tool results are collected
- Handle edge cases: orphan tool results, standalone messages
Implementations§
Source§impl MessageSegmenter
impl MessageSegmenter
Sourcepub fn new() -> MessageSegmenter
pub fn new() -> MessageSegmenter
Create a new segmenter.
Sourcepub fn segment(&self, messages: Vec<Message>) -> Vec<MessageSegment>
pub fn segment(&self, messages: Vec<Message>) -> Vec<MessageSegment>
Segment messages, ensuring tool-call chains stay together.
Returns segments in chronological order (oldest first).
Sourcepub fn segment_with_system(
&self,
messages: Vec<Message>,
) -> (Vec<Message>, Vec<MessageSegment>)
pub fn segment_with_system( &self, messages: Vec<Message>, ) -> (Vec<Message>, Vec<MessageSegment>)
Segment messages including system messages in a separate collection.
Returns (system_messages, segments) tuple.
Trait Implementations§
Source§impl Debug for MessageSegmenter
impl Debug for MessageSegmenter
Source§impl Default for MessageSegmenter
impl Default for MessageSegmenter
Source§fn default() -> MessageSegmenter
fn default() -> MessageSegmenter
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for MessageSegmenter
impl RefUnwindSafe for MessageSegmenter
impl Send for MessageSegmenter
impl Sync for MessageSegmenter
impl Unpin for MessageSegmenter
impl UnsafeUnpin for MessageSegmenter
impl UnwindSafe for MessageSegmenter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more