use oai_sdk::{ChatRequest, Message, ModelClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = ModelClient::builder()
.base_url("http://localhost:11434")
.build()?;
println!("Thinking Mode Example");
println!("Enable reasoning traces and view the model's thought process.\n");
let request = ChatRequest {
model: "qwen3".to_string(),
messages: vec![Message::user(
"How many letter r are in strawberry?"
)],
think: Some(true.into()),
..Default::default()
};
println!("Sending request with think=true...");
match client.chat(request).await {
Ok(response) => {
if let Some(thinking) = &response.message.thinking {
println!("\nThinking:");
println!("{}", thinking);
println!("\nAnswer:");
}
println!("{}", response.message.content);
}
Err(e) => println!("Error: {}", e),
}
println!("\n\n--- String Level Example (GPT-OSS) ---");
let request = ChatRequest {
model: "gpt-oss".to_string(),
messages: vec![Message::user("Tell me about Canada.")],
think: Some("medium".into()),
..Default::default()
};
println!("Sending request with think='medium'...");
match client.chat(request).await {
Ok(response) => {
if let Some(thinking) = &response.message.thinking {
println!("\nThinking:");
println!("{}", thinking);
println!("\nAnswer:");
}
println!("{}", response.message.content);
}
Err(e) => println!("Error: {}", e),
}
Ok(())
}