Expand description
§serdes-ai-streaming
Streaming support for serdes-ai.
This crate provides infrastructure for handling streaming responses from LLM providers, including SSE parsing, async stream abstractions, delta accumulation, and agent streaming.
§Core Concepts
AgentStream: Stream agent execution with typed eventsAgentStreamEvent: Events emitted during streaming (text, tools, thinking)PartialResponse: Accumulate deltas into complete responsesSseParser: Parse Server-Sent Events from HTTP responses- Debouncing: Temporal grouping for efficient streaming
§Example - Basic Streaming
ⓘ
use serdes_ai_streaming::{AgentStream, AgentStreamExt};
use futures::StreamExt;
let stream = AgentStream::new(delta_stream, "run-123");
// Stream only text deltas
let mut text_stream = stream.text_deltas();
while let Some(text) = text_stream.next().await {
print!("{}", text);
}§Example - SSE Parsing
ⓘ
use serdes_ai_streaming::{SseParser, SseEventExt};
let mut parser = SseParser::new();
parser.feed_str("data: {\"content\": \"hello\"}\n\n");
while let Some(event) = parser.next_event() {
if let Some(delta) = event.to_response_delta() {
println!("Delta: {:?}", delta);
}
}§Example - Debouncing
ⓘ
use serdes_ai_streaming::{StreamDebounceExt, TextStreamExt};
use std::time::Duration;
let debounced = text_stream
.debounce(Duration::from_millis(50))
.flat_map(|batch| futures::stream::iter(batch));
// Or coalesce into larger chunks
let chunked = text_stream.coalesce(100, 1000);Re-exports§
pub use agent_stream::AgentStream;pub use agent_stream::AgentStreamExt;pub use agent_stream::OutputStream;pub use agent_stream::ResponseStream;pub use agent_stream::StreamConfig;pub use agent_stream::StreamState;pub use agent_stream::TextDelta;pub use agent_stream::TextDeltaStream;pub use debounce::CoalescedTextStream;pub use debounce::DebouncedStream;pub use debounce::StreamDebounceExt;pub use debounce::TextStreamExt;pub use debounce::ThrottledStream;pub use error::StreamError;pub use error::StreamResult;pub use events::AgentStreamEvent;pub use partial_response::PartialResponse;pub use partial_response::ResponseDelta;pub use parts_manager::ManagedPart;pub use parts_manager::ModelResponsePartsManager;pub use parts_manager::ToolCallAccumulator;pub use parts_manager::VendorId;pub use sse::SseEvent;pub use sse::SseEventExt;pub use sse::SseParser;pub use sse::SseStream;
Modules§
- agent_
stream - Agent streaming implementation.
- debounce
- Temporal grouping for efficient streaming.
- error
- Streaming errors.
- events
- Streaming event types.
- partial_
response - Partial response accumulation.
- parts_
manager - Parts manager for streaming responses.
- prelude
- Prelude for common imports.
- sse
- Server-Sent Events (SSE) parsing.