Callbacks
React to streaming events for logging, UI updates, and integrations
Stream events let you react to agent activity – update UI, log activity, or integrate with other systems.
Quick Start
- Create Stream Events
rust 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(); - Handle Events
rust 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), _ => {} } } - Track Metrics
rust 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
}| Event | When Triggered |
|---|---|
RequestStart | Before API call |
HeadersReceived | HTTP headers received |
FirstToken | First token arrives |
DeltaText | Each text chunk |
DeltaToolCall | Tool call delta |
ToolCallEnd | Tool execution done |
LastToken | Final token |
StreamEnd | Stream finishes |
Error | Error 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
| Method | Description |
|---|---|
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
| Method | Description |
|---|---|
.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
Handle events efficiently
Process events quickly – avoid blocking the stream.
Use for observability
Great for logging, metrics, progress updates, and debugging.
Track TTFT
Use FirstToken event to measure Time To First Token.