llmkit-rs 0.1.0

Unified multi-provider async LLM client for Rust — OpenAI, Anthropic, Ollama, with Tower middleware
Documentation
//! Streaming chat. Run with `ANTHROPIC_API_KEY=... cargo run --example streaming`.

use std::io::Write;

use futures::StreamExt;
use llmkit::prelude::*;

#[tokio::main]
async fn main() -> LlmResult<()> {
    let client = LlmClientBuilder::new()
        .provider(AnthropicProvider::from_env()?.model("claude-opus-4-8"))
        .build()?;

    let mut stream = client
        .chat_stream(ChatRequest::builder().user("Tell me a short story.").build())
        .await?;

    while let Some(event) = stream.next().await {
        match event? {
            StreamDelta::Text(t) => {
                print!("{t}");
                let _ = std::io::stdout().flush();
            }
            StreamDelta::ToolCall { name, input_delta, .. } => {
                eprint!("[tool {name:?}: {input_delta}]");
            }
            StreamDelta::Done { usage } => {
                eprintln!(
                    "\n[{} prompt / {} completion tokens]",
                    usage.prompt, usage.completion
                );
            }
        }
    }
    Ok(())
}