pub struct ToolCallBuffer { /* private fields */ }Available on crate feature
models only.Expand description
Streaming buffer that accumulates tokens and detects tool call boundaries.
Use this in streaming response handlers to buffer tokens when a tool call
prefix is detected, then parse and emit Part::FunctionCall when the
closing tag arrives.
§Example
ⓘ
let mut buffer = ToolCallBuffer::new();
for chunk in stream {
match buffer.push(&chunk.text) {
BufferAction::Emit(parts) => {
for part in parts { yield part; }
}
BufferAction::Buffering => { /* still accumulating */ }
}
}
// Flush any remaining content at end of stream
for part in buffer.flush() { yield part; }Implementations§
Source§impl ToolCallBuffer
impl ToolCallBuffer
Sourcepub fn new() -> ToolCallBuffer
pub fn new() -> ToolCallBuffer
Create a new empty buffer.
Sourcepub fn push(&mut self, text: &str) -> BufferAction
pub fn push(&mut self, text: &str) -> BufferAction
Push a text chunk into the buffer.
Returns BufferAction::Emit with parts to yield, or
BufferAction::Buffering if we’re accumulating a potential tool call.
Trait Implementations§
Source§impl Default for ToolCallBuffer
impl Default for ToolCallBuffer
Source§fn default() -> ToolCallBuffer
fn default() -> ToolCallBuffer
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for ToolCallBuffer
impl RefUnwindSafe for ToolCallBuffer
impl Send for ToolCallBuffer
impl Sync for ToolCallBuffer
impl Unpin for ToolCallBuffer
impl UnsafeUnpin for ToolCallBuffer
impl UnwindSafe for ToolCallBuffer
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
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestCreates a shared type from an unshared type.