Events

React to agent lifecycle events via streaming

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

Diagram

Event Flow

๐Ÿค– Agent

๐Ÿ“ก StreamEvent

RequestStart

DeltaToolCall

DeltaText

StreamEnd

Quick Start

  1. Create and Handle Events
    rust
    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
    rust
    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

rust
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>,
}

Related