Skip to main content

compiled_parity/
compiled_parity.rs

1use reflex_rs::CompiledInstinct;
2use std::env;
3
4fn main() {
5    let args: Vec<String> = env::args().collect();
6    if args.len() < 2 {
7        eprintln!("Usage: compiled_parity <model_path> [query1] [query2] ...");
8        std::process::exit(1);
9    }
10    let model_path = &args[1];
11    let model = match CompiledInstinct::from_file(model_path) {
12        Ok(m) => m,
13        Err(e) => {
14            eprintln!("Error loading model: {}", e);
15            std::process::exit(1);
16        }
17    };
18
19    let queries = if args.len() > 2 {
20        args[2..].to_vec()
21    } else {
22        Vec::new()
23    };
24
25    print!("[");
26    for (i, q) in queries.iter().enumerate() {
27        let res = model.predict(q);
28        print!("{{\"query\":");
29        print!("\"{}\",", q.replace('\\', "\\\\").replace('"', "\\\""));
30        print!("\"selected\":\"{}\",", res.selected);
31        print!("\"distribution\":{{");
32        for (j, (opt, prob)) in res.distribution.iter().enumerate() {
33            print!("\"{}\":{:.6}", opt, prob);
34            if j + 1 < res.distribution.len() {
35                print!(",");
36            }
37        }
38        print!("}}}}");
39        if i + 1 < queries.len() {
40            print!(",");
41        }
42    }
43    println!("]");
44}