Skip to main content
Events notify you when important things happen during agent execution. Use the StreamEvent system to track agent progress.

Quick Start

1

Create and Handle Events

use praisonai::{StreamEvent, StreamEventType};

fn handle_event(event: &StreamEvent) {
    match event.event_type {
        StreamEventType::RequestStart => println!("🚀 Starting..."),
        StreamEventType::FirstToken => println!("💬 First response"),
        StreamEventType::DeltaText => {
            if let Some(content) = &event.content {
                print!("{}", content);
            }
        }
        StreamEventType::DeltaToolCall => println!("🔧 Tool call"),
        StreamEventType::ToolCallEnd => println!("✅ Tool done"),
        StreamEventType::StreamEnd => println!("\n🏁 Complete"),
        StreamEventType::Error => {
            if let Some(err) = &event.error {
                eprintln!("❌ Error: {}", err);
            }
        }
        _ => {}
    }
}
2

Create Events

use praisonai::StreamEvent;

// Factory methods for common events
let start = StreamEvent::request_start();
let text = StreamEvent::delta_text("Hello, world!");
let end = StreamEvent::stream_end();
let error = StreamEvent::error_event("Something went wrong");

StreamEventType

EventWhen
RequestStartBefore API call
HeadersReceivedHTTP headers arrive
FirstTokenFirst content received
DeltaTextText content chunk
DeltaToolCallTool call in progress
ToolCallEndTool finished executing
LastTokenFinal content chunk
StreamEndStream completed
ErrorError occurred

StreamEvent Structure

pub struct StreamEvent {
    pub event_type: StreamEventType,
    pub content: Option<String>,
    pub tool_call: Option<ToolCallData>,
    pub error: Option<String>,
    pub timestamp: DateTime<Utc>,
    pub is_reasoning: bool,
    pub agent_id: Option<String>,
    pub session_id: Option<String>,
}