1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
//! Stream a response token by token via server-sent events. //! //! Run: `OPENAI_API_KEY=sk-... cargo run --example streaming` use std::io::Write; use futures_util::StreamExt; use openai_chatgpt_api::responses::{ResponseRequest, ResponseStreamEvent}; use openai_chatgpt_api::OpenAiClient; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let client = OpenAiClient::from_env()?; let request = ResponseRequest::new( "gpt-5.6-luna", "Write a haiku about the Rust borrow checker.", ); let mut stream = client.responses().stream(&request).await?; while let Some(event) = stream.next().await { match event? { ResponseStreamEvent::OutputTextDelta { delta, .. } => { print!("{delta}"); std::io::stdout().flush()?; } ResponseStreamEvent::Completed { response } => { println!(); if let Some(usage) = &response.usage { println!("--- {} tokens total", usage.total_tokens); } } _ => {} } } Ok(()) }