Skip to main content
Stream events let you react to agent activity - update UI, log activity, or integrate with other systems.

Quick Start

1

Create Stream Events

use praisonai::{StreamEvent, StreamEventType};

// Create a text delta event
let event = StreamEvent::delta_text("Hello, ");

// Create events for different stages
let start = StreamEvent::request_start();
let first = StreamEvent::first_token("The");
let end = StreamEvent::stream_end();
2

Handle Events

use praisonai::{StreamEvent, StreamEventType};

fn handle_event(event: &StreamEvent) {
    match event.event_type {
        StreamEventType::RequestStart => println!("Starting..."),
        StreamEventType::FirstToken => println!("First token: {:?}", event.content),
        StreamEventType::DeltaText => print!("{}", event.content.as_deref().unwrap_or("")),
        StreamEventType::ToolCallEnd => println!("Tool complete"),
        StreamEventType::StreamEnd => println!("\nDone!"),
        StreamEventType::Error => eprintln!("Error: {:?}", event.error),
        _ => {}
    }
}
3

Track Metrics

use praisonai::StreamMetrics;

let mut metrics = StreamMetrics::new();
metrics.start();

// ... process stream ...

metrics.end();
println!("Time to First Token: {:?}ms", metrics.time_to_first_token());
println!("Total Tokens: {}", metrics.total_tokens());

StreamEventType

Events emitted during streaming.
pub enum StreamEventType {
    RequestStart,    // Before API call
    HeadersReceived, // HTTP headers arrived
    FirstToken,      // First content (TTFT marker)
    DeltaText,       // Text content chunk
    DeltaToolCall,   // Tool call in progress
    ToolCallEnd,     // Tool call complete
    LastToken,       // Final content chunk
    StreamEnd,       // Stream completed
    Error,           // Error occurred
}
EventWhen Triggered
RequestStartBefore API call
HeadersReceivedHTTP headers received
FirstTokenFirst token arrives
DeltaTextEach text chunk
DeltaToolCallTool call delta
ToolCallEndTool execution done
LastTokenFinal token
StreamEndStream finishes
ErrorError occurs

StreamEvent

Structure for streaming events.
pub struct StreamEvent {
    pub event_type: StreamEventType,
    pub content: Option<String>,
    pub tool_call: Option<ToolCallData>,
    pub error: Option<String>,
    pub timestamp: DateTime<Utc>,
    // ... more fields
}

Factory Methods

MethodDescription
request_start()Create start event
first_token(content)Create first token event
delta_text(content)Create text delta event
stream_end()Create end event
error_event(msg)Create error event

Builder Methods

MethodDescription
.content(text)Set content
.tool_call(data)Set tool call data
.error(msg)Set error
.agent_id(id)Set agent ID
.session_id(id)Set session ID
.metadata(k, v)Add metadata

Best Practices

Process events quickly - avoid blocking the stream.
Great for logging, metrics, progress updates, and debugging.
Use FirstToken event to measure Time To First Token.