Skip to main content

Crate serdes_ai_streaming

Crate serdes_ai_streaming 

Source
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 events
  • AgentStreamEvent: Events emitted during streaming (text, tools, thinking)
  • PartialResponse: Accumulate deltas into complete responses
  • SseParser: 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.