use fm_rs::{GenerationOptions, Session, SystemLanguageModel};
use std::io::{self, Write};
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("FoundationModels Streaming Example");
println!("===================================\n");
let model = SystemLanguageModel::new()?;
if !model.is_available() {
println!("FoundationModels is not available on this device.");
return Ok(());
}
let session = Session::with_instructions(
&model,
"You are a creative storyteller. Tell engaging, vivid stories.",
)?;
let options = GenerationOptions::builder()
.temperature(0.8)
.max_response_tokens(300)
.build();
println!("Prompt: Tell me a short story about a robot learning to paint.\n");
println!("Response (streaming):");
println!("----------------------");
session.stream_response(
"Tell me a short story about a robot learning to paint.",
&options,
|chunk| {
print!("{chunk}");
let _ = io::stdout().flush();
},
)?;
println!("\n----------------------");
println!("\nStreaming complete!");
Ok(())
}