use oai_sdk::{ChatRequest, Message, ModelClient};
use std::io::Write;
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = ModelClient::builder()
.base_url("http://localhost:11434")
.build()?;
println!("Ollama Client Streaming Chat Example");
println!("This example shows streaming responses from the model.\n");
let messages = vec![Message::user("Explain quantum computing in simple terms")];
let request = ChatRequest {
model: "llama3.1:8b".to_string(),
messages,
stream: true, format: None,
options: None,
keep_alive: None,
tools: None,
think: None,
};
println!("User: Explain quantum computing in simple terms");
print!("Assistant: ");
let mut stream = client.chat_stream(request).await?;
while let Some(result) = stream.next().await {
match result {
Ok(response) => {
print!("{}", response.message.content);
std::io::stdout().flush()?;
if response.done {
break;
}
}
Err(e) => {
println!("\nError: {}", e);
break;
}
}
}
println!("\n");
Ok(())
}