Skip to main content

qwen3/
main.rs

1use anyhow::Result;
2use mistralrs::{IsqType, TextMessageRole, TextMessages, TextModelBuilder};
3
4#[tokio::main]
5async fn main() -> Result<()> {
6    let model = TextModelBuilder::new("Qwen/Qwen3-30B-A3B")
7        .with_isq(IsqType::Q4K)
8        .with_logging()
9        .build()
10        .await?;
11
12    let mut messages = TextMessages::new();
13
14    // ------------------------------------------------------------------
15    // First question, thinking mode is enabled by default
16    // ------------------------------------------------------------------
17    messages = messages.add_message(TextMessageRole::User, "Hello! How many rs in strawberry?");
18    let response = model.send_chat_request(messages.clone()).await?;
19
20    println!("{}", response.choices[0].message.content.as_ref().unwrap());
21
22    messages = messages.add_message(
23        TextMessageRole::Assistant,
24        response.choices[0].message.content.as_ref().unwrap(),
25    );
26
27    // ------------------------------------------------------------------
28    // Second question, disable thinking mode with RequestBuilder or /no_think
29    // ------------------------------------------------------------------
30    messages = messages.add_message(TextMessageRole::User, "How many rs in blueberry? /no_think");
31    let response = model.send_chat_request(messages.clone()).await?;
32
33    println!("{}", response.choices[0].message.content.as_ref().unwrap());
34
35    messages = messages.add_message(
36        TextMessageRole::Assistant,
37        response.choices[0].message.content.as_ref().unwrap(),
38    );
39
40    // ------------------------------------------------------------------
41    // Third question, reenable thinking mode with RequestBuilder or /think
42    // ------------------------------------------------------------------
43    messages = messages.add_message(TextMessageRole::User, "Are you sure? /think");
44    let response = model.send_chat_request(messages).await?;
45
46    println!("{}", response.choices[0].message.content.as_ref().unwrap());
47
48    Ok(())
49}