pub struct ToolCallBuffer { /* private fields */ }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 for_declared_tools(declared_tools: HashSet<String>) -> Self
pub fn for_declared_tools(declared_tools: HashSet<String>) -> Self
Create a buffer that emits a parsed call only when every call names one of
declared_tools, as parse_declared_tool_calls does.
With no declared tools the buffer never holds text back: every chunk is emitted as text immediately.
§Example
use std::collections::HashSet;
use adk_core::Part;
use adk_model::tool_call_parser::{BufferAction, ToolCallBuffer};
let mut buffer = ToolCallBuffer::for_declared_tools(HashSet::new());
let BufferAction::Emit(parts) = buffer.push("<tool_call>{\"name\":\"x\"}</tool_call>") else {
panic!("nothing is buffered without declared tools");
};
assert!(matches!(&parts[0], Part::Text { .. }));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§
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